32T Tokens — 预训练的活水
数据策展不是"清洗 + 拼接"那么简单:长文档优先怎么改了 packing 的概率分布、采样级 mask 怎么把 cross-sample 的隐性噪声切干净、4K→16K→64K→1M 的阶梯调度怎么和 sparse attention 切换时机配合,以及为什么 V4 在 mid-training 才注入 agentic 数据而不是从头混。
32T Tokens = V4-Flash 32 万亿 / V4-Pro 33 万亿训练 token,长文档优先 + 采样级 mask + 阶梯式扩长上下文 + mid-training 注入 agentic 数据
一句话:把"先用 4K 短样本喂 dense 主干、再扩到 1M 让 sparse attention 接管"做成一条阶梯,每段长度都对应不同的数据混合 + 不同的 attention 模式。 数据本身不是简单"加更多 web",而是用模板过滤压模型崩塌、扩多语言长尾、把 agentic 任务延到 mid-training 单独注入。
- 32T Tokens(与 V3 的 14.8T 比)
- 训练 token 总量 ~翻倍。但 token 本身越来越贵:清洗后高质量 web 增长慢,必须靠"长尾语言扩容 + 长文档加权 + 合成 / 翻译 token"补缺口。token 总量比 V3 大,但每 token 信息密度更高,这是 Ch15 Base 跳分的根本来源。
- FIM(Fill-In-the-Middle,OpenAI 2022)
- 训练时把一段文本切成 prefix / middle / suffix,重排成
<PRE> prefix <SUF> suffix <MID> middle让模型预测 middle。让模型能"双向"看上下文 —— 代码补全、cloze 类任务依赖此。V4 沿用 V3 的 FIM 比例(约 10%)。 - Packing(样本拼接)
- 训练时把多个短样本拼到同一个 sequence 长度(如 4K)填满 batch,避免 padding 浪费。问题:默认 attention 让样本 A 的 token 能看到样本 B 的 token,引入 cross-sample 关联噪声。这就是接下来 sample-level mask 要解决的事。
- Sample-level Attention Masking(采样级注意力屏蔽)
- V4 与 V3 的关键差异:packed sequence 内部,每个样本只能看自己内部的 token,跨样本一律 mask 掉。等价于"打包但语义独立"。在长文档加权的前提下尤其重要 —— 单个文档可能占满整个 4K,跨样本污染会让长上下文学习被短样本主导。
- Model Collapse(模型崩塌,Shumailov 2024)
- 训练数据混入大量 LLM 生成的模板化文本(SEO、AI 写作、代码片段重复)后,模型分布逐渐塌陷到狭窄模式,多样性 ↓,幻觉 ↑。V4 的对策:用专门的模板检测器过滤批量自动生成内容,模板化模式被压低到 ~3% 以下。
- Long-Document Priority(长文档优先)
- 显著加权学术论文、技术报告、长文献、长代码库。动机:(1) FACTS / Simple-QA 等知识类 benchmark 的 token-efficiency 高度依赖长上下文样本;(2) sparse attention 必须在长样本上才能学到"哪部分该跳过、哪部分该精读"的 selection 模式;(3) 长样本含丰富跨段引用,对 mHC 这种深度堆叠模型的层间依赖训练更有效。
- Mid-Training(中段训练)
- Pre-train 末段、SFT 之前的一个新阶段:在已经基本收敛的 Base 上注入特定能力数据(V4 注入 agentic 工具调用 + code agent 轨迹)。比 SFT 多得多 token、比 pre-train 更结构化。这是 V4 报告新引入的概念,把"工具能力"从 SFT 提到 pre-train 末端,让 OPD 蒸馏起步就有 agent 知识。
- 序列长度阶梯:4K → 16K → 64K → 1M
- 训练分四段,每段序列长度不同:4K 阶段(占 token 约 60%)走 dense attention 学语言基础;16K + 64K(约 35%)逐步切到 SWA + CSA/HCA 混合,让 sparse 模式 warmup;1M(约 5%)让 long-context 模式精修。这条阶梯的存在是因为 sparse attention 在短序列下无优势,只有长序列才能体现压缩+稀疏的价值。
- Tokenizer(沿用 V3 + 几个特殊 token)
- 词表 128K 不变(V3 的 BBPE 训练版本)。新增几个 agentic 控制 token:
<|tool_call|>、<|tool_result|>等。不重训 tokenizer 是为了让 V3 的 KV cache、prompt cache 直接复用,向后兼容。
1. 为什么 V3 的数据策略需要重做
V3 时代的数据 pipeline 已经很成熟:14.8T tokens、CommonCrawl + GitHub + 学术 + 中文 + 多语言混合,含 FIM、tokenizer 128K BBPE。V4 要把百万 token 上下文做成默认,原 pipeline 有三个不再适配的地方:
- 样本平均长度太短:V3 的样本平均 ~600 token,packing 后短样本占主导。CSA / HCA 的"跨段选择"在 600 token 内体现不出价值,sparse attention 学不到正确的 selection 模式;
- 模板化数据混入:V3 训练完成后(2024 末),互联网上 LLM 生成内容比例已超 20%,再用同样的过滤器会把模板化模式带进 V4 → model collapse 风险;
- Cross-sample 噪声放大:长文档加权后,单样本可能占满 4K 整个 packing,少量短样本被 attention 覆盖到的概率反升,noise 反而比 V3 严重。
- V3 风格(短样本主导):平均样本长度 600 token → 每 4K window 装 ~6.7 个样本。Cross-sample attention 涉及的 token pair 数 $\binom{6.7}{2} \approx 22$,每对约 600×600=36 万 token-pair。
- V4 长文档加权:平均长度涨到 ~2000 token → 每 4K window 装 ~2 个样本。但 cross-sample token pair 数 $\binom{2}{2} = 1$,每对 2000×2000=400 万 token-pair。
2. Sample-level Attention Masking
做法很简单:在 packed sequence 上额外维护一个 sample id 数组,attention mask 在因果 mask 之上再叠一层"$i$ 与 $j$ 同样本才可见"。
这条 mask 翻成大白话就是在标准因果 mask 上多加一条"同源"过滤:
- $j \le i$:标准因果约束 —— 当前 token 只能看历史 token,不能偷看未来;
- $\mathrm{sid}(i) = \mathrm{sid}(j)$:新增的同源约束 —— 即便 $j$ 在 $i$ 前面、且都在同一 packed window 里,只要它们属于不同样本就 mask 掉;
- $M_{ij} = -\infty$:把不可见位置的 attention logit 拍到负无穷,softmax 后权重为 0。
这条改动对 V3 是"可选项"(短样本时跨样本噪声小),对 V4 长文档加权后是必须。直觉:你不会让一个学术论文的 token 偷看到隔壁拼贴在同一 window 里的论坛帖子,否则模型会学到伪相关性 —— 比如"标题党后面跟方程"这种 packing 制造的虚假分布。
读图法:方块 = (query, key) 对。绿格是同样本且 $j \le i$ 的合法 attention;黄格是 V3 默认看见、但 V4 sample-level mask 切断的 cross-sample 因果对;灰格是因果 mask 切掉的未来。
把样本数从 1 拉到 8 你会看到黄色块迅速增多(块状对角阵)。点切换按钮看 V4 把所有黄格变灰 —— 每个样本各自一块独立三角,互不可见。
读出"cross-sample 对数 / 因果三角总数"的比例就是 V3 多看到的污染信号比例 —— 4 个样本均匀打包时约 25%。
3. 4K → 16K → 64K → 1M 序列长度阶梯
训练序列长度不是从头到尾固定的。V4 走四段阶梯,每段对应不同 attention 模式:
| 段 | 序列长度 | token 占比 | 主要 attention 模式 | 主要任务 |
|---|---|---|---|---|
| ① 基础 | 4K | ~60% | dense(warmup) | 语言基础 / 短样本知识 |
| ② 扩长 1 | 16K | ~20% | SWA + CSA 切入 | 稀疏 selection 学习 |
| ③ 扩长 2 | 64K | ~15% | SWA + CSA + HCA 全开 | 跨段引用 / 长依赖 |
| ④ 长精修 | 1M | ~5% | full sparse | 百万 token 训练 |
有三个根本原因让"一开始就 1M"不可行:
- 显存账:1M token 单层 KV ~60MB,全模型 ~3.6GB/请求。带 dense attention 时 attention score 矩阵 1M×1M = $10^{12}$ 项,显存 + 计算都爆。必须先在 4K 学到一个能切 sparse 的初值。
- 稀疏 selection 需要先验:CSA 的 Lightning Indexer 要学"哪部分该精读"。模型未收敛时indexer 选的是噪声,sparse 训练发散。所以前 60% token 走 dense 让模型先学到基本语义。
- 长样本稀缺:可用的 1M 长样本(书籍、超长仓库)token 数远少于短样本。把它放最后一段精修是 token 效率最优。
这条阶梯在工程层与 Ch11 的 two-stage CP 完美对接:① 阶段 CP 不需要(4K 单卡能装),② 阶段开始 CP=2,③ CP=4,④ CP=8 ~ 16。序列长度调度同时是并行度调度。
4. Mid-Training:把 agentic 数据延后注入
V3 把代码、数学、工具调用数据从 pre-train 头到尾混在一起。V4 改为:pre-train 末端用一段独立 mid-training 阶段集中注入 agentic 数据(工具调用轨迹、code agent 多步推理、long-horizon 任务)。
- 结构化数据干扰早期学习:agentic 轨迹含大量结构化 token(
<|tool_call|>JSON 等),早期混入会让模型把 token 分布学偏,普通文本生成质量下降; - 需要稳定的语言基础:工具调用本质是"语言 → 结构 → 语言"的转换,模型必须先有扎实语言能力才能学好这层映射;
- Mid-training 可以大胆调高 lr:相比 SFT 的少量数据 + 低 lr,mid-training 用 pre-train 量级的 lr + 大量 token,让 agentic 能力真正进权重而不是"表层 SFT";
- 给 OPD 一个高起点:Ch18 的 reverse-KL 蒸馏期望学生模型已经能调用工具,否则 specialist teacher 蒸不下来。
这是 V4 报告新加的训练阶段,对标 Anthropic / OpenAI 内部已经在做的"capability training",但 DeepSeek 第一次把它形式化写进开源报告。
5. V4-Flash / V4-Pro 关键超参对比
| 项 | V4-Flash (284B / 13B 激活) | V4-Pro (1.6T / 49B 激活) |
|---|---|---|
| Transformer 层数 $L$ | 43 | 61 |
| hidden size $d$ | 4096 | 7168 |
| CSA 压缩率 $m$ / top-k | 4 / 512 | 4 / 1024 |
| HCA 压缩率 $m'$ | 128 | 128 |
| 核心 head 数 / dim $c$ | 64 / 512 | 128 / 512 |
| SWA window $n_{\text{win}}$ | 128 | 128 |
| routed experts (激活 $K$) | 256 (6) | 384 (6) |
| MoE 中间维 $d_{\text{ff}}$ | 2048 | 3072 |
| mHC 扩展因子 $n_{\text{hc}}$ | 4 | 4 |
| Sinkhorn 步数 | 20 | 20 |
| 训练 token | 32T | 33T |
| 峰值 LR | $2.7 \times 10^{-4}$ | $2.0 \times 10^{-4}$ |
| 序列长度调度 | 4K → 16K → 64K → 1M | 4K → 16K → 64K → 1M |
- 每 token forward+backward ≈ $6 \cdot 49\text{B} = 2.94 \times 10^{11}$ FLOPs;
- 33T tokens × $2.94 \times 10^{11}$ ≈ $9.7 \times 10^{24}$ FLOPs;
- 按 H100 BF16 989 TFLOPs/s 与实际 MFU ~35% 算,等价 $\approx 880{,}000$ H100-小时,即 10K 卡集群跑 ~3.7 天净计算。
6. 一句话总结
32T token 不是"加更多数据"那么简单,而是 长文档加权 + 采样级 mask + 阶梯式扩长 + mid-training 注入 四件事联动 —— 它们共同把 V3 的"短样本稳态"改造成 V4 的"长上下文默认"。Sample-level mask 是这套改造里最朴素也最关键的一步:它让 packing 这种工程必需不再污染长文档的语义。