ComfyUI FLUX GGUF 工作流节点都是干什么的?Unet Loader、DualCLIPLoader、KSampler、VAE Decode 解释
先说结论
新手搭 FLUX GGUF 工作流,最容易犯的错不是参数调不好,而是不知道每个节点到底在干什么。看到一个节点名就去乱连,连错了也不知道为什么出不了图。
这篇文章逐个解释 FLUX GGUF Q6_K + T5 FP8 工作流里每个节点,不深入理论,只讲:这个节点是干什么的、接错会怎样、新手该注意什么。
这是我这台 RTX 4060 Laptop 8GB 上的理解和实测记录,不是官方文档。
这篇文章适合谁
- 刚接触 ComfyUI,被一堆节点吓到
- 照抄别人的工作流,但不知道为什么这么连
- 出图失败,不确定是哪个节点连错了
- 用的是 FLUX GGUF Q6_K + T5 FP8 方案
如果你已经熟练使用 ComfyUI,这篇可能对你太基础。
我的测试环境
| 项目 | 配置 |
|---|---|
| GPU | NVIDIA GeForce RTX 4060 Laptop GPU |
| 专用显存 | 8GB |
| 系统内存 | 32GB |
| ComfyUI | 0.24.0 |
| 方案 | FLUX GGUF Q6_K + T5 FP8 |
| UNet | flux1-dev-Q6_K.gguf |
| Text Encoder | t5xxl_fp8_e4m3fn_scaled.safetensors + clip_l.safetensors |
| VAE | ae.safetensors |
最小 FLUX GGUF 工作流包含哪些节点
在我这台机器上跑通的 FLUX GGUF 工作流,最少需要以下节点:
- Unet Loader (GGUF) — 加载 GGUF 量化的 UNet 模型
- DualCLIPLoader — 加载两个文本编码器(T5 FP8 + CLIP-L)
- CLIP 文本编码 (Flux) — FLUX 双文本框提示词编码
- EmptySD3LatentImage — 创建空 latent 画布
- BasicGuider — 把条件信号和 latent 组合
- KSampler — 调度采样器,控制 steps / CFG / sampler / scheduler
- BasicScheduler — 根据 steps 生成调度信号
- RandomNoise — 生成初始随机噪声
- VAE Decode — 把 latent 解码为图像
- Save Image — 保存出图结果
下面逐个解释。解释顺序大致按信号流向:模型加载 → 文本编码 → latent 准备 → 采样 → 解码 → 保存。
Unet Loader (GGUF) 是干什么的
简单理解:它加载 FLUX 的 UNet(扩散模型),而且加载的是 GGUF 量化版。
普通 Load Diffusion Model 或 UNET Loader 不能直接加载 .gguf 文件。Unet Loader (GGUF) 是 ComfyUI-GGUF 节点提供的专属加载器,专门读取量化后的 UNet 模型。
在我这台 8GB 机器上,flux1-dev-Q6_K.gguf 文件约 9.4GB,但加载机制和普通 FP16 checkpoint 不同——GGUF 量化后的模型不需要一次性完整驻留在显存里,这是 8GB 能跑通的关键。
新手常见错误:
- 用普通
Load Checkpoint或UNET Loader去加载.gguf文件——直接报错或看不到文件。 - GGUF 模型放错目录,应该放在
models/unet/,不放models/checkpoints/。
该节点输出什么: 输出一个 MODEL 对象,后面要接到 KSampler 或 BasicGuider。
DualCLIPLoader 是干什么的
简单理解:同时加载两个文本编码器——T5 FP8 和 CLIP-L。
FLUX 不像 SD1.5 或 SDXL 那样只用一个 CLIP 文本编码器。FLUX 需要两个:一个 T5-XXL 负责语义理解,一个 CLIP-L 辅助。DualCLIPLoader 就是把这两个模型一起加载,并合并输出一个 CLIP 对象。
参数设置:
clip_name1:选clip_l.safetensorsclip_name2:选t5xxl_fp8_e4m3fn_scaled.safetensorstype:必须选flux
新手常见错误:
type没选flux,用了默认值——后续采样会异常或报错。- T5 FP8 和 CLIP-L 模型文件放错目录,应该放在
models/text_encoders/,不是models/clip/。 - 文件明明在硬盘里,但 DualCLIPLoader 下拉菜单看不到,通常是因为 ComfyUI 没有重启。
该节点输出什么: 输出一个 CLIP 对象,接到 CLIP 文本编码 (Flux) 节点。
CLIP 文本编码 (Flux) 是干什么的
简单理解:把你写的提示词转成模型能理解的数值信号。
这个节点是 FLUX 专用的文本编码节点。它有两个文本框:
- 上方文本框: 写详细提示词,描述你要生成的画面。
- 下方文本框: 写简短正向概括,不是负面提示词。
两个框都是正向条件。下面的框不是用来写 negative prompt 的。很多新手把第二个框当成负面提示词,这是最容易犯的错之一。
输入: 接收 DualCLIPLoader 传来的 CLIP 对象。
输出: 输出编码后的 CONDITIONING 信号,接到 BasicGuider。
EmptySD3LatentImage 是干什么的
简单理解:创建一个空白的、指定尺寸的 latent 画布。
还没有画面内容,只是一个尺寸模板。宽度和高度就是你最终出图的分辨率。
参数设置:
width:1024height:1024batch_size:1
为什么 batch_size 必须是 1: 在我这台 8GB 机器上,batch_size 改成 2 会明显增加显存压力,容易 OOM。新手不要改这个值。
新手常见错误:
- 没接这个节点,KSampler 找不到 latent 输入。
- batch_size 调成大于 1,然后 OOM 但不知道原因。
该节点输出什么: 输出一个 LATENT 对象,接到 KSampler。
BasicGuider 是干什么的
简单理解:把文本条件信号和 latent 信号”引导”到一起,让 KSampler 知道要生成什么。
这个节点接收 CONDITIONING(来自 CLIP 文本编码)和 LATENT(来自 EmptySD3LatentImage),输出一个 GUIDER 信号给 KSampler。
FLUX GGUF 工作流里通常使用 BasicGuider,而不是 CFGGuider(后者更适合传统扩散模型)。这也解释了为什么 FLUX 工作流里 CFG 通常设 1.0——条件引导方式和 SD 系不同。
新手常见错误:
- 用错了 Guider 类型,比如在 FLUX 工作流里用了 CFGGuider——可能仍然出图,但行为不符合预期。
- 接线接反了:CONDITIONING 和 LATENT 不能互换。
KSampler 是干什么的
简单理解:这是核心计算节点,负责执行扩散采样过程。steps、CFG、sampler、scheduler 都在这里设置。
KSampler 接收:
MODEL:来自 Unet Loader (GGUF)GUIDER:来自 BasicGuiderSIGMAS:来自 BasicSchedulerLATENT:来自 EmptySD3LatentImageNOISE:来自 RandomNoise
关键参数:
steps:采样步数。20 适合快速出图,30 适合最终定稿。cfg:1.0。FLUX GGUF 工作流里保持 1.0。sampler_name:euler。scheduler:simple。denoise:1.0。
新手常见错误:
- 改了 CFG 但不知道为什么:我这套工作流 CFG 保持 1.0,不需要调。
- 把 steps 当成解决 OOM 的办法——steps 主要影响速度,不是显存的主要变量。OOM 优先检查 batch_size、分辨率、模型方案。
BasicScheduler、RandomNoise 这些辅助节点
除了上面几个核心节点,还有几个辅助节点,它们通常不需要新手改动:
BasicScheduler: 根据 KSampler 的 steps 参数生成 sigma 序列。简单说,它告诉 KSampler “每一步做什么”。新手不需要改它,默认即可。
RandomNoise: 生成初始随机噪声,作为扩散过程的起点。如果固定 seed,每次生成的噪声相同,出图结果一致。如果不固定 seed,每次噪声不同,出图不同。
新手建议: 这三个节点按默认接好就行,不用调参数。先跑通工作流,再考虑深入理解它们。
VAE Decode 是干什么的
简单理解:把 KSampler 输出的 latent 信号,解码成肉眼能看的图片。
采样完成后,KSampler 输出的还是一个 latent 张量,不是图片。VAE Decode 用 VAE 模型把 latent 转成像素图像。
模型选择: ae.safetensors,放在 models/vae/ 目录。
新手常见错误:
- VAE 模型放错目录,比如放到
models/unet/。 - 文件在硬盘但下拉菜单看不到——重启 ComfyUI 刷新。
- VAE Decode 没接,KSampler 输出直接连到了 Save Image——Save Image 不认 latent 格式,会报错。
Save Image 是干什么的
简单理解:保存最终出图到本地文件。
接收 VAE Decode 输出的图像,存到 ComfyUI 的 output/ 目录。
新手常见错误:
- 忘了接这个节点,跑完流程但找不到图。
- 接了但不知道图片存到哪了。默认路径是 ComfyUI 安装目录下的
output/。
常见接错线问题
下面是我自己踩过或见过新手容易犯的接线错误:
- Unet Loader 输出没接到 KSampler: KSampler 缺少 MODEL 输入,直接报错。
- DualCLIPLoader 的 type 没选 flux: 可能不报错,但出图结果异常。
- CLIP 文本编码输出没接到 BasicGuider: 条件信号没传递,出图跟 prompt 无关。
- BasicGuider 的 CONDITIONING 和 LATENT 接反: 不一定会马上报错,但行为肯定不对。
- EmptySD3LatentImage 绕过了 KSampler: KSampler 没有 latent 输入,流程断了。
- VAE Decode 被跳过: Save Image 收到的是 latent 而不是 image,报错。
- Save Image 节点缺失: 跑完流程找不到图。
新手检查顺序
如果你搭了工作流但不出图,按这个顺序排查:
- 确认 ComfyUI-GGUF 已安装,节点列表里有
Unet Loader (GGUF)。 - 确认模型文件全部在正确目录:GGUF 在
models/unet/,T5 和 CLIP 在models/text_encoders/,VAE 在models/vae/。 - 确认 DualCLIPLoader 的
type选了flux。 - 确认所有线都接上了,没有悬空的节点输入。
- 确认 batch_size 是 1。
- 确认分辨率是 1024×1024 或更低,不要一上来就 1280 以上。
- 如果还是报错,看 ComfyUI 控制台的最后几行错误信息。
FAQ
Q: 为什么我找不到 Unet Loader (GGUF) 节点? 没装 ComfyUI-GGUF。通过 ComfyUI-Manager 安装,然后重启 ComfyUI。
Q: DualCLIPLoader 里 type 选什么?
选 flux。不是 sd、sdxl 或其他。
Q: 第二个文本框是负面提示词吗? 不是。两个框都是正向条件。第二个框写简短概括,不是负面提示词。
Q: KSampler 的 CFG 为什么是 1.0? FLUX GGUF 配合 BasicGuider 的引导方式和 SD 系不同,CFG 1.0 是这套工作流的实测稳定值。不要照搬 SD 的 CFG 7-10。
Q: VAE Decode 一定要接吗? 一定要。KSampler 输出的是 latent,不是图片。不经过 VAE Decode,Save Image 接不上。
Q: 这些节点哪个最吃显存? UNet 和 T5 文本编码器是最显存密集的部分,所以用了 GGUF 量化和 FP8 来降低显存压力。VAE 相对轻量。
后续待测
- 如果不使用 BasicGuider 而改用其他 Guider,行为差异是什么
- 各种 scheduler 之间的实际效果差异
- 不同 VAE 模型对出图的影响
- 加入 LoRA 后的节点变化
- 这个工作流能否用 ComfyUI 的 Group 功能做封装