zimage
This commit is contained in:
@@ -0,0 +1,751 @@
|
||||
{
|
||||
"id": "9ae6082b-c7f4-433c-9971-7a8f65a3ea65",
|
||||
"revision": 0,
|
||||
"last_node_id": 49,
|
||||
"last_link_id": 48,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 39,
|
||||
"type": "CLIPLoader",
|
||||
"pos": [
|
||||
130.2638101844517,
|
||||
435.2545050421948
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "CLIP",
|
||||
"type": "CLIP",
|
||||
"links": [
|
||||
44
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.73",
|
||||
"Node name for S&R": "CLIPLoader",
|
||||
"models": [
|
||||
{
|
||||
"name": "qwen_3_4b.safetensors",
|
||||
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors",
|
||||
"directory": "text_encoders"
|
||||
}
|
||||
],
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
"qwen_3_4b.safetensors",
|
||||
"lumina2",
|
||||
"default"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"type": "VAELoader",
|
||||
"pos": [
|
||||
130.2638101844517,
|
||||
585.2545050421948
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "VAE",
|
||||
"type": "VAE",
|
||||
"links": [
|
||||
39
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.73",
|
||||
"Node name for S&R": "VAELoader",
|
||||
"models": [
|
||||
{
|
||||
"name": "ae.safetensors",
|
||||
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors",
|
||||
"directory": "vae"
|
||||
}
|
||||
],
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
"ae.safetensors"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"type": "ConditioningZeroOut",
|
||||
"pos": [
|
||||
660.2638101844517,
|
||||
725.2545050421948
|
||||
],
|
||||
"size": [
|
||||
197.712890625,
|
||||
26
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "conditioning",
|
||||
"type": "CONDITIONING",
|
||||
"link": 36
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "CONDITIONING",
|
||||
"type": "CONDITIONING",
|
||||
"links": [
|
||||
42
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.73",
|
||||
"Node name for S&R": "ConditioningZeroOut",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"type": "EmptySD3LatentImage",
|
||||
"pos": [
|
||||
130.2638101844517,
|
||||
735.2545050421948
|
||||
],
|
||||
"size": [
|
||||
260,
|
||||
110
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "LATENT",
|
||||
"type": "LATENT",
|
||||
"slot_index": 0,
|
||||
"links": [
|
||||
43
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.64",
|
||||
"Node name for S&R": "EmptySD3LatentImage",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
1024,
|
||||
1024,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"type": "SaveImage",
|
||||
"pos": [
|
||||
1240,
|
||||
260
|
||||
],
|
||||
"size": [
|
||||
780,
|
||||
660
|
||||
],
|
||||
"flags": {},
|
||||
"order": 12,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "images",
|
||||
"type": "IMAGE",
|
||||
"link": 45
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.64",
|
||||
"Node name for S&R": "SaveImage",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
"z-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"type": "KSampler",
|
||||
"pos": [
|
||||
900.2638101844517,
|
||||
375.2545050421948
|
||||
],
|
||||
"size": [
|
||||
315,
|
||||
474
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "model",
|
||||
"type": "MODEL",
|
||||
"link": 40
|
||||
},
|
||||
{
|
||||
"name": "positive",
|
||||
"type": "CONDITIONING",
|
||||
"link": 41
|
||||
},
|
||||
{
|
||||
"name": "negative",
|
||||
"type": "CONDITIONING",
|
||||
"link": 42
|
||||
},
|
||||
{
|
||||
"name": "latent_image",
|
||||
"type": "LATENT",
|
||||
"link": 43
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "LATENT",
|
||||
"type": "LATENT",
|
||||
"slot_index": 0,
|
||||
"links": [
|
||||
38
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.64",
|
||||
"Node name for S&R": "KSampler",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
410513707389275,
|
||||
"randomize",
|
||||
9,
|
||||
1,
|
||||
"res_multistep",
|
||||
"simple",
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"type": "VAEDecode",
|
||||
"pos": [
|
||||
1240,
|
||||
170
|
||||
],
|
||||
"size": [
|
||||
210,
|
||||
46
|
||||
],
|
||||
"flags": {},
|
||||
"order": 11,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "samples",
|
||||
"type": "LATENT",
|
||||
"link": 38
|
||||
},
|
||||
{
|
||||
"name": "vae",
|
||||
"type": "VAE",
|
||||
"link": 39
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "IMAGE",
|
||||
"type": "IMAGE",
|
||||
"slot_index": 0,
|
||||
"links": [
|
||||
45
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.64",
|
||||
"Node name for S&R": "VAEDecode",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"type": "ModelSamplingAuraFlow",
|
||||
"pos": [
|
||||
900.2638101844517,
|
||||
265.2545050421948
|
||||
],
|
||||
"size": [
|
||||
310,
|
||||
60
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "model",
|
||||
"type": "MODEL",
|
||||
"link": 37
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "MODEL",
|
||||
"type": "MODEL",
|
||||
"slot_index": 0,
|
||||
"links": [
|
||||
40
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.64",
|
||||
"Node name for S&R": "ModelSamplingAuraFlow",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
3
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"type": "MarkdownNote",
|
||||
"pos": [
|
||||
-390,
|
||||
270
|
||||
],
|
||||
"size": [
|
||||
490,
|
||||
400
|
||||
],
|
||||
"flags": {
|
||||
"collapsed": false
|
||||
},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
"title": "Model link",
|
||||
"properties": {},
|
||||
"widgets_values": [
|
||||
"## Report issue\n\nIf you found any issues when running this workflow, [report template issue here](https://github.com/Comfy-Org/workflow_templates/issues)\n\n\n## Model links\n\n**text_encoders**\n\n- [qwen_3_4b.safetensors](https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors)\n\n**diffusion_models**\n\n- [z_image_turbo_bf16.safetensors](https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors)\n\n**vae**\n\n- [ae.safetensors](https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors)\n\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 text_encoders/\n│ │ └── qwen_3_4b.safetensors\n│ ├── 📂 diffusion_models/\n│ │ └── z_image_turbo_bf16.safetensors\n│ └── 📂 vae/\n│ └── ae.safetensors\n```\n\n"
|
||||
],
|
||||
"color": "#432",
|
||||
"bgcolor": "#653"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"type": "CLIPTextEncode",
|
||||
"pos": [
|
||||
450.2638101844517,
|
||||
305.2545050421948
|
||||
],
|
||||
"size": [
|
||||
410,
|
||||
370
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "clip",
|
||||
"type": "CLIP",
|
||||
"link": 44
|
||||
},
|
||||
{
|
||||
"name": "text",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "text"
|
||||
},
|
||||
"link": 47
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "CONDITIONING",
|
||||
"type": "CONDITIONING",
|
||||
"links": [
|
||||
36,
|
||||
41
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.73",
|
||||
"Node name for S&R": "CLIPTextEncode",
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
"Latina female with thick wavy hair, harbor boats and pastel houses behind. Breezy seaside light, warm tones, cinematic close-up."
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"type": "UNETLoader",
|
||||
"pos": [
|
||||
130.2638101844517,
|
||||
305.2545050421948
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "MODEL",
|
||||
"type": "MODEL",
|
||||
"links": [
|
||||
37
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.73",
|
||||
"Node name for S&R": "UNETLoader",
|
||||
"models": [
|
||||
{
|
||||
"name": "z_image_turbo_bf16.safetensors",
|
||||
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors",
|
||||
"directory": "diffusion_models"
|
||||
}
|
||||
],
|
||||
"enableTabs": false,
|
||||
"tabWidth": 65,
|
||||
"tabXOffset": 10,
|
||||
"hasSecondTab": false,
|
||||
"secondTabText": "Send Back",
|
||||
"secondTabOffset": 80,
|
||||
"secondTabWidth": 65
|
||||
},
|
||||
"widgets_values": [
|
||||
"z_image_turbo_bf16.safetensors",
|
||||
"default"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"type": "QwenGPUInference",
|
||||
"pos": [
|
||||
137.4698090330546,
|
||||
-69.64821666321234
|
||||
],
|
||||
"size": [
|
||||
400,
|
||||
286
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "text",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
47,
|
||||
48
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "Listhelper",
|
||||
"ver": "0599db202ae2b6f1b283bd90b03420ea2fa541e3",
|
||||
"Node name for S&R": "QwenGPUInference"
|
||||
},
|
||||
"widgets_values": [
|
||||
"Latina female with thick wavy hair, harbor boats and pastel houses behind. Breezy seaside light, warm tones, cinematic close-up.",
|
||||
"photography_en.md",
|
||||
"",
|
||||
2048,
|
||||
0.7,
|
||||
true,
|
||||
0.9,
|
||||
50
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"type": "PreviewAny",
|
||||
"pos": [
|
||||
584.1183999841683,
|
||||
-68.82863434298851
|
||||
],
|
||||
"size": [
|
||||
140,
|
||||
76
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "source",
|
||||
"type": "*",
|
||||
"link": 48
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.3.76",
|
||||
"Node name for S&R": "PreviewAny"
|
||||
},
|
||||
"widgets_values": []
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
36,
|
||||
45,
|
||||
0,
|
||||
42,
|
||||
0,
|
||||
"CONDITIONING"
|
||||
],
|
||||
[
|
||||
37,
|
||||
46,
|
||||
0,
|
||||
47,
|
||||
0,
|
||||
"MODEL"
|
||||
],
|
||||
[
|
||||
38,
|
||||
44,
|
||||
0,
|
||||
43,
|
||||
0,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
39,
|
||||
40,
|
||||
0,
|
||||
43,
|
||||
1,
|
||||
"VAE"
|
||||
],
|
||||
[
|
||||
40,
|
||||
47,
|
||||
0,
|
||||
44,
|
||||
0,
|
||||
"MODEL"
|
||||
],
|
||||
[
|
||||
41,
|
||||
45,
|
||||
0,
|
||||
44,
|
||||
1,
|
||||
"CONDITIONING"
|
||||
],
|
||||
[
|
||||
42,
|
||||
42,
|
||||
0,
|
||||
44,
|
||||
2,
|
||||
"CONDITIONING"
|
||||
],
|
||||
[
|
||||
43,
|
||||
41,
|
||||
0,
|
||||
44,
|
||||
3,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
44,
|
||||
39,
|
||||
0,
|
||||
45,
|
||||
0,
|
||||
"CLIP"
|
||||
],
|
||||
[
|
||||
45,
|
||||
43,
|
||||
0,
|
||||
9,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
47,
|
||||
48,
|
||||
0,
|
||||
45,
|
||||
1,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
48,
|
||||
48,
|
||||
0,
|
||||
49,
|
||||
0,
|
||||
"*"
|
||||
]
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": 2,
|
||||
"title": "Step2 - Image size",
|
||||
"bounding": [
|
||||
120.2638101844517,
|
||||
665.2545050421948,
|
||||
290,
|
||||
200
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"title": "Step3 - Prompt",
|
||||
"bounding": [
|
||||
430.2638101844517,
|
||||
235.2545050421948,
|
||||
450,
|
||||
540
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"title": "Step1 - Load models",
|
||||
"bounding": [
|
||||
120.2638101844517,
|
||||
235.2545050421948,
|
||||
290,
|
||||
413.6
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"ds": {
|
||||
"scale": 1.0168323761634441,
|
||||
"offset": [
|
||||
24.38891495737217,
|
||||
115.54233181515173
|
||||
]
|
||||
},
|
||||
"frontendVersion": "1.32.10",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true,
|
||||
"workflowRendererVersion": "LG"
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
@@ -255,65 +255,53 @@ Output: ["Chapter3", "Chapter1"] (randomized)
|
||||
|
||||
### Overview
|
||||
|
||||
The **QwenGPUInference** node is an AI-powered photo prompt optimizer that transforms simple scene descriptions into detailed, professional photography prompts. It uses the Qwen3-4B language model with intelligent GPU memory management and CPU offload support for seamless integration with ComfyUI.
|
||||
The **QwenGPUInference** node is an AI-powered text generation node that uses the Qwen3-4B language model with intelligent GPU memory management and CPU offload support for seamless integration with ComfyUI. It can transform simple descriptions into detailed, professional prompts using customizable templates.
|
||||
|
||||
### Features
|
||||
|
||||
- **Automatic Model Detection**: Finds qwen_3_4b.safetensors in text_encoders folder
|
||||
- **Automatic Model Detection**: Automatically finds Qwen safetensors files in `text_encoders` or `clip` folders
|
||||
- **Smart Memory Management**: Automatically detects GPU memory and chooses optimal loading strategy
|
||||
- **CPU Offload Support**: Works alongside other ComfyUI models without memory conflicts
|
||||
- **Professional Prompt Generation**: Transforms simple descriptions into detailed photography prompts
|
||||
- Full GPU mode (≥7.5GB free): ~26-30 tokens/second
|
||||
- CPU Offload mode (<7.5GB free): ~1-2 tokens/second, coexists with other models
|
||||
- **Template System**: Select from pre-made prompt templates in the `Prompt` folder or use custom prompts
|
||||
- **Bilingual Support**: Handles both Chinese and English inputs
|
||||
- **Automatic Config Download**: Downloads required model configuration files from HuggingFace
|
||||
- **Think Tag Removal**: Automatically removes model reasoning process from output
|
||||
- **Think Tag Removal**: Automatically removes `<think>...</think>` reasoning tags from output
|
||||
|
||||
### Requirements
|
||||
|
||||
- **GPU**: NVIDIA GPU with CUDA support (12GB+ recommended, works with less using CPU offload)
|
||||
- **Model File**: qwen_3_4b.safetensors in `ComfyUI/models/text_encoders/`
|
||||
- **Model Files**:
|
||||
- **Required**: `qwen_3_4b.safetensors` (or similar Qwen3-4B safetensors file)
|
||||
- **Location**: Place in either `ComfyUI/models/text_encoders/` or `ComfyUI/models/clip/`
|
||||
- **Python Packages**: transformers, safetensors, torch
|
||||
|
||||
### Model Setup
|
||||
|
||||
1. Download `qwen_3_4b.safetensors` from [Hugging Face](https://huggingface.co/Qwen/Qwen3-4B)
|
||||
2. Place the file in `ComfyUI/models/text_encoders/`
|
||||
3. First run will automatically download configuration files
|
||||
1. Download Qwen3-4B safetensors from [Hugging Face](https://huggingface.co/Qwen/Qwen3-4B)
|
||||
- Recommended filename: `qwen_3_4b.safetensors`
|
||||
2. Place the file in `ComfyUI/models/text_encoders/` or `ComfyUI/models/clip/`
|
||||
3. First run will automatically download configuration files to a `_config` subfolder
|
||||
|
||||
### Parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `user_prompt` | STRING | "一個女孩在咖啡廳" | Simple scene description |
|
||||
| `system_prompt` | STRING | (see below) | Professional photography optimization prompt |
|
||||
| `max_new_tokens` | INT | 2048 | Maximum length of generated prompt |
|
||||
| `user_prompt` | STRING | "A girl in a coffee shop" | Your input text/description |
|
||||
| `prompt_template` | COMBO | "Custom" | Select a template from the Prompt folder or use "Custom" |
|
||||
| `system_prompt` | STRING | "" | Custom system prompt (used when template is "Custom") |
|
||||
| `max_new_tokens` | INT | 2048 | Maximum length of generated text |
|
||||
| `temperature` | FLOAT | 0.7 | Creativity level (0.0-2.0) |
|
||||
| `do_sample` | BOOLEAN | True | Enable sampling for varied outputs |
|
||||
| `top_p` | FLOAT | 0.9 | Nucleus sampling threshold |
|
||||
| `top_k` | INT | 50 | Top-k sampling parameter |
|
||||
|
||||
### Default System Prompt
|
||||
### Template System
|
||||
|
||||
The node uses a specialized system prompt optimized for generating professional photography descriptions:
|
||||
|
||||
```
|
||||
You are a professional photography prompt optimization expert. Transform simple scene descriptions into detailed, professional photography prompts.
|
||||
|
||||
Include these elements:
|
||||
1. Subject Description: Detailed main subject (person, object, scene)
|
||||
2. Environment Details: Surrounding environment, background, atmosphere
|
||||
3. Lighting Effects: Light type, direction, contrast, color temperature
|
||||
4. Camera Settings: Perspective, depth of field, focal length
|
||||
5. Composition: Layout, foreground/midground/background
|
||||
6. Color Atmosphere: Main colors, color matching, saturation
|
||||
7. Texture Details: Materials, textures, detail expression
|
||||
8. Mood Atmosphere: Overall atmosphere, emotional expression
|
||||
|
||||
Output Format:
|
||||
- Use English for professional photography terms
|
||||
- Separate elements with commas
|
||||
- Ensure descriptions are specific and visual
|
||||
- Length: 150-300 English words
|
||||
```
|
||||
The node supports customizable prompt templates stored in the `Prompt` folder as `.md` files:
|
||||
- **Custom**: Use the `system_prompt` parameter directly
|
||||
- **Template Files**: Select from available `.md` files in the `Prompt` folder
|
||||
- Templates automatically replace the `system_prompt` parameter when selected
|
||||
|
||||
### Loading Strategies
|
||||
|
||||
@@ -342,16 +330,19 @@ The node automatically selects the best loading strategy based on available GPU
|
||||
|
||||
### Usage Examples
|
||||
|
||||
#### Example 1: Simple Chinese Input
|
||||
#### Example 1: Using a Template
|
||||
```
|
||||
Input: "一個女孩在咖啡廳"
|
||||
User Prompt: "一個女孩在咖啡廳"
|
||||
Template: (photography template from Prompt folder)
|
||||
Output: "A young woman sitting by the window in a cozy coffee shop, warm afternoon sunlight streaming through large glass windows creating soft shadows, wearing casual outfit, holding a cup of coffee, wooden table with laptop and notebook, blurred background with other customers, shallow depth of field, bokeh effect, warm color temperature, golden hour lighting..."
|
||||
```
|
||||
|
||||
#### Example 2: English Input
|
||||
#### Example 2: Custom System Prompt
|
||||
```
|
||||
Input: "a cat sitting on a windowsill"
|
||||
Output: "A calico cat sitting on a sunlit windowsill, its long fur catching golden-hour light from the right, creating soft shadows across its face and body, wearing a quiet expression of peaceful solitude, surrounded by indoor plants and a wooden bookshelf in the background, shallow depth of field with bokeh-like blur..."
|
||||
User Prompt: "a cat sitting on a windowsill"
|
||||
Template: "Custom"
|
||||
System Prompt: "Describe the scene in poetic detail"
|
||||
Output: "A calico cat sitting on a sunlit windowsill, its long fur catching golden-hour light from the right, creating soft shadows across its face and body, wearing a quiet expression of peaceful solitude, surrounded by indoor plants and a wooden bookshelf in the background..."
|
||||
```
|
||||
|
||||
### Memory Management
|
||||
@@ -375,8 +366,9 @@ The node includes intelligent memory management:
|
||||
### Troubleshooting
|
||||
|
||||
**Model not found**
|
||||
- Ensure `qwen_3_4b.safetensors` is in `models/text_encoders/`
|
||||
- Check filename matches exactly (case-sensitive)
|
||||
- Ensure a Qwen safetensors file is in `models/text_encoders/` or `models/clip/`
|
||||
- Recommended filename: `qwen_3_4b.safetensors` (containing "qwen", "3", and "4b")
|
||||
- The node automatically searches for compatible Qwen model files
|
||||
|
||||
**Out of memory**
|
||||
- Node will automatically use CPU offload
|
||||
@@ -643,42 +635,54 @@ NumberListGenerator 節點可根據自訂參數創建數字列表,支援有序
|
||||
|
||||
### 概述
|
||||
|
||||
**QwenGPUInference** 節點是一個 AI 驅動的照片提示詞優化器,將簡單的場景描述轉換為詳細、專業的攝影提示詞。使用 Qwen3-4B 語言模型,具備智能 GPU 記憶體管理和 CPU Offload 支援,可與 ComfyUI 無縫整合。
|
||||
**QwenGPUInference** 節點是一個 AI 驅動的文本生成節點,使用 Qwen3-4B 語言模型,具備智能 GPU 記憶體管理和 CPU Offload 支援,可與 ComfyUI 無縫整合。可使用自訂模板將簡單描述轉換為詳細、專業的提示詞。
|
||||
|
||||
### 功能特色
|
||||
|
||||
- **自動模型偵測**:自動在 text_encoders 資料夾中尋找 qwen_3_4b.safetensors
|
||||
- **自動模型偵測**:自動在 `text_encoders` 或 `clip` 資料夾中尋找 Qwen safetensors 檔案
|
||||
- **智能記憶體管理**:自動檢測 GPU 記憶體並選擇最佳載入策略
|
||||
- **CPU Offload 支援**:可與其他 ComfyUI 模型共存,無記憶體衝突
|
||||
- **專業提示詞生成**:將簡單描述轉換為詳細的攝影提示詞
|
||||
- 完全 GPU 模式(可用 ≥7.5GB):~26-30 tokens/秒
|
||||
- CPU Offload 模式(可用 <7.5GB):~1-2 tokens/秒,可與其他模型共存
|
||||
- **模板系統**:從 `Prompt` 資料夾選擇預製模板或使用自訂提示詞
|
||||
- **雙語支援**:處理中文和英文輸入
|
||||
- **自動配置下載**:從 HuggingFace 自動下載所需的模型配置檔案
|
||||
- **思考標籤移除**:自動移除模型推理過程
|
||||
- **思考標籤移除**:自動移除 `<think>...</think>` 推理標籤
|
||||
|
||||
### 需求
|
||||
|
||||
- **GPU**:支援 CUDA 的 NVIDIA GPU(建議 12GB+,記憶體較少時使用 CPU offload)
|
||||
- **模型檔案**:qwen_3_4b.safetensors 放在 `ComfyUI/models/text_encoders/`
|
||||
- **模型檔案**:
|
||||
- **必需**:`qwen_3_4b.safetensors`(或類似的 Qwen3-4B safetensors 檔案)
|
||||
- **位置**:放在 `ComfyUI/models/text_encoders/` 或 `ComfyUI/models/clip/`
|
||||
- **Python 套件**:transformers、safetensors、torch
|
||||
|
||||
### 模型設置
|
||||
|
||||
1. 從 [Hugging Face](https://huggingface.co/Qwen/Qwen3-4B) 下載 `qwen_3_4b.safetensors`
|
||||
2. 將檔案放在 `ComfyUI/models/text_encoders/`
|
||||
3. 首次執行會自動下載配置檔案
|
||||
1. 從 [Hugging Face](https://huggingface.co/Qwen/Qwen3-4B) 下載 Qwen3-4B safetensors
|
||||
- 建議檔名:`qwen_3_4b.safetensors`
|
||||
2. 將檔案放在 `ComfyUI/models/text_encoders/` 或 `ComfyUI/models/clip/`
|
||||
3. 首次執行會自動下載配置檔案至 `_config` 子資料夾
|
||||
|
||||
### 參數說明
|
||||
|
||||
| 參數 | 類型 | 預設值 | 說明 |
|
||||
|------|------|--------|------|
|
||||
| `user_prompt` | STRING | "一個女孩在咖啡廳" | 簡單場景描述 |
|
||||
| `system_prompt` | STRING | (見下方) | 專業攝影優化提示詞 |
|
||||
| `max_new_tokens` | INT | 2048 | 生成提示詞的最大長度 |
|
||||
| `user_prompt` | STRING | "A girl in a coffee shop" | 您的輸入文字/描述 |
|
||||
| `prompt_template` | COMBO | "Custom" | 從 Prompt 資料夾選擇模板或使用 "Custom" |
|
||||
| `system_prompt` | STRING | "" | 自訂系統提示詞(模板為 "Custom" 時使用)|
|
||||
| `max_new_tokens` | INT | 2048 | 生成文字的最大長度 |
|
||||
| `temperature` | FLOAT | 0.7 | 創意程度 (0.0-2.0) |
|
||||
| `do_sample` | BOOLEAN | True | 啟用採樣以產生變化輸出 |
|
||||
| `top_p` | FLOAT | 0.9 | Nucleus 採樣閾值 |
|
||||
| `top_k` | INT | 50 | Top-k 採樣參數 |
|
||||
|
||||
### 模板系統
|
||||
|
||||
節點支援儲存在 `Prompt` 資料夾中的自訂提示詞模板(`.md` 檔案):
|
||||
- **Custom**:直接使用 `system_prompt` 參數
|
||||
- **模板檔案**:從 `Prompt` 資料夾中的 `.md` 檔案選擇
|
||||
- 選擇模板時會自動取代 `system_prompt` 參數
|
||||
|
||||
### 載入策略
|
||||
|
||||
節點會根據可用 GPU 記憶體自動選擇最佳載入策略:
|
||||
@@ -706,16 +710,19 @@ NumberListGenerator 節點可根據自訂參數創建數字列表,支援有序
|
||||
|
||||
### 使用範例
|
||||
|
||||
#### 範例 1:簡單中文輸入
|
||||
#### 範例 1:使用模板
|
||||
```
|
||||
輸入: "一個女孩在咖啡廳"
|
||||
使用者提示詞: "一個女孩在咖啡廳"
|
||||
模板: (Prompt 資料夾中的攝影模板)
|
||||
輸出: "A young woman sitting by the window in a cozy coffee shop, warm afternoon sunlight streaming through large glass windows creating soft shadows, wearing casual outfit, holding a cup of coffee, wooden table with laptop and notebook, blurred background with other customers, shallow depth of field, bokeh effect, warm color temperature, golden hour lighting..."
|
||||
```
|
||||
|
||||
#### 範例 2:英文輸入
|
||||
#### 範例 2:自訂系統提示詞
|
||||
```
|
||||
輸入: "a cat sitting on a windowsill"
|
||||
輸出: "A calico cat sitting on a sunlit windowsill, its long fur catching golden-hour light from the right, creating soft shadows across its face and body, wearing a quiet expression of peaceful solitude, surrounded by indoor plants and a wooden bookshelf in the background, shallow depth of field with bokeh-like blur..."
|
||||
使用者提示詞: "a cat sitting on a windowsill"
|
||||
模板: "Custom"
|
||||
系統提示詞: "用詩意的細節描述場景"
|
||||
輸出: "A calico cat sitting on a sunlit windowsill, its long fur catching golden-hour light from the right, creating soft shadows across its face and body, wearing a quiet expression of peaceful solitude, surrounded by indoor plants and a wooden bookshelf in the background..."
|
||||
```
|
||||
|
||||
### 記憶體管理
|
||||
@@ -739,8 +746,9 @@ NumberListGenerator 節點可根據自訂參數創建數字列表,支援有序
|
||||
### 疑難排解
|
||||
|
||||
**找不到模型**
|
||||
- 確保 `qwen_3_4b.safetensors` 在 `models/text_encoders/`
|
||||
- 檢查檔案名稱完全符合(區分大小寫)
|
||||
- 確保 Qwen safetensors 檔案在 `models/text_encoders/` 或 `models/clip/`
|
||||
- 建議檔名:`qwen_3_4b.safetensors`(包含 "qwen"、"3" 和 "4b")
|
||||
- 節點會自動搜尋相容的 Qwen 模型檔案
|
||||
|
||||
**記憶體不足**
|
||||
- 節點會自動使用 CPU offload
|
||||
|
||||
Reference in New Issue
Block a user