训练 4K,使用 128K?
本课一问:训练时用 4K 长的序列,使用时却要读 128K,怎么办?
这一课先不碰:推理时怎么把位置折算回训练范围(PI、NTK-aware、YaRN,C2 第 5 课已经讲过);长文本数据从哪来、怎么配(C7 第 6 课);一条 128K 的序列激活放不下怎么切(C10 岔路 1)。
从已有出发
C2 第 5 课讲的是推理时的办法:位置编码越界时,把新位置折算回见过的范围。我们自己的小模型(训练长度 128)零样本读 512 的结果,再看一眼:
零样本折算都有代价,论文里的做法都是再续训一小段。这一课问的是训练时:长度该怎么安排。
这一课换个例子,原因是:问题本身就是「序列多长」,贯穿例句 5 个 token 只能代表 4K 以内的短序列;下面的账都按长度 T 画。
先自己设计:从头就用长序列训
最省事的想法:既然要用 128K,那就一开始就用 128K 训,训练与使用同一个长度,什么都不用折算。先算账。每个 token 训练一次的 FLOPs:
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
试三件事:① 在成本表里把 T 拖到 131,072:Qwen3-32B 那一行「是 4K 时的几倍」读 2.95;锚点只有 16 层全注意力,同一长度注意力项只占 50%;② 拖到 1M:锚点的注意力项也到了 6N 的 4 倍多——线性注意力省下的是 3/4 的层,剩下那 1/4 照样随 T 涨;③ 展开改进一侧,数一数 DeepSeek-V3 那条里 4K 占了多长:两段扩展细到几乎看不见。
改进:先短后长
为什么先短,两个理由:
- 算力:上面的账——短序列上每个 token 便宜得多。Llama 3 的报告写得很直白:「不更早用长序列训,是因为自注意力层的计算随序列长度平方增长」 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文的理由陈述;6 段、约 800B token 也出自这一节。 出处Llama 3 §3.4.2(需联网) ↗需联网 。
- 稳定性:Li 等人 2021 在 GPT-2 规模的复现里发现,训练不稳与梯度方差的极端值强相关,而训练初期的长序列样本是这些极端值的主要来源;他们提出从短序列逐步加长(sequence length warmup) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条GPT-2 规模的实验结论。 出处Li et al. 2021 摘要(需联网) ↗需联网 。
这个做法很老:BERT 用 128 长度训 90% 的步数、512 训最后 10% 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文理由:长序列的注意力是平方代价。 出处Devlin et al. 2018 附录 A.2(需联网) ↗需联网 。到 2024–2026 年,各家的课程是这样的:
- DeepSeek-V3:14.8T token 全部在 4K 上训;之后用 YaRN,两段各 1,000 步:32K(每步 1,920 条,约 62.9B token)、128K(每步 480 条,约 62.9B token) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条步数、批大小、长度是原文;token 数由三者相乘。 出处DeepSeek-V3 §4.2–4.3(本地 PDF) ↗ 。长上下文扩展只占全部训练 token 的 0.84%。
- Llama 3 405B:15.6T token 预训练,最后分 6 段从 8K 拉到 128K,约 800B token;每段训到「短文本评测完全恢复、且大海捞针在该长度上全对」才进下一段;RoPE base 调到 500,000。
- Qwen3:S1(30T 以上)与 S2(约 5T)都在 4K;S3 在 32K 上训「数千亿」token,同时用 ABF 把 RoPE base 从 10,000 调到 1,000,000,推理时再用 YaRN + DCA 扩 4 倍 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条「数千亿」是原文措辞,没有精确值。 出处Qwen3 技术报告 §3(需联网) ↗需联网 。ABF 出自 Xiong 等人 2023:长上下文继续预训练优于从头长序列训练,且「大量长文本」不是关键。
- Kimi K3:预训练 8K → 64K,cooldown 256K → 1M;报告说这样「把昂贵的长序列计算集中在训练预算的一小部分」。NoPE 省掉的是改位置编码这一步,不是长上下文训练本身(旧版课程 M7 的限定)。
- Qwen3.8-Flash-Next:在 256K 的继续预训练里引入稀疏的 QSA:先只训索引器 1,000 步对齐主干的注意力,再联合训练 8,000 步(R2 读出的报告配方)。
2026 的分歧:注意力变便宜,课程在缩短
DeepSeek-V4(2026-04)还是 4K → 16K → 64K → 1M,并且前 1T token 先用稠密注意力、到 64K 才切到稀疏;V4.1(2026-09)直接从 64K 起训,稀疏注意力从头就用、没有稠密预热,在 34T token 时扩到 1M(共 45T) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方自报;没有公开「从 4K 起训」的对照。 出处DeepSeek-V4.1 报告 §4.2(需联网) ↗需联网 。上一课的账解释了为什么敢这样:它的注意力是压缩 + 稀疏的,长序列每个 token 的额外代价已经很小。「先短后长」的第一个理由(算力)被架构削弱了;第二个理由(早期稳定性)V4.1 的报告没有讨论,报告称训练全程无不稳定。
常见误解一:「长上下文靠推理时 YaRN 就够了。」 YaRN 在论文里也要续训;各家都在预训练末段专门训长序列,零样本折算只是补充。
常见误解二:「长上下文训练要大量长文本。」 Fu 等人 2024:0.5–5B token 的继续预训练就能在 128K 里找回任意位置的信息;DeepSeek-V3 两段共约 126B token。要的是配比得当(领域均衡、长度上采样)和专门合成的「必须读完全文才能解」的任务(K3),不是一味堆长书。
常见误解三:「NoPE 模型不需要长上下文训练。」 K3 用 NoPE,照样走了四段课程。
常见误解四:「训到 1M 就等于 1M 处能用。」 窗口是配置,有效长度只能测(C2 第 5 课)。
① 更多参数,不要更多算力(MoE)
- 解决了结构最简单:所有参数对每个 token 都生效。卡在锚点 Qwen3.8-27B 每 token 前向约 51.2 GFLOPs;同家族 2.4T 规模若是 dense,约 4.84 TFLOPs(94 倍)。
- 解决了每个 token 只算 top-k 个专家:Qwen3.8-2.4T-A95B 每 token 约 186.5 GFLOPs,是同参数 dense 的 26 分之一。卡在路由会自我强化地偏心:8 个专家全挤到 1 个时,Switch 负载损失从 0.01 升到 0.08;所有专家的权重仍要常驻显存。
- 解决了把「均衡」写进 loss,路由器被梯度推向均匀。卡在α 难调:太小拉不平,太大干扰主 loss(Switch 在 10⁻¹ 到 10⁻⁵ 之间扫;Wang 2024 的出发点)。
- 解决了偏置只改「选谁」,不进门控、不产生干扰梯度;DeepSeek-V3 前 14.3T token 用 γ = 0.001,最后 500B 设为 0。卡在固定步长在近千个专家时太慢或来回震荡(Kimi K3 报告)→ Quantile Balancing;而且统计范围(整批 vs 单条序列)比「有没有 loss」更要紧。
- 解决了同参数同计算,16 选 2 的 120 种组合变成 64 选 8 的 4,426,165,368 种;共享专家装公共知识。卡在显存账不减:Qwen3.8-2.4T 路由专家占主干参数 97.98%,BF16 权重 4.89 TB。
- 解决了Qwen3.8-2.4T 512 选 10 + 1 共享;K3 896 选 16 + LatentMoE + Quantile Balancing;V4.1 图文两套偏置。卡在共享专家 0、1、2 个都有人用(Qwen3 一个不设),稀疏度从 32 到 64 都有(GLM-5.3 与 V3 为 32、GLM-5.3-Flash 36、K2 48、Qwen3.8 51、K3 56、V4.1-Flash 64)——都是实验选择。
② 长文本:KV 与计算不再随长度等比例涨
- 解决了每个 token 都能精确回看任意一个前文 token。卡在KV ∝ 长度:锚点若 64 层全是全注意力,262,144 token 时 64 GiB。
- 解决了去掉 softmax,求和提前累加成一个固定大小的状态,与长度无关。卡在只加不减:同一个键写两次,读回的是两个值之和;状态最多装 d 对互不干扰的键值(C0 岔路)。
- 解决了写前先擦(delta)、每步衰减(门):锚点 48 层状态共 144 MiB(FP32)、与长度无关;KV 降到四分之一(262,144 时 16 GiB 对 64 GiB)。卡在剩下四分之一的全注意力层仍按长度涨;容量有限,3:1 是实验选出来的。
- 解决了每通道一个衰减;g_min = −5 让 16 token 块内累积不低于 −80,e⁸⁰ ≈ 5.5 × 10³⁴ 在 BF16 范围内(上限约 3.4 × 10³⁸),慢路径删除。卡在MiniMax M1 用线性混合、M2 又退回全注意力:大规模下多跳推理缺陷、训练受访存限制、低精度与缓存难题(官方博客)。
- 解决了lightning indexer 每个 query 只挑 top-2048 条做核心注意力。卡在省计算不省内存:KV 一条不少,每 token 48,068 B;indexer 本身仍要扫全部前文。
- 解决了V3.2 每 token 48,068 B → V4-Flash 3,514 B → V4.1-Flash 890 B(1M 时 0.87 GiB)。卡在是近似:V4.1 自陈 Bounded Replay「数学上不等价」、选择误差可能在未测过的边界情况退化。
③ 训练 4K,使用 128K
- 解决了训练与使用同一个长度,不需要任何折算。卡在注意力项随长度涨:Qwen3-32B(64 层全注意力)在 131,072 时注意力项是 6N 的 215%;早期长序列还带来梯度方差极端值(Li 2021)。
- 解决了DeepSeek-V3 的 14.8T token 全在 4K,之后两段各 1,000 步扩到 32K、128K,只占全部训练 token 的 0.84%;Llama 3 405B 六段、约 800B token。卡在长序列阶段的数据要专门配(长度上采样、领域均衡、合成跨全文任务)。
- 解决了K3:8K → 64K → 256K → 1M(NoPE 也照走课程);V4.1 注意力从头就是压缩稀疏的,直接从 64K 起训。卡在各家配方大多只公开阶段、不公开每段 token 数,无法横向比较成本。
- 解决了每个位置多学一个更远的目标;推理时当草稿,接受率 α 时每步期望产出 1 + α 个 token。卡在DeepSeek-V3 第 2 个 token 接受率 85%–90%,实测 1.8 倍 TPS;V4.1 预训练干脆去掉 MTP,没有公开消融。
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | 让模型能用长上下文,又不让预训练的大部分 token 付长序列的价钱、也不在训练初期引入长序列的不稳定 |
| ② 数学上为什么可能有效? | 注意力项随 T 线性增长的记账 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条只数矩阵乘的 FLOPs 公式。 出处待补 ;「先在短序列上学会语言,长程能力只需少量数据激活」是理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条作者的假设:按任意位置取用信息的能力大多已在预训练里学到。 出处Fu et al. 2024(需联网) ↗需联网 |
| ③ 实验上为什么最后选了它? | ABF 的对照实验;各家配方(Llama 3、DeepSeek-V3、Qwen3、K3)全部先短后长;V4.1 这个反例说明它取决于注意力的成本 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条作者自报;配方之间没有同条件对照。 出处Xiong et al. 2023;各家技术报告(需联网) ↗需联网 |
一句话
注意力的计算随长度涨,所以先在短序列上把语言学会,最后用很少的 token 把长度一段段拉上去;注意力本身变便宜之后,这条课程也在缩短。
先停在这里:这一章的主线到此结束:参数(MoE)、注意力(线性 / 稀疏)、长度(课程)三条「更大更省」都走完了。
再深一层:岔路课看训练目标本身还能不能更「省」——只预测下一个 token 太短视吗?然后去实验课看我们自己的 MoE。
下一个缺口
模型会续写、能读长文,可它只会续写——怎么让它听话? → C12 后训练:从续写到听话、推理、做事