# 数值精度、优化器与训练稳定性研究账本 > 状态:第一轮证据框架 > 研究截止:2026-07-29 > 课程位置:专题 09「数值精度、优化器与训练稳定性」 > 锚点:Kimi K2 §2.1 / Appendix D–E、Kimi K3 §2.3 / §2.5 / §3.3 / §4.1.4 / §5.2.2、DeepSeek LLM §2.4、DeepSeek-V3 §3.3 / Appendix B、DeepSeek-V4 §2.4 / §3.4.1 / §4.2.3 / §5.2.1 > 目标:让读者理解“一个数怎样表示、一次乘法怎样累加、一个梯度怎样变成矩阵更新、一次训练为什么突然崩掉”,并能准确阅读 FP8、MXFP4、Muon、QK-Clip 与 QAT 报告。 > 原则:P0 原论文 / 正式技术报告 / 开放标准优先;P1 作者实现与技术博文用于定义原始 Muon;Grok 只提供 discovery leads;所有性能数字保留作者报告边界。 --- ## 0. 本章先拆掉五个误区 ### 误区一:模型用 FP8 训练,就是所有东西都变成 FP8 不是。一个训练 step 至少包含: ```text 参数存储 → 前向输入 → 乘法 → 部分和累加 → 激活输出 → 反向激活梯度 → 权重梯度 → 跨卡通信 → optimizer moments → master weights → checkpoint ``` 每个角色可以用不同格式。DeepSeek-V3 的核心 GEMM 输入用 FP8,但 embedding、output head、 attention、normalization、router 等保留 BF16 / FP32;master weights、累计梯度保留 FP32, optimizer moments 可用 BF16。把这套“混合角色”写成“全 FP8”会直接误导。 ### 误区二:位数减半,速度必然翻倍 位数变少可以降低: - 每个值的存储字节; - HBM 与互连搬运的字节; - 某些硬件矩阵单元的面积和能耗; - 特定芯片上的矩阵乘峰值成本。 但端到端速度还取决于: - 芯片是否有原生指令; - shape 是否匹配 Tensor Core; - quantize / dequantize / scale 的开销; - 累加是否要频繁 promotion; - kernel 是否融合; - 工作负载是 compute-bound 还是 memory / communication-bound; - 未量化算子占比。 因此页面只展示“理论数据量 / 指定硬件能力”,不把它冒充真实训练 speedup。 ### 误区三:低精度只是“小数不够准” 低精度至少有三种不同失败: 1. **Overflow**:绝对值超过最大可表示范围,变成饱和、Inf 或 NaN; 2. **Underflow**:太小的值变成 subnormal 或 0; 3. **Rounding noise**:仍在范围内,但落到相邻格点,细小更新被吞掉。 Exponent 位主要决定“能装多大 / 多小”,mantissa 位主要决定“同一数量级内能分多细”。 scale 可以移动可表示窗口,却不能凭空增加格点数量。 ### 误区四:优化器稳定,模型就稳定 一次 loss spike 可能来自: - attention logits; - residual / layer depth; - SwiGLU 乘法 outlier; - Adam 二阶矩滞后; - Muon update spectrum; - MoE router 与 expert outlier 的反馈; - 低精度 scale / accumulator; - 数据异常; - kernel / collective / hardware 错误。 优化器只是一层。K3 同时用 Per-Head Muon、weight clipping、RMSNorm、SiTU-GLU; DeepSeek-V4 同时用 hybrid Muon、QK RMSNorm、SwiGLU clamping、Anticipatory Routing 和确定性 kernel。 ### 误区五:PTQ、QAT、低精度微调、低精度预训练是一回事 | 范畴 | 什么时候量化 | 参数是否继续学 | 主要目标 | |---|---|---|---| | PTQ | 完成训练后 | 通常不做全模型训练 | 快速压缩部署 | | QAT | 训练 / 微调时模拟或执行量化 | 是 | 让模型适应量化误差 | | QLoRA 类 | 基座 4-bit 存储,adapter 训练 | 基座通常冻结 | 降低微调显存 | | 低精度预训练 | 从头或长程训练中低精度计算 | 是 | 降低训练计算 / 通信 / 激活成本 | | Fully quantized training | W/A/G 等广泛低精度 | 是 | 把训练本身推进到极低位 | 一句话总纲: > 数值工程不是选一个 dtype;它是在一条完整训练与部署数据流里,为每种 tensor 角色分配范围、精度、存储、计算与恢复防线。 --- ## 1. 十张不能混在一起的账 | 账本 | 核心问题 | 最小字段 | 常见误读 | |---|---|---|---| | N1 表示 | 一个 bit pattern 代表什么值 | sign / exponent / mantissa、subnormal、NaN/Inf | 只比较 bit 数 | | N2 缩放 | 可表示窗口怎样移动 | per-tensor / channel / token / tile / block、scale dtype、axis | 把 block scale 当无成本 | | N3 计算 | 哪些算子真正用低精度乘法 | operator、input dtype、hardware instruction | “模型 FP8”=所有算子 FP8 | | N4 累加 | 小乘积在哪里、以多少位求和 | accumulator、promotion interval、reduction tree | 只看输入 dtype | | N5 存储与通信 | 哪些 tensor 以低精度缓存 / 发送 | activation、gradient、optimizer state、KV、checkpoint | 计算快=显存也同比下降 | | N6 更新 | 梯度如何变成参数更新 | momentum、preconditioner、update RMS、weight decay | AdamW 与 Muon 只是不同公式名 | | N7 参数化 | 宽度、深度、head 如何改变更新尺度 | init、μP、logical matrix、head partition | 小模型超参直接复制 | | N8 稳定性 | 哪个可观测量先异常 | max / percentile / norm / spectrum / saturation | 只看 loss | | N9 恢复 | 异常时怎样止损和复现 | detect、skip、clip、rollback、determinism、checkpoint | rollback 等于解决根因 | | N10 证据与经济 | 增益对什么基线、硬件与预算成立 | model、Token、hardware、quality、wall-clock、energy | 作者峰值吞吐外推到所有系统 | --- ## 2. 浮点数显微镜 ### 2.1 三个字段 典型二进制浮点数可写成: ```text (-1)^sign × significand × 2^exponent ``` - sign:正负; - exponent:数量级; - mantissa / fraction:同一数量级中的细分; - normal 数通常有隐含 leading 1; - subnormal 用更少有效位换取逐渐下溢; - 特殊编码可用于 ±0、Inf、NaN。 ### 2.2 常见格式对照 | 格式 | 位布局 | 约最大有限值 | 最小 normal | 单位附近间距 | 直觉 | |---|---:|---:|---:|---:|---| | FP32 | 1 / 8 / 23 | 3.4e38 | 1.18e-38 | 1.19e-7 | 范围和精度都宽,成本高 | | FP16 | 1 / 5 / 10 | 65,504 | 6.10e-5 | 9.77e-4 | 尾数较细,范围明显窄 | | BF16 | 1 / 8 / 7 | 3.4e38 | 1.18e-38 | 7.81e-3 | 保留 FP32 范围,牺牲细度 | | FP8 E4M3 | 1 / 4 / 3 | 448 | 1.56e-2 | 1.25e-1 | 更精细,范围较窄 | | FP8 E5M2 | 1 / 5 / 2 | 57,344 | 6.10e-5 | 2.5e-1 | 范围更宽,格点更粗 | | MXFP4 | block scale + E2M1 element | 取决于共享 scale | 取决于共享 scale | 极粗 | 用局部共享尺度补偿 4-bit 元素 | 注意: - “单位附近间距”是教学用 machine epsilon 直觉,不等于全数轴统一误差; - E4M3 / E5M2 数字按 FP8 Formats 论文定义; - MXFP4 必须连同 block size、scale dtype 与 axis 一起描述。 ### 2.3 为什么 BF16 比 FP16 更适合大模型训练 Kalamkar et al. 2019: - BF16 与 FP32 都用 8-bit exponent,因此动态范围相近; - BF16 尾数只有 7 bits,因此细节精度低于 FP16; - 论文在多种工作负载上报告无需 FP16 那样的 loss-scaling 调参即可匹配 FP32。 不能外推成: - BF16 永不 overflow; - BF16 所有算子都足够准确; - optimizer state / gradient accumulation 可随意降到 BF16。 DeepSeek LLM 的公开做法正体现边界:主训练 BF16,但梯度在 FP32 累加; cross entropy kernel 按需把 BF16 logits 转 FP32。 ### 2.4 Rounding 不是无害格式转换 确定性 round-to-nearest: - 可重复; - 很小的同方向更新可能反复变 0。 stochastic rounding: - 按相邻格点距离随机选择; - 期望上可以保持无偏; - 会引入随机性与实现成本; - 对低精度梯度同步 / update 尤其重要。 Gupta et al. 2015 在 16-bit fixed-point 训练中展示 stochastic rounding 的关键作用; DeepSeek-V4 在把 MoE gradient 通信量化到 BF16 时明确使用 stochastic rounding, 再在本地 FP32 求和,避免低精度 collective 累加误差。 --- ## 3. 从 FP16 mixed precision 到 FP8 / MXFP4 ### 3.1 2017:mixed precision 三件套 Micikevicius et al. 2017/2018 §3: 1. **FP32 master weights** forward / backward 使用 FP16 copy;真正累积小 update 的 master copy 保留 FP32。 2. **Loss scaling** 放大 loss,使反向小梯度进入 FP16 可表示范围;更新前再 unscale。 3. **FP32 accumulation** FP16 乘积在 FP32 输出中累加,再按需要写回较低精度。 关键边界: - FP16 小于 `2^-24` 的值会变 0; - scale 太大又会 overflow; - overflow 后更新权重会产生不可逆 NaN,因此动态 loss scaling 会检测并跳过 step; - “乘法输入低精度、累加高精度”从一开始就是核心,而不是后来补丁。 ### 3.2 2022:FP8 是两个格式,不是一个 FP8 Formats for Deep Learning: - E4M3:4 exponent + 3 mantissa,推荐 weight / activation; - E5M2:5 exponent + 2 mantissa,推荐 gradient; - 输入需通过 scale 移入可表示区间; - 输出通常以更高精度产生; - nonlinear、normalization、optimizer update 等可保留高精度; - 是否使用 per-tensor scale 由网络决定。 论文自己的限制: - 格式论文不规定 scale heuristic; - 许多训练实验是模拟格式,而不是同一硬件上的端到端系统结果; - FP8 并不取消混合精度,只把角色划分做得更细。 ### 3.3 2023:Microscaling 的关键不是 FP4,而是“局部共享范围” Rouhani et al. 2023 §2: ```text MX block = one shared scale X + k scalar elements P1…Pk real value vi = X × Pi ``` 公开 concrete formats: - block size `k = 32`; - scale format `E8M0`; - MXFP8 element:E4M3 / E5M2; - MXFP6 element:E2M3 / E3M2; - MXFP4 element:E2M1; - MXINT8 element:INT8。 粒度变小的收益: - 一个极端 outlier 只压缩同 block 的有效精度; - sub-8-bit 才有机会覆盖复杂 tensor 分布。 代价: - 每 32 个值多一个 scale; - scale axis 是语义的一部分; - transpose 可能改变 scale axis,量化与 transpose 不可交换; - conversion recipe 与 clipping 会影响结果; - vector op 仍常用 BF16 / FP32。 ### 3.4 DeepSeek-V3:FP8 成功靠的是一整套角色分配 DeepSeek-V3 §3.3: #### GEMM - Fprop、Dgrad、Wgrad 的核心 GEMM 输入使用 FP8; - 输出为 BF16 或 FP32; - embedding、output head、MoE gate、normalization、attention 保留原精度; - master weights、weight gradients、optimizer states 保留更高精度。 #### Fine-grained scale - activation:`1 × 128` tile,即 per token / 128 channels; - weight:`128 × 128` block; - 在线按当前 tile / block 计算 scale; - 全部 tensor 使用 E4M3,依靠细粒度 scale 弥补 E5M2 范围。 #### Accumulation - H800 Tensor Core FP8 accumulation 作者测得约 14-bit; - 每 `Nc = 128` 个元素将 partial result promotion 到 CUDA Core FP32 register; - scale 乘法与 promotion 一起完成; - 这是精度—吞吐折中,不是免费 FP32 accumulate。 #### Storage / communication - AdamW first / second moments 用 BF16; - master weights 与 gradient accumulation 用 FP32; - backward cached activations 可用 FP8; - 对 attention backward 敏感激活使用自定义 E5M6; - MoE dispatch 可 FP8,combine 保留 BF16。 #### 证据边界 - 两个约 16B / 230B baseline、约 1T / 0.9T Token 对照中,相对 BF16 loss error < 0.25%; - Appendix B.2 报告:把 Dgrad activation gradient 改成 `128 × 128` block quantization, 16B MoE 在约 300B Token 发散; - 因此“更规整 block 更好实现”并不等于数值上可接受。 ### 3.5 2024:长程训练暴露短实验看不到的 SwiGLU 问题 Fishman et al. 2024: - 短程 FP8 实验可能看不见后期 outlier; - 其 Llama2-7B 实验在约 200B Token 后出现 activation outlier 和 FP8 loss divergence; - 论文把它连接到 SwiGLU 两支 weight 向量的长期对齐; - SwiGLU 在大正输入时近似两个线性项相乘,可呈二次增长; - Smooth-SwiGLU 通过 per-channel scale 抑制进入量化层的 outlier,再在后续权重中吸收逆 scale。 边界: - 这是指定 Llama2 / FP8 delayed-scaling 配方上的作者结果; - 不能证明所有 SwiGLU 模型都会在同 Token 发生同样失稳; - 但它解释了为什么完整训练时长是低精度验证的一部分。 ### 3.6 2025–2026:FP4 的三种完全不同路径 1. **FP4 All the Way** 研究从头 fully quantized training;W/A/G 广泛 FP4,探索 NVFP4、rounding 和 quantization-noise threshold。 2. **DeepSeek-V4 FP4 QAT** post-training 阶段把 MoE expert weights 与 CSA indexer QK path 纳入 MXFP4 QAT; FP32 master → FP4 → lossless dequant to FP8(在其 scale 条件下)→ compute; backward 用 STE 传回 FP32 master。 3. **Kimi K3 deployment-aware QAT** 从 SFT 开始贯穿 RL;MoE expert weights 用 MXFP4,activation compute 用 MXFP8; attention projection、latent MoE projection、shared expert、router 保留更高精度; rollout 与 training 使用相同量化方案以减少 train–inference mismatch。 不能把三者混成“2026 模型都用 FP4 预训练”。 --- ## 4. 量化:对象、粒度、时机 ### 4.1 仿射量化的最小模型 常见 uniform affine quantization: ```text q = clamp(round(x / scale) + zero_point) x_hat = scale × (q - zero_point) ``` - symmetric:zero point 通常为 0; - asymmetric:允许区间中心偏移; - per-tensor:整 tensor 一个 scale; - per-channel:每输出 / 输入 channel 一个 scale; - per-token:每 Token 一个 activation / KV scale; - group / block:一小组共享 scale。 ### 4.2 PTQ GPTQ: - one-shot weight-only PTQ; - 用 calibration activation 和近似二阶信息补偿量化误差; - 作者报告可在约 4 GPU-hours 内量化 OPT-175B 到 3/4 bit; - 不代表 activation、KV、训练梯度都已量化。 SmoothQuant: - 对数学等价的 channel rescaling,把 activation outlier 难度迁移到 weight; - 主要服务 W8A8 inference; - 仍需校准 scale,且低到 4-bit 时问题不同。 ### 4.3 QAT Jacob et al. 2018 §3: - 变量与主计算仍以 floating point 保存; - forward 插入 fake quantization,模拟 inference rounding / clamp; - backward 继续传梯度; - fake-quant 节点位置必须匹配真实部署图。 LLM-QAT: - 用模型自身生成数据做 data-free distillation; - 同时研究 weight、activation、KV cache; - 作者在 LLaMA 7B/13B/30B 上报告低于 8 bit 时优于其 PTQ baseline; - 论文也明确 4-bit activation 在其设置中仍不理想。 ### 4.4 QLoRA 的精确边界 QLoRA: - frozen pretrained base 用 4-bit NF4 storage; - 计算时 dequant 到 BF16; - 训练 LoRA adapter,而不是完整 4-bit base update; - double quant 减少 scale 元数据; - paged optimizer 处理长序列显存峰值。 所以 QLoRA 证明“低显存微调可行”,不证明“从头 4-bit 预训练等价”。 --- ## 5. 优化器:从逐坐标到矩阵几何 ### 5.1 SGD / Momentum ```text m_t = μ m_(t-1) + g_t θ_t = θ_(t-1) - η m_t ``` 优点: - 状态少; - 更新含义直接; - 通信 / sharding 容易。 LLM 常见困难: - 不同参数坐标 / layer 的梯度尺度差异大; - 高 LR 可用区间窄; - 要靠参数化、归一化和精细 schedule 补偿。 ### 5.2 Adam ```text m_t = β1 m_(t-1) + (1-β1) g_t v_t = β2 v_(t-1) + (1-β2) g_t² m_hat, v_hat = bias correction θ_t = θ_(t-1) - η m_hat / (sqrt(v_hat) + ε) ``` 直觉: - momentum 平滑方向; - second moment 给每个坐标不同步长; - 小梯度坐标不必永远被大尺度坐标淹没。 代价: - 两份状态; - 逐元素 preconditioning 丢掉矩阵结构; - `ε`、β2 与长程非平稳梯度会影响实际更新; - optimizer state 常成为显存主项。 ### 5.3 AdamW:weight decay 不是 L2 penalty 的别名 在 SGD 中,L2 gradient 与 weight decay 可在适当缩放下等价; 在 Adam 中,若把 `λθ` 混入 gradient,它也会被 `v_t` 的自适应分母改变。 AdamW: ```text θ_t = (1 - ηλ) θ_(t-1) - AdamUpdate(g_t) ``` 把“根据 loss 更新”与“直接收缩权重”分开。 ### 5.4 Adafactor:省的是 second moment,不是免费 Adam 对矩阵 `V ∈ R^(n×m)`,不保存每元素 second moment, 而保存 row / column statistics,用 `O(n+m)` 近似 `O(nm)`。 论文还强调: - 去掉 momentum 可再省一份状态; - stale second-moment estimator 可造成过大 update; - update clipping 应裁真正的 adaptive update,而不仅是原始 gradient; - relative step size 把参数 RMS 纳入步长。 ### 5.5 Shampoo:保留矩阵 / tensor 结构 Shampoo 为张量每个 mode 维护预条件统计,并对 gradient 做 Kronecker 型变换。 收益: - 比逐坐标 Adam 更尊重矩阵结构; - 为后来的矩阵级 optimizer 提供对照。 代价: - 预条件矩阵与矩阵根昂贵; - 大模型需要 blocking、低频更新和分布式实现; - 首版课程只作为“结构化 preconditioner”桥梁,不给出生产优胜排名。 ### 5.6 μP:不是 optimizer,而是让 scale-up 的更新语义一致 Tensor Programs V: - standard parametrization 下,宽度变化会改变 activation / update 尺度; - Maximal Update Parametrization 设计不同 parameter group 的 init / LR scaling; - 在作者实验中,小代理模型调出的超参数可零样本迁移到更宽模型。 边界: - 主要解决宽度,不自动覆盖深度、数据、batch、optimizer 切换; - 实现需要正确区分 matrix-like 与 vector-like 参数; - 它与 optimizer 可以组合,不是 Adam / Muon 的直接替代。 ### 5.7 Muon:对 momentum matrix 做 approximate orthogonalization 原始 Muon / Moonlight 公式: ```text M_t = μ M_(t-1) + G_t O_t = NewtonSchulz(M_t) ≈ U V^T W_t = W_(t-1) - η O_t ``` 若 `M = UΣVᵀ`,`UVᵀ` 可视作把非零 singular values 拉近 1, 从而避免 update 只沿少数 dominant direction。 重要澄清: - 生产实现不做完整 SVD; - Newton–Schulz 用矩阵乘迭代近似; - 只适合 logically independent 2D matrix parameter; - embedding、norm、bias、head 等常由 AdamW 处理; - 矩阵 shape 与 partition 会改变 update RMS。 ### 5.8 “Muon is Scalable” 的两个关键补丁 Moonlight / Liu et al. 2025: 1. **Weight decay** vanilla Muon 长训时 weight / layer output RMS 增长,甚至越过 BF16 高精度范围; 加 AdamW-style decay 改善作者 over-train 实验。 2. **Consistent update RMS** full-rank `A×B` matrix 的理论 Muon update RMS 约 `1/sqrt(max(A,B))`; 论文乘 `sqrt(max(A,B)) × 0.2`,让矩阵间尺度一致并复用 AdamW LR。 作者报告: - compute-optimal scaling 实验约 2× compute efficiency; - 相同 loss 约需 AdamW 52% FLOPs; - Moonlight 3B / 16B MoE 训练 5.7T Token。 这些是指定模型族与调参协议的作者结果,不是 Muon 普遍定理。 ### 5.9 Kimi K2:MuonClip K2 观察: - Muon 在大尺度更容易出现 attention logit explosion; - 9B-active / 53B-total 中间实验 vanilla Muon max logits 很快超过 1000; - attention logit 由 `QKᵀ / sqrt(d)` 决定,Q / K weight spectral norm 增长会被乘积放大。 QK-Clip: ```text Smax_h = per-head max pre-softmax logit γ_h = min(1, τ / Smax_h) rescale head-specific Q / K weights after optimizer step ``` MLA 细节: - `qC`、`kC` 各乘 `sqrt(γ_h)`; - `qR` 乘 `γ_h`; - shared `kR` 不动,避免影响其他 heads。 K2 设置: - `τ = 100`; - 前 70k steps 有 12.7% heads 至少触发一次; - 后期自行降到阈值下,clip 不再触发; - 报告 15.5T Token 训练未观察 loss spike。 作者假说而非定理: - Muon update spectrum 更高 rank; - weight 与 update singular direction 更可能对齐; - `Wq Wkᵀ` 再放大 spectral norm。 ### 5.10 Kimi K3:Per-Head Muon K3 不对完整 Q / K / V projection momentum 统一正交化,而按 head block 分开: - 避免大 scale head 主导共享矩阵 update; - 让不同 head update scale 更均衡; - tall per-head block 的 Newton–Schulz 更便宜; - 报告称提升大尺度训练稳定性。 训练 recipe 同时保留 K2 weight clipping,因此: ```text Per-Head Muon = 更新几何 QK-Clip = 越界保护 ``` 不能把两者合成一个算法名,也不能说 Per-Head Muon 已取代 QK-Clip。 ### 5.11 DeepSeek-V4:Hybrid Muon–AdamW DeepSeek-V4: - majority modules:Muon; - embedding、prediction head、mHC static bias / gate、RMSNorm weights:AdamW; - Muon momentum `0.95`、weight decay `0.1`、update RMS scale `0.18`; - hybrid Newton–Schulz:前 8 次快速系数,后 2 次稳定到 singular value 1; - Q / KV 可直接 RMSNorm,因此不使用 K2 QK-Clip。 系统实现: - dense matrix 通过受限 ZeRO group 与 knapsack 分配; - MoE expert matrix 保持逻辑独立,不切断单矩阵; - 相同 shape 合并做 batched Newton–Schulz; - BF16 matrix multiplication 做 NS; - MoE gradient stochastic-round 到 BF16 通信,再本地 FP32 sum。 这说明 optimizer 公式、参数分组与分布式拓扑是一个整体。 --- ## 6. 稳定性不是一个故障,而是五条反馈环 ### 6.1 深度 / residual 反馈 症状: - model update 随深度累积; - residual branch 过大; - gradient vanishing / exploding; - early training 直接卡进坏状态。 防线: - warmup; - scaled initialization; - Pre-LN / RMSNorm; - residual scaling; - DeepNorm; - K3 Block AttnRes / DeepSeek mHC 等新结构需各自稳定性证明。 DeepNet: - 把 Post-LN 失稳定位为 early model update 过大; - 用 residual up-scaling + branch weight down-scaling 让更新随深度有界; - 作者展示可训练 1000-layer Transformer。 ### 6.2 Attention logit 反馈 ```text weight norm / spectral norm ↑ → ||Q||, ||K|| ↑ → max(QKᵀ) ↑ → softmax 近 one-hot,entropy ↓ → gradient 与 head dynamics 更尖锐 → 进一步推动 weight growth ``` 可选防线: - QK L2 normalization + learned temperature; - QK LayerNorm / RMSNorm; - logit soft-cap; - QK-Clip weight rescaling; - z-loss 管 output logits,不与 attention logits 混同。 ViT-22B: - 8B 视觉模型无 QK norm 时 attention logits 超过 50,000; - QK LayerNorm 让 `1e-3` LR 在更大 scale 保持稳定。 Small-scale proxies: - 用小模型 + 高 LR 复现 attention / output logit 不稳定; - QK LayerNorm + z-loss 使作者设置跨三数量级 LR 可训练; - 这是一种研究代理,不保证覆盖 data / system / MoE 全部故障。 ### 6.3 Activation / SwiGLU 反馈 SwiGLU: ```text (xᵀw_up) × Swish(xᵀw_gate) ``` 两支都大时,乘积可远大于单一 GeLU / ReLU。 防线谱系: - Smooth-SwiGLU:scale 转移,函数等价; - hard clamp:限制 linear / gate 分支; - K3 SiTU-GLU:两支分别用 smooth tanh cap; - PowLU:另一种 bounded / stable activation 研究。 K3 SiTU-GLU: ```text β1 tanh(Wg x / β1) × sigmoid(Wg x) × β2 tanh(Wu x / β2) β1 = 4, β2 = 25 |output coordinate| < β1 β2 = 100 ``` 它在原点附近一阶匹配 SwiGLU,极大值时有界;不是简单 hard clamp。 DeepSeek-V4: - linear component clamp 到 `[-10, 10]`; - gate component upper cap `10`; - 报告称两款 V4 训练均使用,未观察性能损失; - 机制理论仍明确写为 open question。 ### 6.4 Optimizer-statistic 反馈 Wortsman et al. 2023 VLM: - loss spike 常发生在 squared gradient 被 AdamW second moment 低估后 1–8 steps; - gradient clipping 发生在 adaptive scaling 前,未必能限制真正 update; - 其 AdamW–Adafactor hybrid 解决指定 CLIP ViT-H 实验的 spike。 Adafactor 更早已区分: - gradient clipping:裁 `g`; - update clipping:裁 preconditioned update。 Muon 的风险不同: - 不用逐坐标 second moment; - 但 matrix spectrum、shape-based RMS、Q/K logit 放大成为核心。 ### 6.5 MoE routing / expert outlier 反馈 DeepSeek-V4 公开报告: ```text expert outlier → routing 更偏向某些 expert → 被选 expert 接收更多异常输入 / update → outlier 与 routing 互相强化 → loss spike ``` Anticipatory Routing: - step `t` feature 用当前 `θ_t`; - routing indices 用历史 `θ_(t-Δt)` 预计算; - spike 时短 rollback 并临时启用; - 预计算本身作者报告约 20% wall-clock overhead; - 动态启用后整体额外开销可忽略。 这是一种 break-the-loop 工程策略,不是通用 MoE 理论。 --- ## 7. 一个稳定性控制室应该监控什么 | 信号 | 统计 | 它能提示什么 | 它不能证明什么 | |---|---|---|---| | training / validation loss | raw、EMA、per-domain | 已经影响目标 | 根因 | | attention logits | max、p99.9、per-head | Q/K growth、softmax saturation | FFN / optimizer state 正常 | | attention entropy | per-head / layer | 过尖或坍缩 | 一定有错 | | activation | max、RMS、percentile、outlier channel | overflow / quantization risk | gradient update 原因 | | gradient | global norm、per-layer、nonfinite | backward 异常 | adaptive update 真正大小 | | update | RMS、param/update ratio、spectrum | optimizer 施加的实际步长 | forward outlier 根因 | | weight | RMS、spectral norm、singular entropy | 长期增长与 rank | 即刻 loss spike | | quantization | saturation、underflow、SNR、scale history | dtype / scale 失败 | 高精度算子正常 | | optimizer state | moment max/min、scale、staleness | second moment 低估 / overflow | model architecture 正常 | | MoE | per-expert activation、load、drop、bias | router–outlier feedback | dense layer正常 | | system | checksum、nonfinite rank、bitwise replay | hardware / kernel / collective 错误 | 数据 / 算法正确 | 控制动作也要分层: - skip update; - dynamic loss / tensor scaling; - gradient / update clip; - QK normalize / QK-Clip; - activation clamp; - lower LR / longer warmup; - change accumulator; - rollback + replay; - quarantine batch; - temporary routing decoupling。 --- ## 8. DeepSeek 数值主线 ### 2024 · DeepSeek LLM - BF16 training; - FP32 gradient accumulation; - cross entropy 内按需 BF16 → FP32; - AdamW; - gradient norm clip `1.0`; - 每 5 分钟异步 checkpoint,硬件失败最坏损失约 5 分钟。 意义:先把“低精度 compute、高精度关键路径、恢复能力”建立为工程基线。 ### 2024 · DeepSeek-V2 - 继续 AdamW / BF16 主线; - MLA 改变 Q/K 的物化方式; - 这为 K2 选择 QK-Clip 而非直接 QK-Norm 提供结构背景,但不是 V2 自己的 QK-Clip 结论。 ### 2024 · DeepSeek-V3 - 671B total / 37B active; - 14.8T Token; - fine-grained FP8 training; - 1×128 activation / 128×128 weight scale; - FP32 promotion interval 128; - BF16 optimizer moments,FP32 master / accumulated gradients; - 报告整个主训练无 irrecoverable loss spike / rollback。 注意: - 这是作者技术报告结果; - Appendix B.2 同时给出 block Dgrad 导致发散的反例; - 因而“V3 稳定”来自精确角色分配,不是 FP8 自然稳定。 ### 2026 · DeepSeek-V4 - majority modules 改 Muon; - 特定向量 / norm / head 保留 AdamW; - Q / KV RMSNorm 避免 logit explosion,不用 QK-Clip; - hybrid NS + BF16 compute + FP32 local sum; - 训练真实遇到 loss spikes; - Anticipatory Routing + SwiGLU clamping; - post-training 对 MoE experts + indexer QK 做 FP4 QAT; - rollout / inference 使用 native FP4。 这条主线最值得学习的地方: > V3 的“成功 FP8”没有让 V4 停止做稳定性工程;模型、优化器、attention、MoE 与 QAT 每次变化都会重新打开新的失稳路径。 --- ## 9. Kimi 数值主线 ### 2025 · Moonlight / scalable Muon - 从原始 Muon 补上 weight decay; - matching update RMS; - distributed Muon; - 5.7T Token Moonlight; - 作者报告相对 AdamW 约 2× compute efficiency。 ### 2025 · Kimi K2 - 1.04T total / 32.6B active; - 15.5T Token; - MuonClip; - QK-Clip threshold 100; - per-head minimal intervention; - 报告 zero observable loss spike。 ### 2026 · Kimi K3 - 2.78T total / 104.2B active; - 总训练 Token 未披露; - Per-Head Muon; - 保留 K2 weight clipping; - Stable LatentMoE 加 RMSNorm; - SiTU-GLU 两支有界,coordinate bound 100; - most activation backward storage 用 block-wise FP8 + offload; - distributed Muon 用 P2P 只取本地参数所需 shards; - SFT → RL 全程 MXFP4 expert QAT; - rollout / training 相同 quantization scheme。 不能外推: - K3 `2.5×` family-level scaling efficiency 是架构、数据、训练联合变化; - 不是 Per-Head Muon 单项收益; - 不是 MXFP4 throughput; - 不是相对 DeepSeek 的公开对照。 --- ## 10. K2 / K3 / V3 / V4 对照 | 系统 | 主要 optimizer | Attention 防线 | FFN / MoE 防线 | 低精度主线 | 报告边界 | |---|---|---|---|---|---| | DeepSeek-V3 | AdamW | attention 高精度 | fine-grained scale | FP8 pretraining | <0.25% loss error on two baselines;主 run 无不可恢复 spike | | Kimi K2 | MuonClip | QK-Clip `τ=100` | — | 非本章主卖点 | 15.5T;zero observable spike | | Kimi K3 | Per-Head Muon + K2 clip | per-head update + weight clip | RMSNorm + SiTU-GLU | FP8 activation cache;MXFP4 expert QAT | 总 Token 未公开;Per-Head 单项收益未公开 | | DeepSeek-V4 | majority Muon + selected AdamW | Q/KV RMSNorm | Anticipatory Routing + SwiGLU clamp | FP4 QAT + FP8 compute/storage | 训练遇到 spikes;经验补丁理论仍开放 | --- ## 11. 四个互动实验的合同 ### Lab A · Format Microscope 输入: - format:FP32 / FP16 / BF16 / E4M3 / E5M2 / MXFP4; - real value; - scale; - block outlier; - rounding mode。 输出: - 最近 representable value; - absolute / relative error; - overflow / underflow / rounded; - block 内有效精度。 教学边界: - 是格式语义模拟,不是任一 GPU bit-exact implementation; - MXFP4 强制显示 scale 和 block; - NaN / subnormal 的厂商实现差异不做伪精确承诺。 ### Lab B · Mixed Precision Ledger 输入: - parameter count; - activation cache; - compute dtype; - master weights; - gradient accumulation; - optimizer moments; - activation / gradient communication。 输出: - 每种状态 GB; - 总显存 / 通信相对基线; - 风险列表; - preset:BF16 baseline / classic FP16 / V3-like FP8 / K3 deployment-aware。 边界: - 不含 allocator、fragmentation、checkpoint、parallel sharding; - speed 不从 byte ratio 自动推出; - V3-like / K3-like 是教学配置,不是完整生产复现。 ### Lab C · Optimizer Geometry 输入: - 2×2 gradient / momentum matrix; - AdamW / Muon / Per-Head Muon; - momentum、weight decay、RMS matching; - head scale imbalance。 输出: - update matrix; - approximate singular-value balance; - per-head update RMS; - state bytes; - logical matrix partition。 边界: - Newton–Schulz 可视化使用简化迭代; - 不承诺等于生产 kernel; - 2D teaching matrix 不代表真实 loss landscape。 ### Lab D · Stability Control Room 输入: - attention logit growth; - SwiGLU outlier; - quantization scale granularity; - optimizer mode; - MoE routing feedback; - 防线 toggles。 输出: - softmax saturation risk; - activation overflow risk; - update risk; - simulated timeline; - “先看哪个监控量”的解释。 边界: - 不合成伪“总稳定分”; - 使用独立 gauges; - K2 / K3 / V3 / V4 preset 只映射报告公开机制。 --- ## 12. 关键论文链 | 年份 | 来源 | 本章作用 | 证据边界 | |---:|---|---|---| | 2014 | Adam | adaptive moment baseline | 非 LLM 专用 | | 2015 | Limited Numerical Precision | stochastic rounding 前史 | fixed-point / 小模型 | | 2017 | Mixed Precision Training | FP32 master + loss scale + accumulate | FP16 时代 | | 2017 | AdamW | decoupled weight decay | 视觉主实验 | | 2017 | Integer-only QAT | fake quant / QAT 起点 | CNN 部署 | | 2018 | Shampoo | tensor structured preconditioner | 扩展成本高 | | 2018 | Adafactor | factored second moment + update clip | MT Transformer | | 2019 | BFLOAT16 Study | range vs precision | 多领域但非现代万亿 LLM | | 2020 | GLU Variants | SwiGLU 起点 | 未讨论 outlier | | 2020 | QK Normalization | cosine Q/K + learned scale | 低资源 MT | | 2021 | 8-bit Optimizers | block-wise state quantization | 到 1.5B LM | | 2022 | DeepNet | depth / residual stability | 以 MT / 深度为主 | | 2022 | Tensor Programs V | μP / μTransfer | 宽度主线 | | 2022 | LLM.int8 | activation outlier | inference | | 2022 | FP8 Formats | E4M3 / E5M2 标准语义 | scale heuristic 不在范围 | | 2022 | GPTQ | weight-only PTQ | 不含 W/A/KV 全量 | | 2022 | SmoothQuant | W8A8 outlier migration | inference | | 2023 | ViT-22B | QK LayerNorm 与 50k logits | 视觉模型 | | 2023 | Stable low-precision VLM | moment underestimation / SwitchBack | CLIP | | 2023 | QLoRA | 4-bit frozen-base finetuning | 非 4-bit base training | | 2023 | LLM-QAT | data-free W/A/KV QAT | LLaMA ≤30B | | 2023 | Small-scale proxies | high-LR stability proxy | 不覆盖全部生产故障 | | 2023 | MX Formats | E8M0 + 32-block + MXFP4 | 到 1.5B GPT training | | 2023 | FP8-LM | end-to-end FP8 system | 作者硬件栈 | | 2023 | Spike No More | small sublayer / large shortcut | 理论假设与中等模型 | | 2024 | DeepSeek LLM | BF16 + FP32 accumulate | 67B | | 2024 | Deconstructing Optimizers | Adam / Adafactor / Lion 对照 | ≤1.2B | | 2024 | Scaling FP8 to trillion Token | late SwiGLU outlier | Llama2 / delayed scale | | 2024 | DeepSeek-V3 | fine-grained FP8 production recipe | 作者报告 | | 2024 | Muon blog | 原始 Muon 定义 | 技术博文 | | 2025 | Muon is Scalable | decay + update RMS | 作者 scaling law | | 2025 | Kimi K2 | MuonClip / QK-Clip | 作者报告 | | 2025 | FP4 All the Way | fully quantized training | 7B / 200B Token | | 2026 | PowLU | bounded activation 对照 | 新论文 | | 2026 | DeepSeek-V4 | hybrid Muon + FP4 QAT + spike mitigation | 作者报告 | | 2026 | Kimi K3 | Per-Head Muon + SiTU + MXFP4 QAT | 作者报告 | --- ## 13. 正文必须保留的公开未知项 1. K3 总预训练 Token 数与完整 dtype placement 未公开; 2. K3 Per-Head Muon 的单项 ablation 数字未公开; 3. K3 MXFP4 QAT 相对高精度的完整 capability / latency 对照未公开; 4. K2 zero spike 不是独立复现; 5. DeepSeek-V3 `<0.25%` 来自两组 baseline,不是所有 tensor policy 的保证; 6. DeepSeek-V4 Anticipatory Routing 的触发阈值、持续步数与全部 spike trace 未公开; 7. DeepSeek-V4 FP4 QAT 的完整质量 ablation 与硬件端到端收益未公开; 8. Muon 相对 AdamW 的最优性依赖模型族、参数分组、调参预算与 Token regime; 9. 新 Muon 分支快速演化,首版不把未经大规模复现的变体写成继任者; 10. 所有 teaching lab 都是机制模型,不是 bit-exact kernel 或真实训练预测器。 --- ## 14. 一手来源定位摘要 ### Kimi - Kimi K2 §2.1:MuonClip / QK-Clip 公式与 Figure 2; - Kimi K2 Appendix D:QK-Clip 无质量损伤与 self-deactivation; - Kimi K2 Appendix E:Muon logit explosion 假说; - Kimi K3 §2.3.1:LatentMoE RMSNorm; - Kimi K3 §2.3.2 / Appendix B:SiTU-GLU 与 bound 100; - Kimi K3 §2.5:Per-Head Muon; - Kimi K3 §3.3:Per-Head Muon + K2 weight clipping; - Kimi K3 §4.1.4:MXFP4 expert QAT; - Kimi K3 §5.2.2:block-wise FP8 activation cache、P2P Muon。 ### DeepSeek - DeepSeek LLM §2.4:BF16、FP32 gradient accumulation、checkpoint; - DeepSeek-V3 §3.3.1:mixed precision role map; - DeepSeek-V3 §3.3.2:1×128 / 128×128 scale 与 FP32 promotion; - DeepSeek-V3 §3.3.3:optimizer state、activation、communication; - DeepSeek-V3 Appendix B.1:BF16 vs FP8; - DeepSeek-V3 Appendix B.2:block Dgrad divergence; - DeepSeek-V4 §2.4:Muon 与 hybrid Newton–Schulz; - DeepSeek-V4 §3.4.1:distributed Muon / BF16 sync / FP32 sum; - DeepSeek-V4 §4.2.3:Anticipatory Routing / SwiGLU clamp; - DeepSeek-V4 §5.2.1:FP4 QAT / STE / native rollout。 ### 通用论文 - Mixed Precision §3.1–3.3; - BFLOAT16 §1–2 / Table 1; - FP8 Formats §2–3 / Table 1; - MX Formats §2 / Table 1 / Figure 1; - Adam Algorithm 1; - AdamW §2; - Adafactor §3 / §5–6; - μP / TP-V main theorem and transfer experiments; - Muon Scalable §2.2–2.3 / §3; - QK Norm §2; - ViT-22B §2 / Appendix B; - Small-scale proxies §3; - Scaling FP8 §3–5; - QAT Jacob §3; - LLM-QAT §2–3。 --- ## 15. 本地证据缓存说明 主干 PDF / text 已缓存到: ```text research/sources/numerics/ research/sources/training-systems/1710.03740.* research/sources/scaling-laws/2401.02954.* research/sources/moe/2412.19437.* research/sources/reasoning/2507.20534.* research/sources/long-context/2606.19348.* research/sources/kimi-k3/k3_tech_report.* ``` 缓存受 `.gitignore` 排除;公开仓库只提交 canonical URL、原创研究笔记与课程内容, 不重新分发论文全文。