M6-063M6: Multimodal & Generative ModelsLatent Diffusion & DiT ArchitectureHard
Mastery:

Latent Diffusion & DiT Architecture: 解释 CFG 在 DiT 中的实现与成本。

📐 Mathematical Definition
batch trick: [z; z] with [c; ∅]→[ϵc; ϵ∅];FLOPs×2\text{batch trick}:\ [z;\ z]\ \text{with}\ [c;\ \varnothing]\to[\epsilon_c;\ \epsilon_\varnothing];\qquad \text{FLOPs}\times2
⚡ Executive Summary
Core Concept: DiT 用 adaLN 注入条件,故'无条件'即把条件置空;实现上用 batch 拼接一次前向,成本仍 ×2(FLOPs)。

📌 Key Takeaways

  • •
    DiT 的条件经 adaLN 注入;无条件即把条件设为 null/零
  • •
    实现:把条件与无条件拼成一个 batch,一次前向算两个预测
  • •
    FLOPs 仍 ×2(两次前向的计算量),但墙钟时间接近 1 次

📐 Mathematical Derivations

数学机理:<strong>DiT 中的 CFG 实现</strong>——(1) <strong>无条件的表示</strong>——DiT 用 <strong>adaLN-Zero</strong> 注入条件(时间步 t + 类别/池化文本 c);故'无条件'即把 c 替换为<strong>空条件</strong>(null/零嵌入,训练时随机丢条件时用到的那个);实现上非常自然(只需改 adaLN 的输入)。(2) <strong>batch 拼接技巧</strong>——把潜变量 z 复制一份(batch 维拼接):输入 <code>[z; z]</code> 配 <code>[c; ∅]</code>,一次前向得到 <code>[ε_θ(z,c); ε_θ(z,∅)]</code>;再用 CFG 公式组合。<strong>收益</strong>——(a) <strong>减少 kernel 启动与内存往返</strong>(一次前向 vs 两次);(b) <strong>墙钟时间接近单次前向</strong>(在小 batch 时尤其明显,因为 GPU 未饱和);(c) 实现简单(只需拼接)。(3) <strong>成本的真实情况</strong>——<strong>FLOPs 仍 ×2</strong>(因为 batch 翻倍,计算量翻倍);故'批量并行不省 FLOPs,只省墙钟时间'(在未饱和时)。(4) <strong>与 U-Net 的对比</strong>——U-Net 用 cross-attention 注入文本,'无条件'即把 cross-attention 的 K/V 设空;原理相同。<strong>DiT 特有的细节</strong>——(a) <strong>classifier-free 的'类别'</strong>(ImageNet 生成)——无条件即把类别设为 null(DiT 论文的做法);(b) <strong>文本条件</strong>(SD3/Flux)——无条件即用空文本/零嵌入;(c) <strong>MMDiT 双流</strong>——文本与图像双流,无条件时文本流用空嵌入。<strong>成本优化</strong>——(a) <strong>batch 拼接</strong>(必做);(b) <strong>CFG distillation</strong>(把两次合并为一次,需训练);(c) <strong>只对部分步用 CFG</strong>;(d) <strong>s=1 时省一次</strong>(此时退化为条件预测);(e) <strong>减少步数</strong>(更好的求解器)。<strong>能否复用 KV</strong>——(a) <strong>自注意力的 KV</strong>——条件与无条件的<strong>输入 z 相同</strong>(都是同一个 x_t),故<strong>自注意力的 KV 可复用</strong>(因为自注意力的 KV 来自 z,与条件无关);(b) <strong>但 adaLN 的调制不同</strong>(γ、β 依赖条件),故<strong>中间激活不同</strong>,无法完全复用;(c) 故'KV 复用'在 DiT 中<strong>收益有限</strong>(因为条件通过 adaLN 影响每一层,而非仅注意力)。<strong>这与 U-Net 的 cross-attention 不同</strong>——在 cross-attention 中,无条件只需把 K/V 置空,但<strong>自注意力的 KV 与 FFN 的计算仍需完整跑两遍</strong>(因为中间激活不同);故'复用'的空间有限。<strong>度量</strong>——(a) 墙钟时间(batch 拼接的收益);(b) FLOPs(不变);(c) 质量(CFG distillation 后是否保持)。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>'批量并行不省 FLOPs 只省墙钟时间'</strong>——这是关键区分;面试中能指出这一点是深度理解的标志。② <strong>'DiT 的无条件很自然'</strong>——因为条件经 adaLN 注入,置空即可;这比 U-Net 的 cross-attention 更简单。③ <strong>'KV 复用收益有限'</strong>——因为条件通过 adaLN 影响每一层(而非仅注意力);故'复用'无法避免重算。这是 DiT 与'cross-attention 架构'的差异。④ <strong>'CFG distillation 是根本解法'</strong>——它把'两次前向'压缩为'一次'(真正减少 FLOPs);代价是训练。⑤ <strong>'s=1 时省一次前向'</strong>——因为此时 CFG 公式退化为条件预测;故'无需引导'的场景可省一半。⑥ <strong>面试要点</strong>——被问'DiT 怎么实现 CFG',应给出'<strong>条件经 adaLN 注入 → 无条件即置空 → batch 拼接一次前向 → FLOPs 仍 ×2 但墙钟接近 1 次</strong>'与'<strong>KV 复用收益有限(因为 adaLN 影响每层)</strong>';能指出'CFG distillation 是根本解法'是深度理解的标志。
⚠️ Common Interview Pitfalls
  • ✕
    以为 batch 拼接能减少 FLOPs(只省墙钟时间)
  • ✕
    以为 DiT 能像 cross-attention 那样复用 KV
🎯 Interviewer Follow-ups
  • ?
    为什么'无条件'在 DiT 中很自然?
  • ?
    KV 能否复用来省成本?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM6-062: Latent Diffusion & DiT Architecture: 解释 VAE 在 Latent Diffusion 中的角色与训练。📋Back to BankNext →M6-064: Latent Diffusion & DiT Architecture: 解释分辨率外推与训练分辨率的关系。