← ComfyUI 实测笔记

ComfyUI FLUX GGUF 工作流节点都是干什么的?Unet Loader、DualCLIPLoader、KSampler、VAE Decode 解释

ComfyUIFLUXGGUFRTX4060workflowbeginner

先说结论

新手搭 FLUX GGUF 工作流,最容易犯的错不是参数调不好,而是不知道每个节点到底在干什么。看到一个节点名就去乱连,连错了也不知道为什么出不了图。

这篇文章逐个解释 FLUX GGUF Q6_K + T5 FP8 工作流里每个节点,不深入理论,只讲:这个节点是干什么的、接错会怎样、新手该注意什么。

这是我这台 RTX 4060 Laptop 8GB 上的理解和实测记录,不是官方文档。

这篇文章适合谁

  • 刚接触 ComfyUI,被一堆节点吓到
  • 照抄别人的工作流,但不知道为什么这么连
  • 出图失败,不确定是哪个节点连错了
  • 用的是 FLUX GGUF Q6_K + T5 FP8 方案

如果你已经熟练使用 ComfyUI,这篇可能对你太基础。

我的测试环境

项目配置
GPUNVIDIA GeForce RTX 4060 Laptop GPU
专用显存8GB
系统内存32GB
ComfyUI0.24.0
方案FLUX GGUF Q6_K + T5 FP8
UNetflux1-dev-Q6_K.gguf
Text Encodert5xxl_fp8_e4m3fn_scaled.safetensors + clip_l.safetensors
VAEae.safetensors

最小 FLUX GGUF 工作流包含哪些节点

在我这台机器上跑通的 FLUX GGUF 工作流,最少需要以下节点:

  1. Unet Loader (GGUF) — 加载 GGUF 量化的 UNet 模型
  2. DualCLIPLoader — 加载两个文本编码器(T5 FP8 + CLIP-L)
  3. CLIP 文本编码 (Flux) — FLUX 双文本框提示词编码
  4. EmptySD3LatentImage — 创建空 latent 画布
  5. BasicGuider — 把条件信号和 latent 组合
  6. KSampler — 调度采样器,控制 steps / CFG / sampler / scheduler
  7. BasicScheduler — 根据 steps 生成调度信号
  8. RandomNoise — 生成初始随机噪声
  9. VAE Decode — 把 latent 解码为图像
  10. Save Image — 保存出图结果

下面逐个解释。解释顺序大致按信号流向:模型加载 → 文本编码 → latent 准备 → 采样 → 解码 → 保存。

Unet Loader (GGUF) 是干什么的

简单理解:它加载 FLUX 的 UNet(扩散模型),而且加载的是 GGUF 量化版。

普通 Load Diffusion ModelUNET Loader 不能直接加载 .gguf 文件。Unet Loader (GGUF) 是 ComfyUI-GGUF 节点提供的专属加载器,专门读取量化后的 UNet 模型。

在我这台 8GB 机器上,flux1-dev-Q6_K.gguf 文件约 9.4GB,但加载机制和普通 FP16 checkpoint 不同——GGUF 量化后的模型不需要一次性完整驻留在显存里,这是 8GB 能跑通的关键。

新手常见错误:

  • 用普通 Load CheckpointUNET 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.safetensors
  • clip_name2:选 t5xxl_fp8_e4m3fn_scaled.safetensors
  • type:必须选 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:1024
  • height:1024
  • batch_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:来自 BasicGuider
  • SIGMAS:来自 BasicScheduler
  • LATENT:来自 EmptySD3LatentImage
  • NOISE:来自 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/

常见接错线问题

下面是我自己踩过或见过新手容易犯的接线错误:

  1. Unet Loader 输出没接到 KSampler: KSampler 缺少 MODEL 输入,直接报错。
  2. DualCLIPLoader 的 type 没选 flux: 可能不报错,但出图结果异常。
  3. CLIP 文本编码输出没接到 BasicGuider: 条件信号没传递,出图跟 prompt 无关。
  4. BasicGuider 的 CONDITIONING 和 LATENT 接反: 不一定会马上报错,但行为肯定不对。
  5. EmptySD3LatentImage 绕过了 KSampler: KSampler 没有 latent 输入,流程断了。
  6. VAE Decode 被跳过: Save Image 收到的是 latent 而不是 image,报错。
  7. Save Image 节点缺失: 跑完流程找不到图。

新手检查顺序

如果你搭了工作流但不出图,按这个顺序排查:

  1. 确认 ComfyUI-GGUF 已安装,节点列表里有 Unet Loader (GGUF)
  2. 确认模型文件全部在正确目录:GGUF 在 models/unet/,T5 和 CLIP 在 models/text_encoders/,VAE 在 models/vae/
  3. 确认 DualCLIPLoader 的 type 选了 flux
  4. 确认所有线都接上了,没有悬空的节点输入。
  5. 确认 batch_size 是 1。
  6. 确认分辨率是 1024×1024 或更低,不要一上来就 1280 以上。
  7. 如果还是报错,看 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 功能做封装

相关文章