一句话定义
扩散模型 = 训练时学会"把一张干净图逐步加噪"的逆过程,推理时从一团纯噪声出发,反复调用模型预测"噪声是什么"并减掉它,N 步后留下图像——KSampler 节点里跑的就是这个循环。
为什么重要
ComfyUI 里每一个参数(steps、denoise、sampler、scheduler)都定义在这个循环之上。不懂循环,调参就是玄学;懂了循环,每个参数都有物理意义。
前置知识
ComfyUI 是什么:节点式的生成式 AI 工作台、节点与工作流的心智模型:端口、连线与执行(知道 KSampler 在工作流里的位置即可)。
核心概念
- 正向过程(训练用):取真实图像 x₀,按调度加 T 步噪声,得到任意噪声水平的 x_t。模型学的是"给定 x_t,预测混进去的噪声 ε"。
- 反向过程(推理用):从纯噪声 x_T 开始,每步用模型预测噪声 → 减去一点 → 得到 x_{t-1},循环 T 次回到 x₀。
- 噪声预测的两种主流参数化:ε-prediction(预测噪声,SD1.5/SDXL)与 v-prediction / flow matching(Flux、SD3 等新家族,预测速度场)——对使用者而言差别体现在调度器与 CFG 行为上,机制思路一致。
- 条件引导:预测噪声时,把文本条件(和/或负条件)一起送入,让去噪"朝着描述的方向"进行(引导强度即 CFG,见 CFG 与负面引导:引导强度的数学)。
原理与机制
KSampler 一次调用的内部:
初始 latent = noise(seed) ⊕ (denoise<1 时与输入 latent 按强度混合)
for t = T → 1: # 共 steps 次
ε = MODEL(x_t, t, condition) # 预测当前噪声
x_{t-1} = scheduler.step(x_t, ε) # 按 S0 减噪并加少量随机性
return x_0 # 交给 VAE 解码(见 kp-102)关键洞察:每一步都在问模型"这里最像噪声的是什么"——模型从未见过"完整图像生成"任务,它只擅长局部去噪;图像是几百次局部去噪的涌现结果。这解释了为什么步数太少图会"没长开"(见 KSampler 全参数解剖:seed/steps/cfg/denoise)。
公式 / 模型 / 图示
干净图 ──加噪──▶ ──────── … ────────▶ 纯噪声 (训练方向)
◀──去噪────────── 反复 N 步 ────────── (推理方向,KSampler)
x0 x1 x_t xT直观类比
雕塑家从大理石中释放雕像:噪声是大理石(什么都可能),每一步敲掉"最不像目标的一层"(预测噪声并减去);提示词是设计稿,决定敲向何处;steps 是锤数,太少轮廓粗粝,过多则是浪费(细节收益递减)。
实例与案例
- steps=1 vs 4 vs 20 同 seed 对比:1 步几乎纯噪声痕迹,4 步模糊轮廓,20 步细节展开(用 X/Y/Z Plot:把调参变成实验 的 X/Y/Z 亲手验证)。
- denoise=0.3 的图生图(见 图生图与重绘幅度(denoise)):等于"只敲掉 30% 的表层",原图结构大体保留——这就是图生图能保结构的原因。
- LCM/Turbo 类蒸馏模型:把"几十步"压缩成 1-4 步,代价是多样性略降(见 采样器与调度器选型指南)。
常见误区
- "模型一次性画出了图":不是,是 N 次局部去噪的累积;这解释了很多"调参玄学"。
- "steps 越多质量线性提升":收益递减,过多次数只会浪费时间(部分调度器下甚至过拟合噪声细节)。
- "去噪 = 降噪(图像处理里的去噪)":两回事;扩散去噪是从噪声中"还原图像",不是抹除照片噪点。
- "所有模型都用同一种调度":SD 系 ε-pred 与 Flux 的 flow matching 调度器选择不同,跨家族照搬参数会翻车(见 采样器与调度器选型指南、Flux 架构与工作流:cfg=1 的新物种)。
自测题
- 推理时模型每一步的输入和输出各是什么?
- 为什么 denoise=0.5 的图生图会保留原图大结构?
- 训练与推理各在做哪一半过程?
- steps 从 20 加到 100,预期收益如何?
参考答案
- 输入:当前噪声图 x_t + 时间步 t + 条件;输出:对噪声(或速度场)的预测。
- 只走了反向过程的后 50% 步数,前半段的"原图结构"从未被打散,所以大框架保留。
- 训练:正向加噪 + 学预测;推理:反向逐步去噪。
- 收益递减,通常 20→100 无明显提升,只增加时间(除非小步数蒸馏模型反向操作)。
与其他知识点的关系
- 潜空间与 VAE:压缩的图像世界 解释为什么这一切发生在"潜空间"而非像素空间。
- KSampler 全参数解剖:seed/steps/cfg/denoise 把本页循环映射到 KSampler 的每个参数。
- 采样器与调度器选型指南 是循环里 scheduler.step 的选型学。
延伸阅读
- DDPM 原论文(入门友好版):arxiv.org/abs/2006.11239
- Stable Diffusion(Latent Diffusion):arxiv.org/abs/2112.10752
- 可视化讲解:Lil'Log "What are Diffusion Models?"(lilianweng.github.io)
前置知识
关联知识点
KSampler 全参数解剖:seed/steps/cfg/denoise潜空间与 VAE:压缩的图像世界采样器与调度器选型指南