M6-058M6: Multimodal & Generative ModelsGuidance & Fast Sampling (CFG / DDIM)Hard
Mastery:
Guidance & Fast Sampling (CFG / DDIM): 解释 CFG 的双倍前向成本与优化手段。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: CFG 需条件与无条件两次前向(成本 ×2);可用 CFG distillation、批量并行或近似合并来降低成本。
📌 Key Takeaways
- •CFG 每步需两次前向(有条件 + 无条件)
- •成本 ×2 是扩散推理的主要开销之一
- •优化:CFG distillation(合并为一次)、批量并行、部分步 CFG、更好求解器
📐 Mathematical Derivations
数学机理:<strong>CFG 的公式与成本</strong>——ε̂=ε_θ(x_t,∅)+s·(ε_θ(x_t,c)−ε_θ(x_t,∅)),其中 ε_θ(x_t,c) 是<strong>条件</strong>预测、ε_θ(x_t,∅) 是<strong>无条件</strong>(空条件)预测。<strong>故每步需两次前向</strong>(条件 + 无条件),推理成本约为无 CFG 的 <strong>2 倍</strong>(在'采样步数'相同时)。这是扩散推理的主要成本之一(因为采样本身已需数十步)。<strong>优化手段</strong>——(1) <strong>CFG Distillation</strong>——训练一个<strong>学生模型</strong>,其单次前向的输出直接等于 CFG 的组合结果(ε̂):(a) 学生把 s 作为输入(可调引导强度),用教师(带 CFG)的输出监督;(b) 或用'CFG++'类方法(改进引导的数值形式使其更易蒸馏)。<strong>收益</strong>——成本减半(2×→1×)。(2) <strong>批量并行</strong>——把'条件'与'无条件'两次前向<strong>合成一个 batch</strong>(batch 维拼接)一次前向完成;<strong>收益</strong>——<strong>不减少计算量</strong>(FLOPs 相同),但<strong>减少 kernel 启动与内存往返</strong>,故<strong>墙钟时间可能显著降低</strong>(尤其小 batch 时);这是最简单的优化(一行代码)。(3) <strong>近似/部分方法</strong>——(a) <strong>只对部分步用 CFG</strong>(如前几步用、后几步不用);(b) <strong>用历史步推断无条件预测</strong>;(c) <strong>CFG++ 的改进形式</strong>(减少前向次数)。(4) <strong>减少步数</strong>——用更好的求解器(DPM-Solver 10~20 步),从根本上降低'每步成本 × 步数'。(5) <strong>潜空间 + 量化</strong>——降低单次前向的成本(见 LDM 与量化题)。<strong>与'条件注入方式'的关系</strong>——CFG 需要'无条件'前向,故条件注入方式需支持'空条件'(如把文本嵌入设为空/零、把类别设为 null);这是实现细节。<strong>与'引导强度 s'的关系</strong>——s=1 时公式退化为 ε_θ(x_t,c)(只需一次前向);故'不需要引导'的场景可省一半成本。<strong>实践建议</strong>——(a) <strong>必做</strong>:批量并行(零成本);(b) <strong>值得做</strong>:CFG distillation(成本减半,需训练);(c) <strong>可考虑</strong>:部分步 CFG、更好的求解器。<strong>度量</strong>——(a) 每张图的延迟;(b) 质量(FID/CLIP-score);(c) 蒸馏后 s 的可调性是否保持。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'CFG 的成本 ×2'是扩散推理的常识</strong>——面试中能指出这一点(而非只说'CFG 提升质量')是深度理解的标志。② <strong>'批量并行是零成本优化'</strong>——它不减少 FLOPs 但降低墙钟时间(减少 kernel 启动与内存往返);应默认使用。③ <strong>'CFG distillation 的取舍'</strong>——成本减半但需训练,且需保持 s 的可调性。④ <strong>'s=1 时只需一次前向'</strong>——因为公式退化为条件预测;故无需引导时可省一半。⑤ <strong>'与少步采样的叠加'</strong>——减少步数(10~20 步)与 CFG distillation(减半)叠加,可把总成本降到 1/10 以下。⑥ <strong>面试要点</strong>——被问'CFG 的成本',应给出'<strong>每步两次前向 → 成本 ×2</strong>'与'<strong>优化(批量并行零成本 / CFG distillation 减半 / 部分步 CFG / 更好求解器)</strong>';能指出'批量并行不减少 FLOPs 但降低墙钟时间'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕忽略 CFG 的双倍前向成本
- ✕不做批量并行(白白浪费墙钟时间)
🎯 Interviewer Follow-ups
- ?CFG distillation 怎么做?
- ?批量并行能省时间吗?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.