DeepSeek-V3 FP8 动态量化
← 中文导读 · ← 仓库首页(EN) · ← 演进总览 §3.3 · ← V3 基座 · 论文 Figure 7 边界:属 训练侧 GEMM 数值/内核(与 DualPipe、DeepEP 并列),不是 Transformer 权重结构本身;V3 纯模型结构对比 刻意不含本节。
一句话
V3 在 FP8 Tensor Core GEMM 上用 块级动态 scale(fine-grained quantization) 抑制激活离群点误差,并 每隔 $N_c{=}128$ 次 MMA(名词解释:MMA)把 Tensor Core 低精度累加 提升到 CUDA Core FP32 寄存器 再续算——在保持 FP8 吞吐的同时,把 671B 预训练做稳。
为何需要「动态」量化
| 问题 | 后果 | V3 对策 |
|---|---|---|
| 激活 离群值(outliers) | 整块 FP8 动态范围被少数大值撑满,有效精度下降 | 细粒度:每 $N_c$ 元素一块,独立 scale |
| Tensor Core 低精度长累加 | 大量 FP8 MMA 后 partial sum 漂移 | 周期性提升:每 $N_c$ MMA 进 FP32 累加 |
| 仅粗粒度 per-tensor scale | 大模型宽 hidden / 宽 expert 更易失真 | 激活与权重 双侧 块 scale |
Figure 7 两路逻辑
Fine-grained quantization
对 激活 与 权重 均按长度 $N_c$ 分块:
- 每块各自算 动态 scale $s_x$(激活)、$s_w$(权重);
- 块内元素量化到 FP8 后在 Tensor Core 做 GEMM / MMA,得到 低精度积;
- 在 CUDA Core 用 $s_x \cdot s_w$ 反量化 写回输出。
要点:scale 随块动态更新,离群只污染所在块,不拖垮整条 tensor。
实现:$s_x = \mathrm{absmax}(X_{\mathrm{block}}) / F_{\max}$($F_{\max}$ 为 FP8 可表示最大值;$s_w$ 同理);量化 $\mathrm{FP8}(x) = \mathrm{round}(x / s_x)$;MMA 输出在 CUDA Core 做 $\mathrm{out} \mathrel{+}= \mathrm{MMA}(\mathrm{FP8}(x), \mathrm{FP8}(w)) \cdot s_x s_w$。
Increasing accumulation precision
一次 GEMM 对应多轮 WGMMA(warp-group MMA):
- Tensor Core 内先用 低精度累加器 收 partial sum;
- 每累计 $N_c = 128$ 个 MMA 元素,把当前 partial 提升到 CUDA Core 的 FP32 寄存器 再累加;
- 下一轮 WGMMA 再从低精度路径开始,避免 全程 FP8/低精度 长链漂移。
要点:算在 TC、稳在 CUDA FP32——速度与 671B 训练可收敛性之间的折中。
实现:沿归约维 $K$ 维护 MMA 计数;每 128 步执行 acc_fp32 += promote(acc_tc); acc_tc = 0;GEMM 结束后再 acc_fp32 += promote(acc_tc) 写回 BF16/FP16 激活。
分工速查
| 机制 | 实现落点 | 关键参数 |
|---|---|---|
| (a) 块 scale + 反量化 | 量化在 GEMM 前;CUDA Core 乘 $s_x s_w$ | $N_c = 128$ |
| (b) FP32 promotion | TC 低精度 acc;CUDA Core FP32 续加 | 每 128 MMA flush 一次 |
硬件分工
| 单元 | 职责 |
|---|---|
| Tensor Core | FP8 MMA / GEMM;块内低精度乘加 |
| CUDA Core | 乘 $s_x s_w$ 反量化;FP32 高精度累加 |
这与 V3 报告里 FP8 训练框架(配合 DualPipe 并行、DeepEP 通信)同属 训推系统层;换推理引擎 FP8 kernel(如自测 draft+FP8)是 另一套部署量化,数值策略不必与训练块 scale 完全相同。
在 V3 全景中的位置
| 层级 | 示例 | 本文 |
|---|---|---|
| 模型结构 | MLA、MoE 256/8、MTP | 否 |
| 训练数值/内核 | FP8 GEMM、块 scale、FP32 promotion | 是 |
| 训练并行 | DualPipe、DeepEP | 相关但另文 |
| 推理 infra | MLA KV、投机解码、KV 量化 | 否(推理 FP8 另论) |
参考
- 论文:DeepSeek-V3 arXiv:2412.19437 · Figure 7
- 结构边界:DeepSeek-V3 梗概§排除项
- 演进总览:§3.3 DeepSeek-V3