00 TEN LEDGERS
第一步不是选 dtype,而是给每种 Tensor 分配一份数值合同
“FP8 训练”“Muon 更高效”“没有 loss spike”都是不完整句子。 必须继续追问:什么对象、哪个阶段、怎样缩放、在哪里累加、对什么基线、观察了多久。
表示
sign / exponent / mantissa 怎样决定范围、格点与特殊值?
缩放
一个 scale 服务整 tensor、channel、token、tile 还是 32-element block?
计算
哪些 GEMM 真用低精度,哪些敏感算子仍在 BF16 / FP32?
累加
成千上万个低精度乘积在哪里、以多少位求和?
存储与通信
参数、激活、梯度、moments、KV 与 checkpoint 各占多少字节?
参数更新
逐坐标自适应、矩阵预条件与正交化到底改变什么?
参数化
宽度、深度、head 分块怎样改变初始化、LR 与 update RMS?
稳定信号
logit、activation、gradient、update、spectrum 与 saturation 谁先异常?
恢复
scale、clip、skip、rollback、确定性 replay 分别解决哪一层?
证据与经济
增益对什么模型、Token、硬件、质量与 wall-clock 基线成立?
01 NUMBER ANATOMY
Exponent 决定“能装多大”,Mantissa 决定“同一数量级分多细”
二进制浮点数可以先想成一张科学计数法卡片:(−1)sign × significand × 2exponent。 减少 exponent bits 会缩窄动态范围;减少 mantissa bits 会拉大相邻格点。 scale 能移动这扇窗口,但不会增加窗内格点。
正负号
数量级与 overflow / underflow
相邻可表示值的距离
1 / 8 / 23≈ 3.4e38≈ 1.19e−7范围、细度都宽;存储与带宽贵。
1 / 5 / 1065,504≈ 9.77e−4比 BF16 细,但动态范围窄。
1 / 8 / 7≈ 3.4e38≈ 7.81e−3保留 FP32 范围;单位附近只有 128 个刻度 / binade。
1 / 4 / 34480.125更偏细度;常给 weight / activation。
1 / 5 / 257,3440.25更偏范围;常给 gradient。
E8M0 + 32×E2M1由 scale 决定很粗局部共享指数,不能脱离 block 描述。
Overflow 是装不下;Underflow 是小到变 0;Rounding 是还装得下,却落到邻近格点。三者需要不同监控和防线。
四十年格式演进:每次降位都伴随一层新的保护
FP32 成为通用基线
范围与精度宽,但训练规模扩大后,存储与数据搬运成为主要成本。
Stochastic rounding
低精度小 update 不必永远被 round-to-nearest 吞成 0。
FP16 mixed precision
FP32 master weights、loss scaling、FP32 accumulation 组成经典三件套。
BF16
保留 FP32 的 8-bit exponent,牺牲 mantissa,换取更容易训练的动态范围。
FP8 E4M3 / E5M2
前向更偏 E4M3,梯度更偏 E5M2;scale 与 higher-precision output 成为必需角色。
MX formats
32 个窄元素共享 E8M0 scale,把可表示窗口缩小到局部 block。
Fine-grained FP8
DeepSeek-V3 用 1×128 activation tile、128×128 weight block 与 FP32 promotion。
FP4 training / QAT
全量 FP4 训练仍在探索;V4/K3 先把专家与特定路径纳入部署感知 QAT。
02 FP16 → BF16
2017 年的突破不是“直接改 FP16”,而是让高低精度分工
Mixed Precision Training 的经典配方从一开始就有三层保护: FP16 负责大批量存储与乘法,FP32 master 保存小 update,loss scaling 把小梯度移进可表示窗口, FP32 accumulator 再把大量乘积稳定求和。
FP16 working copy
参数、激活与梯度降低存储 / 带宽;Tensor Core 做低精度乘法。
Loss scaling
先放大 loss,再在 update 前 unscale;overflow 时跳过 update 并调 scale。
FP32 master weights
FP16 中小于一个格点的 update,仍能在 FP32 参数里逐步累积。
BF16 为什么更省心?
BF16 与 FP32 都使用 8-bit exponent,所以能覆盖相似数量级;它把成本省在 mantissa。 这通常减少 FP16 式 overflow / loss-scale 调参,但并不意味着所有累加、optimizer state 和 softmax 都可以降为 BF16。DeepSeek LLM 就是 BF16 训练、FP32 累计梯度,并在 cross entropy 内把 logits 临时提升到 FP32。
BF16 比 FP16“全面更精确”
BF16 范围更宽;FP16 在同一数量级的 mantissa 更细。
FP32 accumulate 抵消全部误差
输入已经被量化的误差不会因为高精度相加自动消失。
低位字节能直接换算速度
cast、scale、kernel、shape 与硬件原生支持共同决定端到端收益。
03 FP8
E4M3 与 E5M2 是两种取舍;真正训练时还要带上 scale 与 accumulator
2022 年 FP8 格式论文提出两个 8-bit 编码。E4M3 用一个 exponent bit 换一个 mantissa bit, 更适合相对集中的 weight / activation;E5M2 范围更宽,适合长尾更重的 gradient。 论文同时明确:FP8 input 通常要 scale,数学输出通常以更高精度产生。
- MAX
- 448
- MIN SUBNORMAL
- 2⁻⁹
较多 mantissa,较窄范围。DeepSeek-V3 依靠细粒度 scale,让 forward / backward tensor 都可统一用 E4M3。
- MAX
- 57,344
- MIN SUBNORMAL
- 2⁻¹⁶
范围更宽、格点更粗。格式论文推荐给 gradient;长程 FP8 optimizer 也发现 second moment 更需要 E5M2 范围。
04 MICROSCALING
从“整张地图共用比例尺”到“每 32 个数一把尺”
per-tensor scaling 的麻烦是:一个离群值会把整张 tensor 的 scale 拉大,普通值被挤到少数格点。 Microscaling 把共享范围缩到一个小 block。OCP MX concrete formats 使用 32 个元素共享一个 E8M0 scale; MXFP4 的每个元素本体是 E2M1。
一个 outlier 压缩全部普通值的有效刻度。
异常只影响局部 block;scale 元数据、axis 和转换逻辑成为新成本。
只保存指数型比例尺。
每个值本身极粗。
平均 4.25 bits / value,不含布局 padding。
scale 通常沿 GEMM reduction axis 共享。矩阵 transpose 后,scale axis 也要变化;“先量化再转置”不总等于“先转置再量化”。
05 MIXED-PRECISION ROLE MAP
不要问“模型是什么精度”,要问每个角色是什么精度
FP8 / MX element
缩放后进入矩阵乘;低位吞吐收益主要发生在这里。
FP8 × FP8 / FP4 × FP8
硬件支持决定峰值;没有原生指令就未必更快。
limited / FP32 promoted
内积很长时,累加精度比单次乘法更容易被忽略。
BF16 / FP32
下一算子、residual 或 backward 对输出范围有自己的要求。
FP32
保留小 update;低精度 working copy 可每 step 重新生成。
FP8 / BF16 / FP32
计算、累计和通信可以再次分成三种格式。
FP8 / BF16 / FP32
一阶矩与二阶矩的范围需求不同,不能一刀切。
高精度或部署格式
用于恢复训练的状态与用于线上推理的权重不是同一份契约。
DeepSeek-V3 的公开 role map
关键高精度保留项包括 embedding、output head、MoE gate、normalization 与 attention。 MoE dispatch 可以 FP8,combine 保留 BF16;attention backward 敏感 activation 甚至使用自定义 E5M6。 所以 V3 的亮点不是“大胆全降位”,而是知道哪里不能降。
06 QUANTIZATION TAXONOMY
同样写“4-bit”,可能在回答五个完全不同的问题
便宜、快速
极低位、activation / KV 与分布漂移可能掉点
模型可适应 rounding / clamp
需要数据、反向和 fake/native quant 一致
冻结 4-bit 基座,大幅省微调显存
不等于 4-bit base update 或预训练
训练 GEMM、激活和通信共同受益
长时 outlier、scale 与 accumulator 都需验证
继续压缩训练成本
仍属前沿;Token、模型、硬件边界严格
小 update 仍能积累。
forward 经历部署误差。
输出与 rollout 对齐。
gradient 回到 master weight。
07 OPTIMIZER LINEAGE
优化器演进的核心不是“公式更复杂”,而是更新单位越来越贴近参数结构
SGD
一份梯度,直接沿下降方向走;状态最少,scale mismatch 最直接。
Adam
用逐坐标一阶矩与二阶矩构造自适应步长。
AdamW
把 weight decay 从 adaptive gradient 中解耦。
Adafactor
用矩阵行 / 列统计因子化 second moment,并裁真正 update。
Shampoo
为 tensor 各 mode 建结构化预条件器,代价是矩阵根与状态。
μP / μTransfer
不是 optimizer;让宽度变化时 activation / update 语义保持可迁移。
Muon
momentum matrix 经 Newton–Schulz 近似正交化;再补 decay 与 RMS matching。
MuonClip / Per-Head / Hybrid
把 attention 越界保护、head 分块与 AdamW 参数组接回生产系统。
08 ADAM → ADAMW
Adam 给每个坐标一把尺;AdamW 再把“学任务”与“缩权重”分开
mₜ = β₁mₜ₋₁ + (1−β₁)gₜ平滑方向。
vₜ = β₂vₜ₋₁ + (1−β₂)gₜ²估计逐坐标尺度。
Δθ = −η · m̂ / (√v̂ + ε)不同坐标获得不同有效步长。
θ ← (1−ηλ)θ + Δθ不让 L2 项穿过 adaptive denominator。
为什么 gradient clipping 还不够?
gradient clipping 限制的是 g;Adam 之后的真正 update 还会除以 √v。 当 second moment 低估当前 squared gradient,adaptive update 仍可能过大。Adafactor 因而提出update clipping;2023 年低精度 VLM 工作又观察到 loss spike 常在 second moment 低估后 1–8 steps 出现。
2024/2025 的系统对照在 150M–1.2B decoder-only LM 上发现,除 SGD 外,Adam、带 momentum 的 Adafactor、Lion、Signum 的最优 loss 与 LR robustness 相近。这个结果挑战“Adam 唯一最好”,但规模远小于 K3/V4,不能推翻大模型生产选择。
09 STRUCTURE & SCALE-UP
Adafactor 省状态,Shampoo 看矩阵,μP 保持放大时的更新语义
nm 个 second moments → n+m 个行列统计
省掉完整二阶矩;还提出 update clipping、动态 β₂ 与 relative step size。它不是无损 Adam,momentum 与稳定性配方需要重新选。
不把一张矩阵摊平成独立坐标
为 tensor 各 mode 做结构化预条件;更尊重矩阵几何,却带来矩阵根、blocking、低频更新与分布式成本。
先让“小模型的一步”与“大模型的一步”可比
μP 不是 optimizer;它用参数组相关的初始化 / LR scaling,让宽度变化时超参更可迁移。深度、batch、数据和 optimizer 切换仍要另外研究。
10 MUON
AdamW 问“每个坐标多大”,Muon 问“整张更新矩阵沿哪些方向走”
Muon 先做 momentum,再用 Newton–Schulz 矩阵乘迭代近似 UVᵀ。 如果原 momentum 的 SVD 是 UΣVᵀ,这个变换把非零 singular values 拉向相近尺度, 避免少数 dominant direction 吞掉全部更新。
一张逻辑独立矩阵。
可加 Nesterov look-ahead。
用矩阵乘近似,不做完整 SVD。
Moonlight 配方匹配 AdamW 步长。
少数方向占主导。
方向尺度更均衡。
为什么原始 Muon 不能直接放大?
- 权重增长:Moonlight 报告长训时 vanilla Muon 的 weight / output RMS 持续上升,因此补 AdamW-style weight decay。
- Shape 依赖:
A×Bfull-rank matrix 的理论 update RMS 约为1/√max(A,B),需要 shape-aware rescale。 - 参数分组:embedding、LM head、norm、bias 并非都适合矩阵正交化,通常继续 AdamW。
- 分布式:Newton–Schulz 需要完整逻辑矩阵,不能像逐元素 Adam 那样随意切开。
11 KIMI K2 / MUONCLIP
Muon 学得快,却把少数 attention head 的 logits 推过了悬崖
K2 报告在 9B active / 53B total 中间实验中观察到 vanilla Muon 的 max attention logits 很快超过 1000, 带来 loss spike 与偶发 divergence。RMSNorm 能控制输入 x,但q·k = (xWq)(xWk)ᵀ 仍会把 Q/K weight spectral norm 的增长相乘放大。
QK-Clip 不改当前 forward,而是在 optimizer step 后缩回越界权重
Smaxh = max pre-softmax logit of head hγh = min(1, τ / Smaxh)Wq, Wk ← head-specific rescaleK2 公开设置。
至少触发过一次。
所有 head 曾降回阈值以下。
报告未观察 loss spike。
K2 解释 QK-Norm 不适合其 MLA:key matrix 在 inference 不完全物化。QK-Clip 只缩 head-specificqC/kC/qR,不碰 shared rotary kR。这是一种结构相关选择, 不能简化成“clip 永远优于 normalization”。
12 KIMI K3 / PER-HEAD MUON
K3 把“按 head 监控”推进到“按 head 计算 Muon update”
完整 Q/K/V projection 的 momentum matrix 可能把多个 attention heads 耦合成一个大 block。 大尺度 head 主导共享正交化,小尺度 head 得不到充分归一。K3 把 momentum 沿 head 维切成逻辑块, 每个 head 独立 Newton–Schulz,再组合回 projection。
大 scale head 影响共同 update。
每个 head 独立匹配方向与尺度。
Optimizer 只是 K3 稳定性组合的一层
Per-Head Muon
按 head 平衡 Q/K/V update;tall block 也降低 NS 开销。
K2 weight clipping
训练 recipe 明确继续使用 K2 引入的越界保护。
RMSNorm
expert aggregate 进入 up-projection 前归一。
SiTU-GLU
两支 smooth tanh cap;每坐标输出绝对值小于 100。
K3 的低精度落点:部署感知 post-training
从 SFT 起贯穿 RL:routed expert weights 用 MXFP4,expert input activations 以 MXFP8 计算; attention、latent MoE projection、shared expert 与 router 保持高精度。rollout 与 training 使用同一量化方案, 以减少 train–inference mismatch。K3 总预训练 Token 与完整 dtype map 未公开。
13 DEEPSEEK-V3 / FP8
DeepSeek-V3 的亮点不是“FP8 很勇”,而是把每一处误差路径写成工程选择
Activation 1×128 · Weight 128×128
每 Token 的 128 channels 一把尺;每 128×128 weight block 一把尺。outlier 不再拖累整 tensor。
每 128 个 K 元素 promotion
H800 Tensor Core partial sum 作者测得约 14-bit;定期移到 CUDA Core FP32 register。
Attention / Norm / Router 不降
embedding、output head、MoE gate、normalization、attention 保留原精度。
Activation cache / MoE dispatch FP8
真正节省的不只 GEMM;backward cache 与跨卡 dispatch 同时减字节,combine 仍 BF16。
把 Dgrad activation gradient 也改成规整的 128×128 block,模型发散
在约 16B MoE、约 300B Token 实验中,activation gradient 的 token-correlated outlier 无法被 block-wise grouping 处理。这个失败案例比“FP8 成功”更重要: 量化粒度必须服从数据分布,不能只服从 kernel 布局。
14 DEEPSEEK-V4 / HYBRID MUON + FP4
V3 已经稳定跑完 FP8,V4 仍然遇到新的 loss spikes
V4 改变了 attention、residual、optimizer、上下文和 MoE 规模。任何一项变化都可能重开失稳路径。 报告明确写出训练遇到 notable instability,并公开两个经验补丁,而不是只展示平滑 loss。
Majority Muon · Selected AdamW
embedding、prediction head、mHC static bias/gate、RMSNorm weights 留在 AdamW;其余逻辑矩阵 Muon。
8 fast + 2 stable NS iterations
先快速把 singular values 拉近 1,再用稳定系数精确收尾;Q/KV 可 RMSNorm,所以不采用 QK-Clip。
Anticipatory Routing
spike 后短 rollback,暂时用历史参数预计算 routing indices,打断 router 与 expert outlier 同步反馈。
SwiGLU Clamping
linear branch 限制在 [−10,10],gate branch 上限 10;作者称无性能损失,理论机制仍开放。
MXFP4 QAT
MoE expert weights + CSA indexer QK path;FP32 master 经 FP4 模拟,再 lossless dequant 到 FP8 compute(在报告 scale 条件下)。
BF16 sync · FP32 local sum
gradient stochastic-round 到 BF16 通信,再本地 FP32 相加,避开低精度 collective adder 长链误差。
15 FIVE FEEDBACK LOOPS
Loss 是最后报警器;真正的根因常在几十步、几千步甚至几百 B Token 前出现
深度—残差
防线:warmup · scaled init · Pre-LN / DeepNorm · mHC
Q/K—Softmax
防线:QK norm · soft-cap · QK-Clip · per-head monitor
SwiGLU—低精度
防线:Smooth-SwiGLU · clamp · SiTU-GLU · PowLU
统计量—Update
防线:update clip · β₂ / ε 审计 · update RMS · skip
Expert—Router
防线:per-expert monitor · bounded activation · Anticipatory Routing
稳定性控制室要监控十种信号
结果已受影响,不给根因
Q/K growth 与 softmax saturation
过尖不一定有错,但值得联查
overflow 与 scale 风险
backward 信号;不等于真正 update
optimizer 实际施加的步长
长期增长与 attention 放大
scale、格式与 accumulator
router–outlier feedback
kernel、collective、hardware fault
16 INTERACTIVE LAB
亲手把四张账分开:一个小误差怎样变成系统级风险
先在格式显微镜里观察格点,再看 mixed precision 状态字节;随后用同一组 head scale 对比 AdamW、Muon 与 Per-Head Muon,最后把 K2/K3/V3/V4 的公开防线装进控制室。
INTERACTIVE FOUR INDEPENDENT LEDGERS
数值工程四联实验室
四个视图彼此独立:表示误差、状态字节、更新几何和失稳信号不能合成一个“总分”。
- STATUS
- ROUNDED
- ABS ERROR
- 0.003125
- REL ERROR
- 0.240%
- STORAGE
- 2.000 B/value
8-bit exponent 保留 FP32 级动态范围;7-bit mantissa 让单位附近只剩约 0.78% 的格点间距。
- TEACHING FOOTPRINT
- 8,244 GB
- VS FP32 STATE BASELINE
- 0.0%
- ACTIVATION CACHE
- 96 GB
- GRAD COMM / STEP
- 2,684 GB
教学口径:未分片的参数/梯度/optimizer state + 给定激活缓存;不含 allocator、临时 workspace、 tensor/pipeline/ZeRO sharding。字节减少不能直接换算 wall-clock speedup。
- IMBALANCE
- 1.00×
- PERSISTENT STATE
- 8 B / parameter
- LOGICAL UNIT
- coordinate
softmax 接近 one-hot;先看 per-head max logit。
乘法 outlier 压缩低精度有效格点。
scale 与 accumulator 都可能丢失信号。
expert outlier 与选择可能形成反馈环。
四条独立风险中有 4 条需要干预;loss 可能尚未暴露根因。
17 AUDIT PROTOCOL
看到“FP4 / FP8 / 2× / stable”,至少继续问十二个问题
对象
weight、activation、gradient、KV、moment 还是 communication?
阶段
pre-training、SFT、RL、rollout 还是 inference?
格式
INT、IEEE-like FP、E4M3/E5M2、MXFP4 还是厂商自定义?
粒度
tensor、channel、token、tile、block;block size 与 axis 是什么?
缩放
online / delayed;scale dtype;outlier / overflow 怎样处理?
乘法
硬件是否原生支持;实际 kernel shape 与利用率?
累加
partial sum 位宽、promotion interval、reduction order?
高精度保留
master、norm、router、attention、loss、gradient accumulation 各是什么?
质量基线
与 BF16 / FP16 对什么 loss、任务和训练时长比较?
系统基线
吞吐是 peak GEMM、MFU、tokens/s 还是完整 wall-clock?
稳定性
监控了哪些内部信号;是否有 rollback、skip 或隐藏恢复?
证据
作者报告、独立复现、标准定义,还是教学推导?
- K3 总预训练 Token、完整 dtype placement 与 Per-Head Muon 单项 ablation 未公开;
- K3 / V4 MXFP4 QAT 相对高精度的完整质量—延迟—能耗对照未公开;
- V4 Anticipatory Routing 的完整触发阈值、持续步数与全部 spike trace 未公开;
- Muon 相对 AdamW 的收益依赖模型族、参数分组、调参预算与训练 regime;
- 本章所有互动数值均为机制教学,不是生产 kernel 或真实模型预测。
18 PRIMARY-SOURCE CHAIN
36 个一手节点:先读格式与更新,再进入 Kimi / DeepSeek 生产配方
推荐顺序:Mixed Precision → BF16 → FP8 / MX → AdamW / μP / Muon → QK / SwiGLU stability → DeepSeek-V3 / K2 → K3 / V4。 每个节点只承担它真正证明的部分,不把相邻论文拼成虚假的统一结论。
Adam: A Method for Stochastic Optimization
逐坐标一阶 / 二阶矩基线。
02 / 2015Deep Learning with Limited Numerical Precision
stochastic rounding 与低精度训练前史。
03 / 2017Mixed Precision Training
FP32 master、loss scaling、FP32 accumulate。
04 / 2017Decoupled Weight Decay Regularization
AdamW 与 L2 / decay 边界。
05 / 2017Quantization and Training of Neural Networks…
fake quant 与 QAT 起点。
06 / 2018Shampoo
结构化 tensor preconditioning。
07 / 2018Adafactor
factor second moment 与 update clipping。
08 / 2019A Study of BFLOAT16 for Deep Learning Training
BF16 范围—精度取舍。
09 / 2020GLU Variants Improve Transformer
SwiGLU 原始主线。
10 / 2020Query-Key Normalization for Transformers
Q/K 余弦化与 learned scale。
11 / 20218-bit Optimizers via Block-wise Quantization
optimizer state 的 block-wise 量化。
12 / 2022DeepNet: Scaling Transformers to 1,000 Layers
residual scaling 与 update bound。
13 / 2022Tensor Programs V / μTransfer
跨宽度超参迁移。
14 / 2022LLM.int8()
大模型 activation outlier。
15 / 2022FP8 Formats for Deep Learning
E4M3 / E5M2 交换格式。
16 / 2022GPTQ
近似二阶 weight-only PTQ。
17 / 2022SmoothQuant
W8A8 activation outlier 迁移。
18 / 2023Scaling Vision Transformers to 22 Billion Parameters
QK LayerNorm 与 logit explosion。
19 / 2023Stable and low-precision training…
SwitchBack 与 Adam second-moment spike。
20 / 2023QLoRA
NF4 frozen-base 微调边界。
21 / 2023LLM-QAT
data-free W/A/KV QAT。
22 / 2023Small-scale proxies for large-scale Transformer instabilities
高 LR 小模型研究代理。
23 / 2023Microscaling Data Formats for Deep Learning
E8M0 + 32-element MX block。
24 / 2023FP8-LM
FP8 compute、gradient 与通信。
25 / 2023Spike No More
小 sublayer、大 shortcut。
26 / 2024DeepSeek LLM
BF16 + FP32 gradient accumulation。
27 / 2024Deconstructing What Makes a Good Optimizer…
Adam / Adafactor / Lion 对照边界。
28 / 2024Scaling FP8 training to trillion-token LLMs
长程 SwiGLU outlier 与 Smooth-SwiGLU。
29 / 2024DeepSeek-V3 Technical Report
fine-grained FP8 生产配方。
30 / 2024Muon: An Optimizer for Hidden Layers
Muon 原始定义与实现。
31 / 2025Muon is Scalable for LLM Training
decay、update RMS 与 distributed Muon。
32 / 2025Kimi K2 Technical Report
MuonClip 与 QK-Clip。
33 / 2025FP4 All the Way
fully quantized FP4 training。
34 / 2026PowLU
有界 activation 稳定性对照。
35 / 2026DeepSeek-V4
hybrid Muon、spike mitigation、FP4 QAT。
36 / 2026Kimi K3
Per-Head Muon、SiTU-GLU、MXFP4 QAT。
研究截止 2026-07-29。K3/K2/V3/V4 数字来自正式技术报告;Muon 原始定义来自作者技术博文, 大规模结论来自后续 Moonlight 报告。Grok 产物永久保留在未核验 leads, 正文事实逐项回查本地 PDF / 标准。论文图仅提炼机制,本页全部图形为原创简化重绘。