为何 DeepSeek 用 $C=M\cdot D$ 而非 $C=6ND$?

← 返回演进总览 §3.1 V1 · ← V1 §3 Scaling Laws · 答疑目录

来源:DeepSeek-LLM arXiv:2401.02954 §3.2 · Table 3 / Formula 2–4


1. 一句话

不是把 Chinchilla 的 $6$ 随便改掉,而是:$6N$ 只是「每 token 算力」的粗近似;DeepSeek 改用实测的 $M$(non-embedding FLOPs/token),于是总算力按定义写成 $C=M\cdot D$——IsoFLOP 拟合(Figure 4a)才准。


2. 传统写法:$C \approx 6ND$

Kaplan / Chinchilla 系 scaling law 里,训练总算力常写成:

$$ C \approx 6ND $$

符号含义
$N$模型规模(参数量,有两种取法,见下)
$D$训练 token 数
6一次 forward + backward 相对 forward 的 FLOPs 倍数($\approx 1+2=3$ 再乘 matmul 计数约定)

$N$ 的两种常见定义

符号定义文献
$N_1$non-embedding 参数量Kaplan et al.
$N_2$含 embedding / lm_head 的全参Hoffmann et al.(Chinchilla)

于是「每 token 算力」可粗写为 $6N_1$$6N_2$,再乘 $D$ 得 $C$。


3. $6N$ 哪里不准?

V1 论文指出:$6N_1$ 与 $6N_2$ 都不是真实的 per-token FLOPs,误差在小模型上尤其大:

近似问题
$6N_1$只数 FFN/线性层 matmul,不含 attention 的 $O(L^2)$ 项 → 低估算力
$6N_2$在 $6N_1$ 基础上 加上 $6,n_{\mathrm{vocab}},d$(vocab 投影)→ 对能力贡献小却 高估算力;仍 不含 attention

DeepSeek 给出三者闭式(Formula 2,$l_{\mathrm{seq}}$ = 序列长度):

$$ \begin{aligned} 6N_1 &= 72 \cdot n_{\mathrm{layer}} \cdot d_{\mathrm{model}}^2 \ 6N_2 &= 72 \cdot n_{\mathrm{layer}} \cdot d_{\mathrm{model}}^2 + 6 \cdot n_{\mathrm{vocab}} \cdot d_{\mathrm{model}} \ M &= 72 \cdot n_{\mathrm{layer}} \cdot d_{\mathrm{model}}^2 + 12 \cdot n_{\mathrm{layer}} \cdot d_{\mathrm{model}} \cdot l_{\mathrm{seq}} \end{aligned} $$

$M$ = non-embedding FLOPs/token:计 attention不计 vocab 投影——作为「模型有多重、每 token 算多狠」的度量。


4. Table 3:小模型上误差可达 50%

Table 3 — 6N1、6N2 相对 M 的偏差

直接打开 Table 3

$n_{\mathrm{layer}}$$d_{\mathrm{model}}$$6N_1/M$$6N_2/M$
127680.431.32
2410240.691.14
3240960.971.01
  • $6N_1/M < 1$(12 层仅 0.43):缺 attention → 严重低估 $M$
  • $6N_2/M > 1$(12 层 1.32):多计 vocab → 高估 $M$
  • 模型变大后趋近 1,但 IsoFLOP 扫小模型时若仍用 $6N$,会把「同一 $C$ 下的不同 $(M,D)$ 分配」搞错 → U 形曲线(Figure 4a)拟合被污染

因此 Formula 4 / IsoFLOP 统一用 $M$,不用 $6N_1$/$6N_2$。


5. 改成 $C = M \cdot D$ 在算什么?

这是 定义,不是新物理定律:

$$ \boxed{C = M \cdot D} $$

含义
$M$每个训练 token 的 non-embedding forward FLOPs(含 attention,不含 embedding 矩阵乘)
$D$训练 token 总数
$C$总训练算力(FLOPs)

与 $6ND$ 的关系:若你坚持用参数量 $N$,只能选 $N_1$ 或 $N_2$,再乘 6近似 $M$;DeepSeek 选择 直接测 $M$,避免 $N_1$/$N_2$ 双轨与 attention 缺失。

训练时仍用 3× forward 做 backward——变的只是 用什么标度刻画「模型规模」:从 参数个数 $N$ 换成 每 token 实际 FLOPs $M$


6. 和 Figure 4a / IsoFLOP 的关系

IsoFLOP 实验:固定总算力 $C$,扫约 10 种 $(M,D)$ 满足 $M\cdot D=C$,找 validation loss 谷底

  • 横轴必须是 真实的 $M$(FLOPs/token),不能是 $6N_1$ 或 $6N_2$
  • 若用 $6N$ 当横轴,小模型点会 系统性偏移,谷底位置错 → $M_{\mathrm{opt}}(C)$、$D_{\mathrm{opt}}(C)$(Formula 4)不可信

Figure 4a 的 U 形曲线因此建立在 $C=M\cdot D$ 之上;演进总览 §3.1 所贴即此图。


7. 和数据质量结论的关系

论文在 Formula 4 成立(即用 $M$) 之后还发现:不同语料拟合的 $M_{\mathrm{opt}}\propto C^a$、$D_{\mathrm{opt}}\propto C^b$ 指数 $a,b$ 不同——数据质量越高,$a$ 越大 → 更该扩模型而非堆数据

这是 第二层结论,依赖第一层「用 $M$ 而不是 $6N$ 把 $C$ 算准」。


8. 常见误解

误解正解
DeepSeek 否定了 Chinchilla仍做 IsoFLOP;改的是 模型规模的度量($M$ vs $6N$)
$C=MD$ 意味着 7B/67B 必须同 $D$$C=M\cdot D$ 是乘法 定义;产品统一 2T 是 工程选择,见 Scaling-Law 选择性应用
6 这个常数错了6 来自 fwd+bwd 计数;问题在于 $N$ 不能代表 per-token FLOPs(缺 attention / 多 vocab)

9. 延伸阅读

文档内容
V1 §3.2 最优 model/data ScalingFormula 2–4 原文与 Figure 4
Scaling 答疑$M$ 推导、Formula 1/4 数值、4B 实战
Scaling-Law 选择性应用Figure 3/4/5 分工;2T 产品 vs IsoFLOP 谷底
产品训练与 Scaling Law7B/67B 同训 2T 与 compute-optimal 的区别