主视觉卡片,标题为 Qwen-Image-2.1 工作流,副标题是「你可以重建的图,以及决定结果的旋钮」,三行标注分别写着:采样器 euler,调度器 simple,25 步,CFG 为 1;分辨率以百万像素为目标,原生 2K 为 4.0 MP,且为 32 的倍数;KV 缓存是一个确定性开关,而不只是速度设置。页脚将图中数据归于 ComfyUI 的 Qwen-Image-2.1 文档和 Comfy-Org 模板仓库,查阅于 2026 年 10 月 13 日。
Guides & Insights

Qwen-Image-2.1 工作流:节点链、各项调节参数,以及自第零天以来发生的变化

作者

Gideon Frost

发布日期

最新模型 · 20查看全部模型 →
基准测试:Artificial Analysis · 每日更新
返回全部文章

你从这一页得到的,是一张Qwen-Image-2.1节点图,你可以从零重建并复现它——按加载器实际使用的名称排列的节点链,四五个决定输出是否如你所愿的旋钮,以及人们改了却浑然不知自己已经改动了噪声调度的那两个设置。模型本身是厂商在统一文生图与图像编辑上的发布版本,于 2026 年 9 月 20 日以研究许可开源:视觉生成组件为 70 亿参数、32 层单流 DiT、16 倍空间压缩的 64 通道 RGBA VAE,编辑路径上最多支持十张参考图。这个日期出现在这里,是为了告诉你正在接线的是哪个检查点,而不是要宣布什么。图才是主题,而这张图有一段值得一读的修订历史——在你相信别人截的图之前先读一读:今天随包发布的模板并非第零天发布的那份模板,而其中四处差异,恰恰是读者最容易搞错的地方。

这个页面描述的是哪个图表

以下所有内容均读取自 ComfyUI 工作流模板仓库 Comfy-Org/workflow_templates,版本为 2026 年 10 月 13 日当时的最新修订版,运行于 ComfyUI 稳定版 v0.39.0(发布于 2026 年 10 月 5 日)。节点名称即加载器在图中显示的显示名称;若某个节点在不同修订版之间被新增或重命名,则会标注相应日期。这些文件的获取路径来自 ComfyUI 自带的 Qwen-Image-2.1 教程页面——其中共有三个模板,而本页面沿用其中的文本到图像模板,随后对其加以变通。

这三个模板是 Qwen-Image-2.1 Text to Image、Qwen-Image-2.1 Image Edit,以及 Remove Background: Qwen-Image-2.1。最后一个并不是不同的图:ComfyUI 的文档称,它复用了图像编辑子图,并使用提示词“Remove the background, and output a PNG image”。所以需要学习两个图,而其中一个是在另一个之上套用的提示词模板。

节点链,按顺序

文本到图像模板是一个子图——画布上的一个可折叠节点,带有十八个对外暴露的输入——封装了一条由十三个节点组成的链。其内部顺序为:

• UNETLoader — 加载 qwen_image_2.1_int8_convrot.safetensors,权重 dtype 保持为 默认。这是扩散模型,你在此处选择的文件,是决定你的运行结果能否与他人一致的首要因素。

• Qwen Image 2.1 Cache —— 位于加载器与采样器之间。在当前模板中它不是可选的,但可以绕过,而且它是最容易在你第一周下载的工作流里缺失的节点。

• KSampler —— 从缓存节点获取模型,从文本编码器获取正向和负向条件,以及一个空潜变量。其在出厂模板中的控件读数为:种子 0,控制模式 fixed,步数 25,cfg 1,采样器 euler,调度器 simple,降噪 1。

• EmptyLatentImage — 宽度和高度由位于子图外部的 Resolution Selector 节点接入,而它的第三个输入(批量大小)默认为 1。

• VAEDecode → SaveImageAdvanced —— 解码器将像素交给保存节点,其文件名前缀为Qwen_image_2.1,并以 PNG、8 位、sRGB 格式输出。PNG 在这里并非只是装饰:VAE 携带四个通道,因此在写入磁盘的过程中,8 位 PNG 才能让 alpha 通道保持存活。

• CLIPLoader — 加载 qwen3vl_8b_int8_convrot.safetensors,并将类型设置为 qwen_image。Qwen3-VL 8B 是文本编码器,它同时也是读取你的参考图像的视觉塔。

• Text Encode Qwen Image 2.1(节点 id TextEncodeQwenImage21)——用于为提示词添加条件。它接收 clip、提示词、负面提示词、可选的 VAE、一个 resolution 整数,以及一组自动增长、名为 image_1 至 image_16 的图像插槽。它返回三项内容:正向条件、负向条件和一条 latent。这条 latent 正是大家容易忽略的部分——它是一个与第一张参考图像尺寸一致的空 latent;在文本到图像的图中它并不会被用到,因为空 latent 是由 Resolution Selector 提供的。

• VAELoader — qwen_image_2.1_vae_bf16.safetensors,同时为解码器和文本编码器的参考图像路径提供输入。

可选分支是最后一块。第二个 CLIPLoader 加载 qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors,并将类型设为 stable_diffusion——而不是 qwen_image,这一差异是刻意为之的,因为这是一个文本生成检查点,而非视觉编码器。它向一个 Generate Text 节点提供输入,该节点的输出经由 Preview Any 流向采样器的正向提示词,并由 ComfySwitchNode连接至 refine_prompt 输入来切换。一个 Primitive String (Multiline) 节点保存着重写所依据的系统提示词,你可以查看并编辑它。

数一数这条链路,真正的工作只有六个节点:加载扩散模型、加载文本编码器、加载 VAE、编码提示词、从空潜变量采样、解码并保存。模板里的其他一切都只是内存占用或便利性设置。

Screenshot of the ComfyUI documentation page for Qwen-Image-2.1, captured 13 October 2026, showing the language model link list for the text encoders and the 6.76 GB int8 diffusion model, the RGBA VAE filename, and the model storage location tree for the ComfyUI models folder, with the workflow settings section beginning below it.

第零天的图表和这张图表之间有什么变化?

这是在从教程截图中照搬工作流之前值得了解的部分,因为 Qwen-Image-2.1 模板在首次发布后被修改了五次,而且这些修改并非表面性的。

• 2026 年 9 月 20 日——第一个模板。提交 96309bd530,“添加 Qwen Image 2.1 模板”。文生图子图中共有七个节点:加载器、编码器、空潜变量、采样器、解码器。CLIP 加载器被设置为 bfloat16 文本编码器,qwen3vl_8b_bf16.safetensors——即那个 16.33 GB 的文件。

• 2026年9月20日,当天晚些时候。提交 371a7b7171将那个加载器切换为qwen3vl_8b_int8_convrot.safetensors,即那个 8.71 GB 的文件,提交信息为“Switch Qwen Image 2.1 CLIP to int8 convrot”。该模板自身的注释将其标注为“由模板加载,内存占用更低”。根据早上的文件构建的工作流,与根据晚上的文件构建的工作流,并不是同一个工作流。

• 2026年9月25日。该Qwen Image 2.1 Cache 节点首次出现在图中,连同整个提示词增强分支——第二个 CLIP 加载器、Generate Text、Preview Any、开关、系统提示词节点。在此日期之前,没有可设置的缓存节点,也没有可关闭的重写步骤。图像编辑模板在同一天获得了匹配的输入。文生图说明在此修订中也新增了 4 百万像素这一行以及透明图像提示词包装器。

• 2026年9月28日。下载说明中新增了文件大小——这是文档层面的改动,而非图表改动,但读者用来与自己的下载管理器核对的数字正源于此。

• 2026 年 9 月 30 日。提交 9fae1041be,“Qwen Image 2.1: Update PE settings”——这是两个 2.1 模板最后一次被改动的时间。这是最重要、也最不显眼的一处。Generate Text 节点上有三个值发生了变化:token 预算 max_length从 16256 降至 4096,重复惩罚从 1.05 降至 1.0,还有 thinking从关闭改为开启,节点自身的注释现在写道,该检查点“在带有推理块的情况下训练,没有它就会损失质量”。模板注释将较早的那组取值描述为官方值,并称设置这个上限是为了让“单次重写不会持续运行好几分钟”。

没有改变的部分才是这件事中有用的那一半。采样块在初始模板和今天的模板之间逐字节完全相同:steps 25、cfg 1、euler、simple、denoise 1、种子控制 固定、Resolution Selector 输出处的空 latent、batch size 1。图从来不是靠移动采样器修好的。它是靠更改加载哪个文本编码器文件、添加缓存节点,以及修正提示词增强器自身的设置来修好的。

图之下还有一层。模板定型之后,ComfyUI 的核心仍在不断变化:9 月 29 日的 v0.38.0 改进了 Qwen 2.1 KV 缓存位置逻辑,而 10 月 5 日的 v0.39.0 发布了“修复在 qwen image 2.1 中选择 int8 或 int4 缓存时崩溃”。如果你的图是今天的最新版,而你的构建版本比这更旧,那么缓存下拉菜单就不是一个缓慢的选项,而是会直接崩溃。

Screenshot of the Comfy-Org workflow template repository commit history page for the Qwen-Image-2.1 text-to-image template, captured 13 October 2026, showing five commits: Add Qwen Image 2.1 template (#1276) and Switch Qwen Image 2.1 CLIP to int8 convrot (0.11.66) (#1277) both dated 20 September, Add Seedream 5.0 Flash templates (#1288) on 25 September, chore add model file sizes to download notes (#1291) on 28 September, and Qwen Image 2.1: Update PE settings (#1298) on 30 September.

读者最有可能弄错的表盘

先从文档明确陈述的内容开始,因为这样能消除大部分猜测。所有三个 Qwen-Image-2.1 工作流都使用 steps 25、cfg 1、euler 采样器和 simple 调度器进行采样。这是 ComfyUI 自己的总结说明,与随附的控件完全一致。

问题在于,25 和 40 都是不同问题的正确答案。供应商自己的模型卡在运行 diffusers 流水线时,采用的是 num_inference_steps=40,而 diffusers 流水线本身的默认值也是 40;ComfyUI 的文档称,已发布的流水线“使用 euler 采样器时大约需要 40 到 50 步,而模板从更低的 25 步开始”。这两个数字都没有错。它们一个是图的默认值,一个是参考运行值。

• 步数——方向与取舍。步数越低速度越快,而且根据 ComfyUI 的文档,其表现会因任务类型而异:简单的局部编辑在 4 到 8 步时仍能保持效果,"而重写整个画面的编辑则会失去连贯性,需要完整的 25 步"。手和手指这类顽固的精细细节"大约到 30 步才会稳定下来",而从 25 步提升到 40 步可以减少细节区域的噪点抖动。方向是单调的,取舍是线性的:文档的建议是,只有在某些具体内容无法解决时才调整步数,而不要为了保险起见而调高步数。

• 引导 — cfg 1 表示关闭引导,而这正是官方发布的路径。在 cfg 1 下,ComfyUI 会跳过负面条件处理阶段,因此负面提示词不会产生任何效果。该模板保留 cfg 1,“因为这是 Qwen-Image-2.1 官方发布的路径”;diffusers 流水线也用自己的说法表达了同样的意思,将 true_cfg_scale 默认设为 1.0,因为“Qwen-Image 2.1 本就应在无引导的情况下采样”。只有当你确实希望负面提示词生效时才调高它,并且要清楚代价:cfg 2 会更严格地遵循密集提示词,包括小号文字和数字,“代价是边缘过度锐化”;更高的值会使曝光偏向过亮或过暗;cfg 5 会严重降低质量;cfg 0.5 会破坏图像。ComfyUI 的建议是一次只改动一个值,并在固定种子下进行比较。

• 分辨率是百万像素目标,而不是一个矩形。分辨率选择器节点会设置宽高比和百万像素预算,其中 1.0 MP 约为 1024x1024。Qwen-Image-2.1 原生以 2K 生成,因此 2048x2048 正方形的目标约为 4.0 MP。模型想要的是 32 的倍数——文本编码器的 resolution 输入上的工具提示称,参考图像会被缩放到大约 resolution x resolution 像素,为 32 的倍数,并保持宽高比,而管线自身的尺寸辅助函数也会舍入到 32。厂商的模型卡公布了 2K 预设:1:1 为 2048x2048,4:3 为 2400x1792,3:4 为 1792x2400,3:2 为 2528x1696,2:3 为 1696x2528,16:9 为 2752x1536,9:16 为 1536x2752。

• 超出 2K 会损害遵循度,而非锐度。远高于模型训练所用 2K 尺寸的目标分辨率(例如 4K)会丧失提示词遵循能力。这是有文档记录的行为,而非从架构推断出的结论。

• 真正反直觉的一点:分辨率同样会改变噪声调度。 Qwen-Image-2.1 使用带有动态时间步偏移的流匹配 Euler 调度器进行采样,而流水线会根据潜变量序列的长度——也就是你所选分辨率产生的 token 数量——来计算该偏移。检查点的调度器配置在 256 到 8192 的图像序列范围内设置了 base_shift 为 0.5、max_shift 为 0.9,而流水线在每次调用时都会把你本次运行的序列长度代入该公式。因此,改变画布不仅改变了画面,也改变了采样器的调度。在 ComfyUI 模板中没有任何可设置的 shift 控件——KSampler 的输入是 model、positive、negative、latent image、seed、steps、cfg、sampler name 和 scheduler,清单就这些。如果你在 4 MP 下的结果与 1 MP 下的结果不同,而这种差异无法仅用细节来解释,原因就在这里。

• 在编辑图上,分辨率的表现不同,而且它是默认设置中单项开销最大的一项。当 custom_size 关闭时——这是模板的默认值——编辑结果会按第一张参考图的尺寸生成。resolution 为 0 时,每张参考图保持各自的像素尺寸,并取整到 32 的倍数,因此一张 3000x4000 的照片会生成 3008x4000 的画布。而大于 0 的值则会把该图像的宽高比缩放到 resolution x resolution 的像素预算——这是总像素数,而不是宽度。ComfyUI 官方给出的成本示例(在 RTX 5090 上测得):3000x4000 的参考图在 resolution 为 0 时每次迭代约需 6 秒;同样的编辑在 resolution 为 1024 时每次迭代约需 0.3 秒,尺寸约为 896x1184。开启 custom_size,从 Resolution Selector 中获取画布尺寸,并让它接近缩放后第一张图像的尺寸,“否则编辑可能会发生偏移”。

确定性:种子能固定什么,以及它不能固定什么

固定种子是必要但不充分的,而随附的模板在这一点上彼此并不一致。文生图的 KSampler 随附的控制项是 固定;两个编辑模板——图像编辑和背景移除——随附的控制项都是 随机。同一个采样器,同样的默认值,重新排队时的行为却相反。

假设随机种子已固定。以下几点仍会影响图像:

• KV 缓存。这才是重头戏,而且它有文档记载,并非坊间传闻。Qwen-Image-2.1 会在第一步之后缓存文本与参考图像的键和值;流水线源码解释说,这样做是合理的,因为在模型的因果条件化下,条件化 token 与步数无关。随后它道出了对任何想要复现某张图的人都至关重要的一点:在降低精度的情况下,切换该缓存“无法逐比特复现同一张图像”,因为解码步骤与前填充步骤所使用注意力机制的序列布局不同,二者切分图块的方式不同,因而落在不同的舍入结果上——而第一个图块处 1 ULP 的差异会被 32 个图块以及每个采样器步数不断放大,所以“这两种设置会给出同样有效但肉眼可见不同的样本”。源码自身的指示是:通过固定这个标志来固定样本。在 ComfyUI 中,该标志位于 Qwen Image 2.1 Cache 节点上,表现为 device(auto、gpu、cpu、off)和 dtype(default、int8、int4)。

• 缓存节点自身的发布历史。它在 2026 年 9 月 25 日之前并不存在,因此零日工作流没有这样的设置,也不会像如今的版本那样运行。而关闭——唯一能排除缓存的设置——“每一步都重新计算前缀,这样虽然更慢,却是排除缓存的唯一办法”。

• 哪些模型文件。该模板会加载一个 int8 扩散模型和一个 int8 文本编码器。把其中任何一个换成 bf16 文件,运算方式就随之改变。下载说明中之所以同时列出两者及其文件大小,正是因为这个选择确实存在。

• 提示词增强器,前提是它处于开启状态。当 refine_prompt 开启时,图像模型是从改写后的提示词中采样的,而不是你输入的那一条——而改写是由一个独立的 Generate Text 节点生成的,它有自己的采样参数:temperature 1.0、top_k 20、top_p 0.95,有它自己的种子字段,以及一个 max_length 的 token 预算。你的 KSampler 种子并不覆盖其中任何一项。子图内的 Preview Any 节点会显示实际送入图像模型的提示词,这是唯一能知道你刚才到底复现了什么的方法。

• ComfyUI 构建版本。 这些模板自带提示:加载工作流时出现节点缺失,通常意味着该构建版本早于这些节点,而 Desktop 和 Cloud 遵循稳定版发布节奏,可能会落后于每夜构建版。

所以,复现别人的 Qwen-Image-2.1 图像并不是换个种子就行。它取决于模板修订版本、两个模型文件、分辨率设置、步数、cfg、采样器、调度器、缓存设备与 dtype、增强器的开/关状态及其自身种子——而且对于编辑图,还包括第一张参考图的尺寸。ComfyUI 并未对这些工作流发布种子可复现性保证,diffusers 源码也明说切换缓存会改变样本;要把精确匹配当作你刻意拼装出来的结果,而不是种子随手交给你的东西。

A two-column reference card contrasting the Qwen-Image-2.1 ComfyUI template as it shipped on 20 September 2026 with the template as it stands on 13 October 2026: the day-zero text encoder was qwen3vl_8b_bf16.safetensors at 16.33 GB, the KV cache node did not exist, there was no prompt enhancer, and the sampler was steps 25, cfg 1, euler, simple; today's text encoder is the int8 file at 8.71 GB, the Qwen Image 2.1 Cache node is present with device auto and dtype default, the prompt enhancer runs with thinking on and a max_length of 4096, and the sampler is unchanged.

多个图像,以及内存的去向

在出厂配置下,该图每次运行会生成一张图像,而用于改变这一行为的调节项并不起眼:EmptyLatentImage节点的第三个输入项,即批大小,接入值为1。提高它,就能让采样器从一次队列中输出多张图像。

这些开销究竟如何,正是需要坦诚以对的地方。模板会明确告诉你缓存存放在哪里—— auto 会使用空闲的显存,然后是系统内存; cpu 会在计算背后预取,文档称其几乎不损失速度; off 每一步都会重新计算前缀,因而更慢。他们还量化了精度方面: int8 将缓存减半,精度大致相当于 bf16,而 int4 将其缩减到四分之一,但每步误差大约翻倍。他们没有公布的是批大小与显存的对照表,ComfyUI 的文档也没有。如果你正在为某块显卡确定批大小,诚实的答案是:没有任何第一方数据涵盖这一点;有公开效果说明的调节手段是缓存设备与 dtype,以及分辨率目标——后者会同时提高潜空间数量与缓存前缀。

有两个批次陷阱位于围栏的另一侧,也就是在 diffusers 管道中,两者都值得了解,因为 ComfyUI 的计算图把它们隐藏了起来。在那里,num_images_per_prompt会成倍放大批次规模,而如果你传入一个生成器列表,其长度必须与有效批次大小完全一致,否则管道会报错。而且条件图像列表是“一组由批次中每个提示词共享的图像,而不是每个提示词对应一个条目”——你无法为批次中的每个提示词分别提供各自的参考图像;源文档的指示是改为对每个提示词各调用一次管道。编辑子图在另一处存在形式相同的约束:它的BatchImagesNode最多将十张参考图像批处理送入文本编码器,这是对输入进行批处理,而不是对输出。十张参考图并不会给你十张图片。

来自同一张图像的图像到图像

你不需要为此另做一张图。图像编辑模板就是文生图链路,只是把空潜变量换成文本编码器的潜变量输出,然后是两个 LoadImage 节点,把 image_1 和 image_2 送入子图的参考槽位,末尾再放一个 ImageCompare 节点,这样你就能把输入和输出并排对比。在 image_1 里放一张图,把 image_2 留空,写一条指令,这就是图生图:你的图片是模型读取的上下文,而不是它部分去噪的起始潜变量。这条路径上没有强度或去噪滑块需要设置,因为目标从噪声开始,而你的参考图是通过编码器和 VAE 进入的。

下面用一句话分别说明界限,因为这两者只差一次搜索,而人们往往会拿错那一个。

• 图生图是指当你想要一个变体时:把一张图片和一段描述交给模型,它就会在你选定的画布上绘制出一张与你的图片相似的新图。

• 编辑是指你想要做出更改时:你把一张图像和一条指明哪些地方应当不同的指令交给模型,还可选择附上遮罩或涂抹标记,而模型会保留画面其余部分。

破绽就在你即将输入的那句话里。“让它看起来像这样,但换成夜晚”是 i2i;“把夹克改成红色,其余一律不动”是编辑,而在这张图上,编辑路径才是遮罩、十个参考槽位和局部编辑行为所栖身的地方。那个相邻的问题属于另一个页面的主题,而本篇则止步于这条分界线,好让你分辨自己正走在哪一条上。

Turbo 检查点,一段话说明

这里要加一条交叉引用,因为 turbo 这个拼写就落在该查询词族里,读者总会遇到它。Qwen-Image-2.1-Turbo 是同一套 7B 视觉生成架构的另一个独立 8 步 checkpoint,发布于 2026 年 10 月 9 日,同样由 QwenImage21Pipeline 加载。它自己的 model card 写道,该 checkpoint“包含其推荐的采样调度,因此无需手动配置调度器即可直接使用”;默认情况下生成使用 CFG 1;并且仅设置 num_inference_steps 并不会覆盖已保存的调度——只有在调用时显式传入 sigmas 参数才会覆盖。这些都不改变本页上的节点链:相同的加载器、相同的编码器、相同的采样器节点。改变的只是调度从何而来,而这正是你在把一次 turbo 运行与一次基础模型运行作比较、并据此断定模型变差之前,值得在自己图里检查的唯一一件事。

接下来在图表中做什么

从 ComfyUI 的模板库加载模板,而不是从截图加载,然后在排队任何任务之前先读四个节点。在Resolution Selector上,设置你真正想要的宽高比,如果想要模型原生的 2K,就把目标设为 4.0 MP。在KSampler上,如果想复现某次运行,就确认 control 为fixed;在出现具体故障之前,steps 保持 25、cfg 保持 1。在Qwen Image 2.1 Cache上,现在就决定device 和 dtype并写下来,因为之后你无法更改它们,却还把两张图当作只有提示词变了来比较。而在Generate Text节点上,先让refine_prompt保持关闭,直到你有一个满意的基线——然后再打开它,在Preview Any 中查看重写后的内容,并保持你原先使用的 seed,这样比较才有意义。