链接复制成功!
Qwen-Image、Qwen-Image-Edit基于轻量算力节点适配NPU推理指导(6.5.908)
本文档主要介绍如何在ModelArts 轻量算力节点环境中部署模型Qwen-Image、Qwen-Image-Edit对应Diffusers、ComfyUI框架,使用NPU卡进行推理。
方案概览
本方案介绍了在Server上使用NPU计算资源部署Diffusers、ComfyUI框架用于推理的详细过程。完成本方案的部署,需要先联系您所在企业的华为方技术支持购买Server资源。
本方案目前仅适用于企业客户。
资源规格要求
推荐使用ModelArts 轻量算力节点的Snt9b资源。
获取软件和镜像
分类 | 名 | 获取路径 |
|---|---|---|
插件代码包 | AscendCloud-AIGC-6.5.908-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 | 获取路径:Support-E,在此路径中查找下载ModelArts 6.5.908.5版本。 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 |
基础镜像 | Snt9b:西南-贵阳一: swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b-20250729103313-3a25129 Snt9b:中国-香港: swr.ap-southeast-1.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b-20250729103313-3a25129 | 从SWR拉取。 |
支持特性
套件类型 | 模型名称 |
|---|---|
Diffusers | Qwen-Image Qwen-Image-Edit Qwen-Image-Lightning |
ComfyUI | Qwen-Image Qwen-Image-Edit |
步骤一:准备环境
- 请参考轻量算力节点资源开通,购买轻量算力节点资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。

购买Server资源时如果无可选资源规格,需要联系华为云技术支持申请开通。
当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
- 检查环境。
- SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
npu-smi info
如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。
- 检查docker是否安装。
docker -v #检查docker是否安装
如尚未安装,运行以下命令安装docker。
yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
- 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。
sysctl -p | grep net.ipv4.ip_forward
如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
- SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
- 获取基础镜像。建议使用官方提供的镜像部署推理服务。镜像地址{image_url}参见表1。
docker pull {image_url}
步骤二:启动容器镜像
docker run -itd \ --name ${container_name} \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -p 8183:8183 \ -v /etc/localtime:/etc/localtime \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ --shm-size 60g \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ --device=/dev/davinci3 \ --network=host \ ${image_name} bash
参数说明:
- --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如comfyui。
- --device=/dev/davinci3:挂载主机的/dev/davinci3到容器的/dev/davinci3。可以使用npu-smi info查看空闲卡号,修改davinci后数字可以更改挂载卡。
- 若需要启动多卡推理服务,则需要挂载多卡,例如再添加一个--device=/dev/davinci2
- ${image_name} 代表镜像名称。
- -p 8183:8183 开启一个端口,可以通过 http://宿主机IP:8183 访问容器服务(如冲突,可自行更换其他端口)。
docker exec -it ${container_name} bash
步骤三:Diffusers部署
安装依赖和模型包
- 下载模型权重,上传到容器的/home/ma-user目录下,官网下载地址。
- 安装python依赖包。
pip install diffusers pip install peft==0.17.0 pip install transformers==4.54.1 pip install urllib3==1.26.7
启动服务
- Qwen-Image执行python脚本
- 新建一个python文件qwen-image.py,将Qwen-Image链接中的代码内容复制到文件中
- 修改qwen-image.py文件,model_name请修改为自己的权重路径
import torch_npu from torch_npu.contrib import transfer_to_npu model_name = "/home/ma-user/Qwen-Image" torch.npu.config.allow_internal_format = False
如下图:

将pipe.vae.enable_tiling()插入到pipe =pipe.to(device)之后,如下图:

- 执行python qwen-image.py进行推理,生成图片是当前目录下的example.png
- Qwen-Image-Edit执行python脚本
- 新建一个python文件qwen-image-edit.py,将Qwen-Image-Edit链接中的代码复制到文件中
- 修改qwen-image-edit.py文件,model_name请修改为自己的权重路径 将如下代码添加或替换掉对应内容
import torch_npu from torch_npu.contrib import transfer_to_npu torch.npu.config.allow_internal_format = False from diffusers import QwenImageEditPipeline model_name = "/home/ma-user/Qwen-Image-Edit" pipeline = QwenImageEditPipeline.from_pretrained(model_name)
pipeline.vae.enable_tiling()
如下图:

- 执行python qwen-image-edit.py进行推理。
- Qwen-Image-Lightning执行python脚本
- 新建一个python文件qwen-image-lightning.py,将Qwen-Image-Lightning链接中的代码复制到文件中
- 修改Qwen-Image-Lightning.py文件 将如下代码添加或替换掉对应内容, image_name, lightning_name请修改为自己的权重路径
import torch_npu from torch_npu.contrib import transfer_to_npu torch.npu.config.allow_internal_format = False
image_name = "./Qwen-Image" lightning_name = "./Qwen-Image-Lightning" weight_name = "Qwen-Image-Lightning-4steps-V2.0-bf16.safetensors" pipe = DiffusionPipeline.from_pretrained(image_name, scheduler=scheduler, torch_dtype=torch.bfloat16 ).to("cuda") pipe.load_lora_weights(lightning_name, weight_name=weight_name) pipe.vae.enable_tiling()
如下图:


- 执行python qwen-image-lightning.py进行推理。
步骤四:ComfyUI部署
安装依赖和模型包
- 下载ComfyUI软件包。
- 安装依赖,将requirements.txt中的torch修改为torch==2.5.1。
pip install -r requirements.txt
- 下载模型权重。
- 准备workflow文件,启动服务时需要在ComfyUI里导入。
image_qwen_image.json文件见附录:image_qwen_image.json。
image_qwen_image_edit.json文件见附录:image_qwen_image_edit.json。
- 下载以下模型文件,并放到ComfyUI/models/下的对应文件夹下。
- qwen_image_edit_bf16.safetensors
loras
- Qwen-Image-Lightning-4steps-V2.0.safetensors
text_encoders
vae
- 准备workflow文件,启动服务时需要在ComfyUI里导入。
开启高性能模式
export TASK_QUEUE_ENABLE=2
启动服务
- 进入目录。
cd /home/ma-user/ComfyUI - 启动服务命令如下。
python main.py --port 8183 --listen 172.17.0.xx --force-fp16 --bf16-unet
端口号:设置为无进程使用的端口。
IP地址:使用宿主机IP作为{IP地址}。
- 使用http://{宿主机ip}:8183可以访问前端页面。
附录:image_qwen_image.json
image_qwen_image.json文件具体内容如下,供参考。
{
"id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb",
"revision": 0,
"last_node_id": 74,
"last_link_id": 130,
"nodes": [
{
"id": 39,
"type": "VAELoader",
"pos": [
20,
340
],
"size": [
330,
60
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"models": [
{
"name": "qwen_image_vae.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors",
"directory": "vae"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"qwen_image_vae.safetensors"
]
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
20,
190
],
"size": [
330,
110
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
74,
75
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"models": [
{
"name": "qwen_2.5_vl_7b_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors",
"directory": "text_encoders"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"qwen_2.5_vl_7b_fp8_scaled.safetensors",
"qwen_image",
"default"
]
},
{
"id": 58,
"type": "EmptySD3LatentImage",
"pos": [
50,
510
],
"size": [
270,
106
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
107
]
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
1328,
1328,
1
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
390,
240
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 74
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
46
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"\"A vibrant, warm neon-lit street scene in Hong Kong at the afternoon, with a mix of colorful Chinese and English signs glowing brightly. The atmosphere is lively, cinematic, and rain-washed with reflections on the pavement. The colors are vivid, full of pink, blue, red, and green hues. Crowded buildings with overlapping neon signs. 1980s Hong Kong style. Signs include:\n\"龍鳳冰室\" \"金華燒臘\" \"HAPPY HAIR\" \"鴻運茶餐廳\" \"EASY BAR\" \"永發魚蛋粉\" \"添記粥麵\" \"SUNSHINE MOTEL\" \"美都餐室\" \"富記糖水\" \"太平館\" \"雅芳髮型屋\" \"STAR KTV\" \"銀河娛樂城\" \"百樂門舞廳\" \"BUBBLE CAFE\" \"萬豪麻雀館\" \"CITY LIGHTS BAR\" \"瑞祥香燭莊\" \"文記文具\" \"GOLDEN JADE HOTEL\" \"LOVELY BEAUTY\" \"合興百貨\" \"興旺電器\" And the background is warm yellow street and with all stores' lights on."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
390,
440
],
"size": [
425.27801513671875,
180.6060791015625
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 75
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
52
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 60,
"type": "SaveImage",
"pos": [
1170,
10
],
"size": [
490,
600
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 110
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 66,
"type": "ModelSamplingAuraFlow",
"pos": [
850,
10
],
"size": [
300,
58
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 130
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
125
]
}
],
"properties": {
"Node name for S&R": "ModelSamplingAuraFlow",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
3.1000000000000005
]
},
{
"id": 73,
"type": "LoraLoaderModelOnly",
"pos": [
460,
60
],
"size": [
270,
82
],
"flags": {},
"order": 11,
"mode": 4,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 129
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
130
]
}
],
"properties": {
"Node name for S&R": "LoraLoaderModelOnly",
"cnr_id": "comfy-core",
"ver": "0.3.49",
"models": [
{
"name": "Qwen-Image-Lightning-8steps-V1.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V1.0.safetensors",
"directory": "loras"
}
]
},
"widgets_values": [
"Qwen-Image-Lightning-8steps-V1.0.safetensors",
1
]
},
{
"id": 69,
"type": "MarkdownNote",
"pos": [
-540,
-220
],
"size": [
390,
180
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "VRAM Usage",
"properties": {
"widget_ue_connectable": {}
},
"widgets_values": [
"## GPU:RTX4090D 24GB\n\n| Configuration | VRAM Usage | 1st Generation | 2nd Generation |\n|---------------------|---------------|---------------|-----------------|\n| Fp8_e4m3fn | 86% | ≈ 94s | ≈ 71s |\n| With 8steps LoRA | 86% | ≈ 55s | ≈ 34s |\n| Distill fp8_e4m3fn | 86% | ≈ 69s | ≈ 36s |"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 71,
"type": "Note",
"pos": [
850,
-120
],
"size": [
300,
88
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"Increase the shift if you get too many blury/dark/bad images. Decrease if you want to try increasing detail."
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1170,
-90
],
"size": [
210,
46
],
"flags": {
"collapsed": false
},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 128
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
110
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": []
},
{
"id": 3,
"type": "KSampler",
"pos": [
850,
120
],
"size": [
300,
474
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 125
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 46
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 52
},
{
"name": "latent_image",
"type": "LATENT",
"link": 107
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
128
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
1125488487853216,
"randomize",
20,
2.5,
"euler",
"simple",
1
]
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
20,
50
],
"size": [
330,
90
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
129
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.48",
"models": [
{
"name": "qwen_image_fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_fp8_e4m3fn.safetensors",
"directory": "diffusion_models"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"qwen_image_fp8_e4m3fn.safetensors",
"default"
]
},
{
"id": 70,
"type": "Note",
"pos": [
850,
910
],
"size": [
310,
120
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "For fp8 without 8steps LoRA",
"properties": {},
"widgets_values": [
"Set cfg to 1.0 for a speed boost at the cost of consistency. Samplers like res_multistep work pretty well at cfg 1.0\n\nThe official number of steps is 50 but I think that's too much. Even just 10 steps seems to work."
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 74,
"type": "MarkdownNote",
"pos": [
850,
660
],
"size": [
310,
210
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "KSampler settings",
"properties": {},
"widgets_values": [
"You can test and find the best setting by yourself. The following table is for reference.\n\n| model | steps | cfg |\n|---------------------|---------------|---------------|\n| fp8_e4m3fn(Qwen team's suggestion) | 40 | 2.5 \n| fp8_e4m3fn | 20 | 2.5 |\n| fp8_e4m3fn + 8steps LoRA | 8 | 1.0 |\n| distill fp8_e4m3fn | 10 | 1.0 |"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 67,
"type": "MarkdownNote",
"pos": [
-540,
10
],
"size": [
540,
630
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Model links",
"properties": {
"widget_ue_connectable": {}
},
"widgets_values": [
"[Tutorial](https://docs.comfy.org/tutorials/image/qwen/qwen-image) \n\n## Model links\n\nYou can find all the models on [Huggingface](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/tree/main) or [Modelscope](https://modelscope.cn/models/Comfy-Org/Qwen-Image_ComfyUI/files)\n\n**Diffusion model**\n\n- [qwen_image_fp8_e4m3fn.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_fp8_e4m3fn.safetensors)\n\nQwen_image_distill\n\n- [qwen_image_distill_full_fp8_e4m3fn.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/non_official/diffusion_models/qwen_image_distill_full_fp8_e4m3fn.safetensors)\n- [qwen_image_distill_full_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/non_official/diffusion_models/qwen_image_distill_full_bf16.safetensors)\n\n**LoRA**\n\n- [Qwen-Image-Lightning-8steps-V1.0.safetensors](https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V1.0.safetensors)\n\n**Text encoder**\n\n- [qwen_2.5_vl_7b_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors)\n\n**VAE**\n\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors)\n\nModel Storage Location\n\n```\n ComfyUI/\n├── models/\n│ ├── diffusion_models/\n│ │ ├── qwen_image_fp8_e4m3fn.safetensors\n│ │ └── qwen_image_distill_full_fp8_e4m3fn.safetensors\n│ ├── loras/\n│ │ └── Qwen-Image-Lightning-8steps-V1.0.safetensors\n│ ├── vae/\n│ │ └── qwen_image_vae.safetensors\n│ └── text_encoders/\n│ └── qwen_2.5_vl_7b_fp8_scaled.safetensors\n```\n"
],
"color": "#432",
"bgcolor": "#653"
}
],
"links": [
[
46,
6,
0,
3,
1,
"CONDITIONING"
],
[
52,
7,
0,
3,
2,
"CONDITIONING"
],
[
74,
38,
0,
6,
0,
"CLIP"
],
[
75,
38,
0,
7,
0,
"CLIP"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
107,
58,
0,
3,
3,
"LATENT"
],
[
110,
8,
0,
60,
0,
"IMAGE"
],
[
125,
66,
0,
3,
0,
"MODEL"
],
[
128,
3,
0,
8,
0,
"LATENT"
],
[
129,
37,
0,
73,
0,
"MODEL"
],
[
130,
73,
0,
66,
0,
"MODEL"
]
],
"groups": [
{
"id": 1,
"title": "Step1 - Load models",
"bounding": [
10,
-20,
350,
433.6000061035156
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 2,
"title": "Step2 - Image size",
"bounding": [
10,
430,
350,
210
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 3,
"title": "Step3 - Prompt",
"bounding": [
380,
160,
450,
470
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 4,
"title": "Lightx2v 8steps LoRA",
"bounding": [
380,
-20,
450,
170
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
}
],
"config": {},
"extra": {
"ds": {
"scale": 0.33015006365095706,
"offset": [
1294.3888372784004,
848.3556072418501
]
},
"frontendVersion": "1.28.6",
"ue_links": [],
"links_added_by_ue": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
} 附录:image_qwen_image_edit.json
image_qwen_image_edit.json文件内容如下,供参考。
{
"id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb",
"revision": 0,
"last_node_id": 100,
"last_link_id": 186,
"nodes": [
{
"id": 39,
"type": "VAELoader",
"pos": [
-250,
330
],
"size": [
330,
60
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
161,
162,
168
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "VAELoader",
"models": [
{
"name": "qwen_image_vae.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors",
"directory": "vae"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"qwen_image_vae.safetensors"
]
},
{
"id": 77,
"type": "TextEncodeQwenImageEdit",
"pos": [
140,
400
],
"size": [
360,
150
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 132
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 161
},
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": 180
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
163
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "TextEncodeQwenImageEdit",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {
"prompt": true
}
}
},
"widgets_values": [
""
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 75,
"type": "CFGNorm",
"pos": [
550,
130
],
"size": [
290,
60
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 141
}
],
"outputs": [
{
"name": "patched_model",
"type": "MODEL",
"links": [
186
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "CFGNorm",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {
"strength": true
}
}
},
"widgets_values": [
1
]
},
{
"id": 66,
"type": "ModelSamplingAuraFlow",
"pos": [
550,
20
],
"size": [
290,
60
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 185
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
141
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "ModelSamplingAuraFlow",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
3
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
890,
20
],
"size": [
210,
46
],
"flags": {
"collapsed": false
},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 128
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
110
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "VAEDecode",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": []
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
-250,
30
],
"size": [
330,
90
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
184
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "UNETLoader",
"models": [
{
"name": "qwen_image_edit_fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_fp8_e4m3fn.safetensors",
"directory": "diffusion_models"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"qwen_image_edit_fp8_e4m3fn.safetensors",
"default"
]
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
-250,
170
],
"size": [
330,
110
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
131,
132
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "CLIPLoader",
"models": [
{
"name": "qwen_2.5_vl_7b_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors",
"directory": "text_encoders"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"qwen_2.5_vl_7b_fp8_scaled.safetensors",
"qwen_image",
"default"
]
},
{
"id": 88,
"type": "VAEEncode",
"pos": [
370,
630
],
"size": [
140,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "pixels",
"type": "IMAGE",
"link": 178
},
{
"name": "vae",
"type": "VAE",
"link": 168
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
170
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "VAEEncode",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {}
}
},
"widgets_values": []
},
{
"id": 97,
"type": "MarkdownNote",
"pos": [
550,
780
],
"size": [
300,
190
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "KSampler settings",
"properties": {},
"widgets_values": [
"You can test and find the best setting by yourself. The following table is for reference.\n\n| Model | Steps | CFG |\n|---------------------|---------------|---------------|\n| Offical | 50 | 4.0 \n| fp8_e4m3fn | 20 | 2.5 |\n| fp8_e4m3fn + 4steps LoRA | 4 | 1.0 |\n"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 96,
"type": "MarkdownNote",
"pos": [
-210,
1020
],
"size": [
280,
88
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"This node is to avoid poor output results caused by excessively large input image sizes."
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 60,
"type": "SaveImage",
"pos": [
890,
240
],
"size": [
580,
650
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 110
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "SaveImage",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 76,
"type": "TextEncodeQwenImageEdit",
"pos": [
140,
200
],
"size": [
360,
150
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 131
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 162
},
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": 179
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
164
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "TextEncodeQwenImageEdit",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {
"prompt": true
}
}
},
"widgets_values": [
"Remove all UI text elements from the image. Keep the feeling that the characters and scene are in water. Also, remove the green UI elements at the bottom."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 93,
"type": "ImageScaleToTotalPixels",
"pos": [
-210,
890
],
"size": [
270,
82
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 177
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
178,
179,
180
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "ImageScaleToTotalPixels",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {
"upscale_method": true,
"megapixels": true
}
}
},
"widgets_values": [
"lanczos",
1
]
},
{
"id": 78,
"type": "LoadImage",
"pos": [
-220,
500
],
"size": [
274.080078125,
314.0000305175781
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
177
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "LoadImage",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {
"image": true,
"upload": true
}
}
},
"widgets_values": [
"image_qwen_image_edit_input_image.png",
"image"
]
},
{
"id": 3,
"type": "KSampler",
"pos": [
550,
240
],
"size": [
300,
474
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 186
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 164
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 163
},
{
"name": "latent_image",
"type": "LATENT",
"link": 170
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
128
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.48",
"Node name for S&R": "KSampler",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"widget_ue_connectable": {}
},
"widgets_values": [
976480016588017,
"randomize",
4,
1,
"euler",
"simple",
1
]
},
{
"id": 89,
"type": "LoraLoaderModelOnly",
"pos": [
130,
30
],
"size": [
360,
82
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 184
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
185
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.50",
"Node name for S&R": "LoraLoaderModelOnly",
"models": [
{
"name": "Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors",
"directory": "loras"
}
],
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {
"lora_name": true,
"strength_model": true
}
}
},
"widgets_values": [
"Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors",
1
]
},
{
"id": 99,
"type": "MarkdownNote",
"pos": [
-830,
-10
],
"size": [
540,
550
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Model links",
"properties": {
"widget_ue_connectable": {}
},
"widgets_values": [
"[Tutorial](https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit)\n\n\n## Model links\n\n**text_encoders**\n\n- [qwen_2.5_vl_7b_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors)\n\n**loras**\n\n- [Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors](https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors)\n\n**diffusion_models**\n\n- [qwen_image_edit_fp8_e4m3fn.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_fp8_e4m3fn.safetensors)\n\n**vae**\n\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors)\n\n\nModel Storage Location\n\n```\n ComfyUI/\n├── models/\n│ ├── text_encoders/\n│ │ └── qwen_2.5_vl_7b_fp8_scaled.safetensors\n│ ├── loras/\n│ │ └── Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors\n│ ├── diffusion_models/\n│ │ └── qwen_image_edit_fp8_e4m3fn.safetensors\n│ └── vae/\n│ └── qwen_image_vae.safetensors\n```\n\n## Report issue\n\nIf you have any problems running this workflow, please report template-related issues via this link: [report the template issue here](https://github.com/Comfy-Org/workflow_templates/issues)\n"
],
"color": "#432",
"bgcolor": "#653"
}
],
"links": [
[
76,
39,
0,
8,
1,
"VAE"
],
[
110,
8,
0,
60,
0,
"IMAGE"
],
[
128,
3,
0,
8,
0,
"LATENT"
],
[
131,
38,
0,
76,
0,
"CLIP"
],
[
132,
38,
0,
77,
0,
"CLIP"
],
[
141,
66,
0,
75,
0,
"MODEL"
],
[
161,
39,
0,
77,
1,
"VAE"
],
[
162,
39,
0,
76,
1,
"VAE"
],
[
163,
77,
0,
3,
2,
"CONDITIONING"
],
[
164,
76,
0,
3,
1,
"CONDITIONING"
],
[
168,
39,
0,
88,
1,
"VAE"
],
[
170,
88,
0,
3,
3,
"LATENT"
],
[
177,
78,
0,
93,
0,
"IMAGE"
],
[
178,
93,
0,
88,
0,
"IMAGE"
],
[
179,
93,
0,
76,
2,
"IMAGE"
],
[
180,
93,
0,
77,
2,
"IMAGE"
],
[
184,
37,
0,
89,
0,
"MODEL"
],
[
185,
89,
0,
66,
0,
"MODEL"
],
[
186,
75,
0,
3,
0,
"MODEL"
]
],
"groups": [
{
"id": 1,
"title": "Step1 - Load models",
"bounding": [
-270,
-40,
370,
450
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 2,
"title": "Step 2 - Upload image for editing",
"bounding": [
-270,
430,
370,
400
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 3,
"title": "Step 3 - Prompt",
"bounding": [
130,
130,
380,
433.6000061035156
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
}
],
"config": {},
"extra": {
"ds": {
"scale": 0.5937936688910558,
"offset": [
1412.8010155631878,
252.75354291305325
]
},
"frontendVersion": "1.28.8",
"ue_links": [],
"links_added_by_ue": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
} 









