在 ComfyUI 里有一个“K 采样器”节点,其中有一个属性是“采样器名称”,我在看一些教程的时候,有些工作流需要去调整这个属性,里面有很多的选项,本篇对这部分的内容做一下整理。
这是在我当前的 ComfyUI 里的一些分类器名称:
1 | euler |
我们先给它分成几个大类:
graph LR
A[采样器分类体系] --> B[经典ODE求解器]
A --> C[祖先采样器]
A --> D[DPM系列]
A --> E[新派采样器]
A --> F[其他特殊类]
B --> B1["Euler"]
B1 --> B11("euler")
B1 --> B12("euler_cfg_pp")
B --> B2["Heun"]
B2 --> B21("heun")
B2 --> B22("heunpp2")
C --> C1["基础祖先型"]
C1 --> C11("euler_ancestral")
C1 --> C12("euler_ancestral_cfg_pp")
C --> C2["DPM祖先型"]
C2 --> C21("dpm_2_ancestral")
C2 --> C22("dpmpp_2s_ancestral")
D --> D1["DPM标准型"]
D1 --> D11("dpm_2")
D --> D2["DPM++多步求解器"]
D2 --> D21("dpmpp_2m")
D2 --> D22("dpmpp_2m_cfg_pp")
D --> D3["DPM-SDE类"]
D3 --> D31("dpmpp_sde")
D3 --> D32("dpmpp_sde_gpu")
D3 --> D33("dpmpp_3m_sde")
E --> E1["快速采样器"]
E1 --> E11("uni_pc")
E --> E2["改进收敛型"]
E2 --> E21("ddim")
E2 --> E22("ipndm")
F --> F1["自适应算法"]
F1 --> F11("dpm_adaptive")
F --> F2["残差网络型"]
F2 --> F21("res_multistep")
以下是各主要采样器分类的简要说明:
经典ODE求解器
- 核心特点:基于常微分方程的确定性算法,生成结果稳定可复现
- 代表采样器:
Euler、Heun、LMS - 适用场景:快速验证创意、商业级稳定输出
- 优势:计算效率高,显存占用低
- 局限性:高步数下细节表现弱于DPM系列
祖先采样器
名字里带有 a,或者是 ancestral 字样的
- 核心特点:通过噪声重采样实现非收敛生成,结果不可预测
- 代表采样器:
Euler a、DPM++ 2S a - 适用场景:艺术创作、角色设计变体生成
- 优势:输出多样性高,避免模式固化
- 注意事项:需配合CFG值调节(建议5-7)防止噪点
DPM系列
DPM标准型
- 基础架构:早期DPM算法的直接实现
- 代表采样器:
dpm_2 - 现状:逐步被DPM++取代
DPM++多步求解器
- 技术突破:二阶多步预测-校正架构
- 代表采样器:
dpmpp_2m(写实首选) - 参数建议:20-30步 + Karras调度器
DPM-SDE类
- 核心价值:在确定性框架中引入可控随机性(即带有 SDE 字样)
- 代表采样器:
dpmpp_sde(创意平衡型) - 硬件需求:建议≥12GB显存
新派采样器
- 创新方向:低步数高效率生成
- 典型代表:
UniPC:10步内完成基础构图LCM:Latent Consistency Model的极速生成
- 适用场景:移动端部署、批量生成测试
其他特殊类
- 自适应算法:
dpm_adaptive(自动调节步长) - 残差网络型:
res_multistep(结合残差连接) - 历史遗留型:
DDPM(原始扩散模型算法) - 使用建议:仅建议在特定研究场景使用
选择决策树
结合上面的内容,我们对这些采样器的选择可以有个大概的思路:
graph TD
A[需求类型] --> B{要稳定结果?}
B -->|是| C[经典ODE/DPM++]
B -->|否| D[祖先-SDE类]
C --> E{要最高质量?}
E -->|是| F[DPM++ 2M]
E -->|否| G[Euler/Heun]
D --> H{要可控随机?}
H -->|是| I[DPM++ SDE]
H -->|否| J[Euler a]