一句话定义
sampler(采样器)决定"每一步如何减噪"的算法,scheduler(调度器)决定"噪声日程表"(每步减多少)——两者组合定义了从噪声到图像的完整路径,选型不同,同 seed 同参数的图也完全不同。
为什么重要
社区新模型发布时总附"推荐 sampler+scheduler";能读懂选型理由,你就能在新模型上不靠抄参数地调出好结果,也能解释"为什么我的图总差一口气"。
前置知识
KSampler 全参数解剖:seed/steps/cfg/denoise(KSampler 参数全貌)、扩散模型直觉:从噪声到图像的迭代雕刻(去噪循环)。
核心概念
常用 sampler 速览(名称均为 ComfyUI 中的下拉值):
| sampler | 特点 | 典型用途 |
|---|---|---|
| euler | 最简单稳定,步数敏感度低 | 快速草稿、新模型试跑 |
| euler_ancestral(euler_a) | 每步注入随机性,变化丰富 | 二次元/风格化,多样性优先 |
| dpmpp_2m | 多步法,同步数质量高,确定性 | 通用首选(配 karras) |
| dpmpp_2m_sde | SDE 变体,细节纹理好但有随机性 | 写实细节 |
| dpmpp_3m_sde | 更高阶,低步数表现好 | 15-25 步出好图 |
| uni_pc | 统一预测-校正,低步数友好 | 快速出图 |
| lcm | 配合 LCM 蒸馏模型,1-8 步 | 实时/低算力 |
| ddim | 老牌,行为可预测 | 复现老工作流 |
常用 scheduler 速览:
| scheduler | 日程特点 | 典型搭配 |
|---|---|---|
| normal | 线性默认 | 通用 |
| karras | 后期步长更细,细节更佳 | SD1.5/SDXL 主力 |
| simple | 简单分段 | Flux 常用 |
| beta | 较新的分布 | Flux/视频模型常用 |
| sgm_uniform | 均匀步长 | 新家族(flow-matching)常用 |
| exponential | 指数衰减 | 实验向 |
原理与机制
- ancestral(_a)与 _sde 的"随机性":每步额外采样噪声,序列不可复现于不同实现,但同环境同 seed 仍可复现;换来的是纹理多样、不重复。
- 确定性 vs 随机:euler、dpmpp_2m 等确定性采样器同 seed 严格同图;带 a/sde 的会有细微差异面。
- karras 的直觉:前期大步快速定形,后期小步精修——与"先轮廓后细节"的雕刻过程匹配,所以几乎总比 normal 强。
- 新家族(flow matching,如 Flux):噪声调度是"线性流",选 simple/beta/sgm_uniform 更符合其训练分布;沿用 karras 反而不佳(见 Flux 架构与工作流:cfg=1 的新物种)。
公式 / 模型 / 图示
x_T ──▶ step(x_T) ──▶ … ──▶ x_0
▲每步减噪量由 scheduler 的 σ_t 序列决定
▲减噪算法由 sampler 决定(单步/多步/预测-校正/随机)
组合空间 = sampler × scheduler → 推荐组合而非自由恋爱:
SD1.5: dpmpp_2m + karras(20-30步)
SDXL: dpmpp_2m + karras(25-40步)
Flux: euler + simple/beta(20-30步, cfg=1)
LCM/Turbo: lcm 或 euler + sgm_uniform(1-8步)直观类比
scheduler 是登山路线图(哪段陡走小步、哪段缓走大步),sampler 是登山姿势(稳扎稳打 euler vs 连滚带爬但刺激的 ancestral)。好路线配稳姿势=dpmpp_2m+karras;蒸馏模型则是"缆车直达"(步数极少)。
实例与案例
- 用 X/Y/Z Plot:把调参变成实验 的 X/Y/Z Plot 做矩阵实验:行=sampler,列=scheduler,固定 seed 与 steps,一张网格看清组合差异——这是选型 fastest path。
- 新下载的二次元模型页面上写"euler_a, normal" → 尊重作者训练时用的组合,先抄再改。
- 低显存出图:uni_pc + normal,16 步快速预览构图。
常见误区
- "采样器有绝对高下":只有"与模型的匹配度";Flux 上强行 dpmpp_2m+karras 效果往往不如 euler+simple。
- "ancestral 不可复现":同机同版同 seed 仍可复现;只是跨软件/跨实现不可对齐。
- "步数翻倍必更好":karras 日程 20 步后的步数大多消耗在冗余精修;先看 X/Y/Z Plot:把调参变成实验 实验再决定。
- 忽视蒸馏模型专用参数:Turbo/LCM 类要 cfg=1-2、低步数,按普通模型参数跑会出灰图。
自测题
- dpmpp_2m 与 dpmpp_2m_sde 的核心差异?
- 为什么新 flow-matching 家族推荐 simple/beta 而不是 karras?
- 想快速对比 8 种采样器,最高效的方法是什么?
- LCM 模型用 30 步 + cfg 7 会发生什么?
参考答案
- 前者确定性(每步纯计算),后者每步注入随机噪声,纹理更丰富但路径有随机性。
- 其训练时的噪声调度是线性/均匀流,日程表应贴近训练分布;karras 的对数式日程与其不匹配。
- X/Y/Z Plot 网格实验,固定其余参数一次出对比图。
- 大概率灰图/过曝——蒸馏模型需要 cfg=1-2、低步数的专用区间。
与其他知识点的关系
- X/Y/Z Plot:把调参变成实验 把选型变成可量化实验。
- Flux 架构与工作流:cfg=1 的新物种 是新家族(Flux)选型的实例化。
- SDXL 与多编码器家族:换模型换什么 讨论 SDXL 家族时的推荐组合来源。
延伸阅读
- ComfyUI 采样器/调度器命名与实现:samplers 源码目录(读懂一个即可举一反三)
- karras 调度论文(Elucidating the Design Space of Diffusion Models):arxiv.org/abs/2206.00364
前置知识
KSampler 全参数解剖:seed/steps/cfg/denoise