一、先分清两个概念
Sampler(采样器)
决定"每一步怎么把预测的噪声应用到 latent 上"的算法。Euler / DPM++ / UniPC / LCM 等都是算法名。本质是求解扩散 SDE/ODE 的数值方法。
Scheduler(调度器)
决定"N 步里每一步去掉多大比例的噪声"——即噪声强度在时间轴上的分布。Karras / Exponential / Normal 是不同的分布形状。
一个比喻:Sampler 是"怎么走",Scheduler 是"路怎么铺"——两者组合决定你从纯噪声到清晰图的路径。
二、Sampler 家族速览
| 采样器 | 速度 | 质量 | 典型步数 | 备注 |
|---|---|---|---|---|
| euler | ⚡⚡⚡ | ★★★ | 20-30 | 经典一阶,快但细节弱 |
| euler_ancestral | ⚡⚡⚡ | ★★★ | 20-30 | "a" = ancestral,随机性大,多样性好 |
| heun | ⚡⚡ | ★★★★ | 20-30 | Euler 二阶改进,质量好但慢 2× |
| dpm_2 / dpm_2_ancestral | ⚡⚡ | ★★★★ | 20-25 | DPM 二阶 |
| dpmpp_2m | ⚡⚡⚡ | ★★★★★ | 20-30 | 通用默认,DPM++ 二阶多步法 |
| dpmpp_2m_sde | ⚡⚡ | ★★★★★ | 25-35 | 加了随机性的 DPM++,更稳定 |
| dpmpp_3m_sde | ⚡ | ★★★★★ | 25-40 | 三阶版,质量顶但慢 |
| uni_pc | ⚡⚡⚡⚡ | ★★★★ | 10-20 | 少步数下最优,Flux/SDXL 通吃 |
| lcm | ⚡⚡⚡⚡⚡ | ★★★ | 4-8 | 蒸馏模型专用,实时出图 |
| ddim | ⚡⚡⚡ | ★★★ | 20-50 | 老牌确定性采样,Inpaint 常用 |
怎么记这张表
- 默认就选
dpmpp_2m——80% 场景最佳折衷 - 想要更稳、细节更好:换
dpmpp_2m_sde(+5-10 步) - 少步数(< 15):用
uni_pc或euler - LCM/Turbo/Lightning 蒸馏模型:sampler 必须跟模型匹配——LCM 选
lcm,Lightning 选euler,Turbo 选dpmpp_sde - img2img / Inpaint:
ddim更稳,但dpmpp_2m也行
_ancestral / _sde 后缀是啥
——后缀表示这是随机采样(SDE)。普通 Euler/DPM++ 是确定性(ODE),同 seed 跑两次像素级一致;ancestral/sde 每步注入随机噪声,同 seed 结果会略有不同但画面更有活力。出大图商用选确定版,做多样化探索选 ancestral。
——后缀表示这是随机采样(SDE)。普通 Euler/DPM++ 是确定性(ODE),同 seed 跑两次像素级一致;ancestral/sde 每步注入随机噪声,同 seed 结果会略有不同但画面更有活力。出大图商用选确定版,做多样化探索选 ancestral。
三、Scheduler 家族
| 调度器 | 噪声曲线 | 适合 |
|---|---|---|
| karras | 前段慢后段快 | SDXL 默认王,85% 场景选它 |
| exponential | 指数下降 | 细节导向,长 prompt |
| normal | 均匀线性 | SD1.5 默认,保守选择 |
| simple | 简单 cosine | Flux 官方推荐 |
| sgm_uniform | SGM 均匀 | 视频模型(AnimateDiff)常用 |
| ddim_uniform | DDIM 均匀 | 跟 ddim sampler 配对 |
| beta | Beta 分布 | 实验性,偶尔比 karras 好 |
实战 Scheduler 选择
- SDXL:
karras——几乎就别换 - SD1.5:
karras或normal,两者差异不大 - Flux:
simple或beta——Flux 的文档建议用 simple - 视频模型:
sgm_uniform对 AnimateDiff / SVD 最佳
四、Steps:多少步够?
直觉:步数越多,画面越精细。实际上:过了"饱和点"再加步数,肉眼几乎看不出差异,但推理时间线性增加。
| 模型类 | 步数甜点 | 过了也白搭 |
|---|---|---|
| SDXL 社区微调 | 25-30 | 40+ 无收益 |
| Flux.1 dev | 20-30 | 30+ 略升但成本高 |
| Flux.1 schnell / SDXL Turbo | 4-8 | 蒸馏模型,超过 8 反而画面噪 |
| SDXL Lightning | 4 或 8(模型两版) | 对应用对应,别混 |
| LCM | 4-8 | 同上 |
| Hi-Res Fix(第二阶段) | 10-15(denoise 0.4-0.6) | 看 denoise 值定 |
蒸馏模型跟普通模型的步数天差地别
——Turbo/Lightning/LCM 训练时就教"4 步出图",你给 30 步反而乱。一定要按模型文档的 steps 来。
——Turbo/Lightning/LCM 训练时就教"4 步出图",你给 30 步反而乱。一定要按模型文档的 steps 来。
五、CFG(Classifier-Free Guidance Scale)
CFG 控制"文字 prompt 的权重"——越高模型越"听话",越低越自由发挥。但高 CFG 有副作用:过饱和、焦糊、手部畸形。
| 模型 | CFG 甜点 | 超出会怎样 |
|---|---|---|
| SDXL | 5-7 | > 9 过饱和、灼伤 |
| SDXL Turbo | 1-2 | > 3 乱 |
| SDXL Lightning | 1-1.5 | 同上 |
| Flux.1 dev | cfg=1(真 CFG 是在 FluxGuidance 节点设 3.5) | > 4 画面灼伤 |
| Flux.1 schnell | cfg=1 不用 FluxGuidance | — |
| SD1.5 | 7-12 | > 15 噪点多 |
| Pony V6 | 6-8 | > 10 过饱和 |
六、Denoise:img2img / Inpaint 的灵魂参数
在 KSampler 里,denoise 参数决定"多大程度重画"。文生图永远是 1.0;img2img 时才有意义:
- 1.0——完全重生成,原图只影响构图种子(基本等于文生图)
- 0.7-0.9——大改造,保持原构图但换画风
- 0.4-0.6——中等改,修人脸/换衣服常用
- 0.2-0.3——微调,Hi-Res Fix 第二阶段经典值
- 0.05-0.15——几乎不改,给图做"轻度清理"
一个反直觉的公式:实际执行步数 = steps × denoise。设 steps=30,denoise=0.5,实际只跑 15 步——但起点不是纯噪声而是原图加 50% 噪声。
七、Seed:可复现的核心
Seed 是随机种子——同 seed + 同参数 + 同模型 = 同一张图(确定性 sampler 下)。
- -1:每次随机(探索阶段用)
- 固定值:调参时必须固定,否则你没法判断"是参数变了还是 seed 变了导致画面变"
- fixed / increment / randomize / decrement:ComfyUI KSampler 的 control_after_generate 选项——"每次生成后 seed 怎么变"。调参固定,出品用 randomize
seed + batch 技巧
把
把
Empty Latent Image 的 batch_size 设成 4,配合 seed randomize——ComfyUI 一次生成 4 张同 prompt 不同种子的图,便于挑选。SDXL 下 VRAM 够的话 batch=4 只比 batch=1 慢 3-3.5 倍,不是线性。
八、ComfyUI 高级节点:SamplerCustom / SamplerCustomAdvanced
默认 KSampler 把 sampler 和 scheduler 绑死;想做更细的控制用 SamplerCustom,把 sampler 和 sigmas 拆成两个节点:
模型 ─▶ KSamplerSelect(选 dpmpp_2m) ───┐
├──▶ SamplerCustomAdvanced ──▶ Latent
模型 ─▶ BasicScheduler(karras, steps=25)─┤
│
noise ───┤
guider ────┤
latent ────┘
用法场景:
- 分两段不同 sampler:前 15 步 dpmpp_2m 构图,后 10 步 dpmpp_2m_sde 润细节
- 自定义 sigma 曲线:SDXL Turbo 甚至可以完全不用标准 scheduler,自己定义 [14, 10, 5, 1] 四步
- CFG scheduler:前期 CFG 高,后期 CFG 低,减少灼伤同时保持遵循 prompt
九、各家"甜点配方"速查
SDXL(社区微调,如 Juggernaut)
sampler: dpmpp_2m
scheduler: karras
steps: 28
cfg: 6.5
denoise: 1.0
分辨率: 1024×1024 / 1216×832 / 832×1216
Flux.1 dev
sampler: euler (Flux 官方推荐)
scheduler: simple / beta
steps: 20-25
cfg: 1.0 (KSampler 上的)
FluxGuidance: 3.5 (实际文字引导强度)
denoise: 1.0
分辨率: 1024×1024 / 1440×720 等,Flux 支持非标准比例
SDXL Lightning 8-step
sampler: euler
scheduler: sgm_uniform
steps: 8
cfg: 1.5
denoise: 1.0
Pony V6
sampler: euler_ancestral / dpmpp_2m_sde
scheduler: karras
steps: 25-30
cfg: 7
正向必加: score_9, score_8_up, score_7_up, source_anime
Hi-Res Fix(SDXL 二阶段放大)
一阶段 KSampler: 1024 出图,steps=25,denoise=1.0
放大节点: Upscale Latent by 1.5 (或先用 ESRGAN/4x-UltraSharp 放大)
二阶段 KSampler: steps=15, denoise=0.4-0.5, 同 sampler
十、调参的"科学"方法
改 prompt 都用随机 seed → 看到好图固定 seed → 再微调参数——这才是正确顺序:
- Prompt 探索:固定 sampler/steps/cfg,只改 prompt,seed 随机
- 挑到好构图:记下那张图的 seed(ComfyUI 输出 metadata 里有)
- 固定 seed 调参:固定那个 seed,对比 cfg=5 vs 6 vs 7、steps=20 vs 30——这时画面只因参数变化
- 批量出图:参数调定后,seed 随机,batch_size=4,挑最好的
- Hi-Res:把挑中的那张送入 upscale pipeline
十一、反模式
- CFG 设 15 逼模型听话:反而画面崩。低 CFG + 更好的 prompt 才是正道。
- 蒸馏模型配高步数:Turbo/Lightning 设 30 步会出奇怪噪点——跟模型文档的 step 来。
- 调参不固定 seed:永远分不清是参数影响还是 seed 影响,白折腾。
- Scheduler 无脑用 normal:SDXL 上 normal 质量不如 karras,但新手 KSampler 默认是 normal——记得手动改。
- Flux 忘了 FluxGuidance:直接 cfg=1 画面没引导,模型"摆烂";必须用 FluxGuidance 节点设 3.5。
- 一直 steps 50:浪费时间。25-30 已足够,省下的时间多跑几张 seed。
十二、本章小结
记住:
① 默认配方:dpmpp_2m + karras + 25 步 + cfg 6——SDXL 上这组 80% 场景最优。
② 蒸馏模型(Turbo/Lightning/LCM)的 sampler/steps/cfg 跟模型绑死,看文档别自作聪明。
③ Flux 的 CFG=1 要配合 FluxGuidance=3.5,缺一不可;不用负向 prompt。
④ 调参秘诀:prompt 探索用随机 seed,参数调优用固定 seed,batch 出品用随机 seed。
① 默认配方:dpmpp_2m + karras + 25 步 + cfg 6——SDXL 上这组 80% 场景最优。
② 蒸馏模型(Turbo/Lightning/LCM)的 sampler/steps/cfg 跟模型绑死,看文档别自作聪明。
③ Flux 的 CFG=1 要配合 FluxGuidance=3.5,缺一不可;不用负向 prompt。
④ 调参秘诀:prompt 探索用随机 seed,参数调优用固定 seed,batch 出品用随机 seed。