第二部分 · 基础设施
V4 的"骨" —— MegaMoE 通信、TileLang 内核、批不变与确定性、FP4 QAT、训练 / 推理框架。架构定了形,基础设施决定它能不能在真实集群上跑起来。
读完这部分,你将能够
- 用一行不等式(C/B ≤ 6144 FLOPs/Byte)说出 MegaMoE 的"硬件协设公式",并解释超过这个值堆带宽为什么没用。
- 解释 TileLang 替掉 ATen 的三个动机:host 开销、SMT 求解、位级可复现。
- 区分"批不变"与"确定性"是两件事,并说出 V4 是怎么在 Attention / MatMul / Sparse Attn / MoE 反向里分别保证的。
- 画出 FP4 QAT 的"FP32 master → FP4 → FP8 反量化 → forward"信号链,说出为什么 FP4→FP8 反量化是无损的。
- 说清 Muon + ZeRO 冲突的根因,以及 V4 是怎么"稠密 / MoE 二分 + FP32→BF16 SR 通信"折中的。
- 对比 PagedAttention 与 V4 的 State Cache + Block Cache 二分,列出至少 3 处不能共用的原因。
- 面对一个新模型的部署问题,能从"通信、内核、数值、梯度切分、KV 布局"五个维度独立诊断。
本部分章节路线图
计算-通信全融合:MegaMoE
专家波(wave)调度,把通信完全藏到计算下面。
TileLang 内核
DSL 替手写 CUDA,host 开销 <1µs,Z3 SMT 进编译器。
批不变 与 确定性
同一 token bit-identical 复现,让 loss spike 可调试。
FP4 量化感知训练
MoE 专家与 Indexer QK 路径降到 FP4,反量化无损接 FP8。
训练框架与 mHC 工程
混合 ZeRO、张量级 checkpointing、二阶段 CP。
推理框架与 KV 异构
State Cache + Block Cache 二分,盘上前缀复用。
如果你做训练 infra,Ch7 / Ch11 / Ch9 优先; 如果你做推理部署,Ch12 / Ch10 / Ch9 优先; 如果你想理解 V4 的"工程主义",Ch9(确定性)是隐藏 MVP —— 它让前面的所有奇技淫巧可被复现、可被调试。
本部分小结
核心要点回顾
- 通信(Ch7 · MegaMoE):把 dispatch / L1 / act / L2 / combine 切 wave 流水,通信完全藏在计算下;C/B ≤ 6144 FLOPs/Byte 是硬件协设的目标线。
- 内核(Ch8 · TileLang):用 DSL 替手写 CUDA,host 开销 <1µs,Z3 SMT 入编译器,bit-identical 与 CUDA 对齐。
- 可重放(Ch9 · 批不变 + 确定性):放弃 split-K / atomicAdd 等非结合优化,换来 train / RL / infer 三段 bit 一致。
- 数值(Ch10 · FP4 QAT):FP32 master → FP4 → FP8 反量化无损 → forward;推理直接吃真 FP4 权重。
- 训练(Ch11 · ZeRO + CP):稠密 / MoE 二分切;FP32→BF16 stochastic rounding 减半通信;mHC 融合 kernel + DualPipe overlap,把开销压到 6.7%;二阶段 CP 跨压缩边界。
- 推理(Ch12 · KV 异构):State Cache 装位置敏感的 SWA / 尾巴,Block Cache 装压缩 KV;盘上 KV 给共享前缀复用。
关键参数 / 公式速查
| 位置 | 关键值 / 公式 | 含义 |
|---|---|---|
| MegaMoE 协设 | C/B ≤ 2d = 6144 FLOPs/Byte | 每 GBps 互联养 6.1 TFLOP/s |
| TileLang host 开销 | < 1 µs | 从 ATen 的几十~几百 µs 砍下来 |
| FP4 sub-block | 1 × 32(FP4 E2M1) | scale 比值落在 FP8 E4M3 动态范围内 |
| FP8 量化块 | 128 × 128(FP8 E4M3) | 与 FP4 sub-block 嵌套,反量化无损 |
| Indexer 提速 | 2× / 99.7% recall | FP4 QK + BF16 score |
| mHC wall-time 开销 | 6.7% | 融合 kernel + DualPipe overlap 后 |
| 二阶段 CP 输出长度 | s/m + 1 | 压缩边界 + 1 token 同步 |
设计直觉地图
- 架构层(Part 1)的每个新元素,在基础设施层都对应一项"代价":mHC → 融合 kernel + 张量级 ckpt;CSA → 二阶段 CP + 盘上 KV;FP4 → 反量化嵌套;Muon → 混合 ZeRO + SR。
- Ch9 的"批不变 + 确定性"是看不见但最关键的护城河 —— 没有它,前面所有 trick 都不可调试。
- "硬件协设"不只是 Ch7 的 6144 FLOPs/Byte:FP4 嵌套、TileLang 与 SMT、KV 异构布局,都是同一个"软硬协同"姿态。
自检题
Q1. C/B ≤ 6144 FLOPs/Byte 这个阈值的物理含义是什么?为什么超过它再堆带宽是浪费?
查看参考答案
它给出的是"通信完全能被计算覆盖"的临界点:每通信 1 字节,对应的计算时间够掩盖通信时间。低于此值,瓶颈在通信,加带宽有用;高于此值,瓶颈在计算,加带宽不会让训练更快。
Q2. Muon 与传统 ZeRO 为什么冲突?V4 是怎么折中的?
查看参考答案
Muon 需要完整梯度矩阵做 NS 正交化,而 ZeRO 按维度切梯度会让每个 rank 看不到完整矩阵。V4 的做法:稠密参数限制最大 ZeRO 并行度 + 背包均衡 + padding;MoE 参数按专家独立切;通信用 FP32→BF16 stochastic rounding 减半。
Q3. 为什么 V4 不能直接用 PagedAttention?至少给出 3 个原因。
查看参考答案
(1) PagedAttention 假设所有层共享同种 KV,但 V4 有 SWA / CSA / HCA / Indexer 四种;(2) SWA 有窗口外即丢的过期策略,与 paged 通用回收不兼容;(3) 压缩注意力 kernel 对 cache line 对齐有要求,需要 lcm(m, m') 分块;(4) 各层 KV ratio 不一样。
Q4. FP4 → FP8 反量化为什么是无损的?
查看参考答案
FP4 sub-block (1×32) 与 FP8 量化块 (128×128) 的 scale 比值刚好落在 FP8 E4M3 的动态范围内,所以反量化时 scale 本身能精确表达,不引入舍入误差。这是 V4 把"训练用模拟 FP4 / 推理用真 FP4"无缝衔接的关键。