训练与推理工程
前面各站讲的都是「设计成什么样」,这一站讲这些设计怎么在大规模硬件上真正跑起来——长序列怎么切、专家怎么摆、显存怎么省。也是全教程最后一站。
前缀缓存要改做法。 全注意力每一步的 KV cache 都是上一步的简单增量,prefix cache 顺理成章;线性注意力每一步都在上一步状态上「复写」,每一步的前缀状态都不一样——全存下来,省显存的好处就没了;不存,prefix cache 的加速又享受不到。折中是按 block 粒度缓存。vLLM 按 page 管理 KV 的那套默认层层同构,对 KDA 这种没有长驻 KV 的层要做专门的兼容——混合架构接进现有推理引擎,不是即插即用。
MoonEP · 冗余专家在线规划。 Dropless EP 下每个 token 想去哪个专家就去哪个,不同卡分到的 token 数不一样——执行时间不齐、互相干等,通信前还得先广播一遍「你要收多少」。MoonEP 加少量冗余专家,并从数学上证明:存在一种放置策略能让每张卡的 token 数完全对齐;再用 online planning 提前规划哪些卡放哪些冗余专家。保证的是卡级均衡,专家级均衡只能靠有损手段——上限就卡在这里。
大规模 CPU offload · 全 FP8。 中间计算结果 offload 到 CPU 内存,CPU 和 GPU 一起干活。要不拖慢训练,通信带宽得满足一个不等式——K3 把所有可 offload 的数据都用 FP8 存,体积砍半,正好从「overlap 不动」跨到「overlap 得动」的边界这边。
PP 转存代替 DualPipe。 单向流水线里,靠前的 PP rank 进得早、攒下的 activation 多。K3 不搞复杂的双流水线排布,而是把高显存 rank 的 activation 直接转存到低占用的 rank——用轻量方案规避了 DualPipe 的复杂度。
μon 要整矩阵。 Newton–Schulz 迭代作用在完整矩阵上——不像 Adam 是逐元素优化、参数摊平了随便切。μon 要求每个 rank 把整块矩阵保存下来,在 Megatron 这类切分框架里得专门处理才能用。
多模态的流水线难题。 视觉 token 接入主干前压到 8K,但 encoder 内部按 32K 原长算——就算主干不开 CP,encoder 也得开。VL 数据里有的卡纯文本、有的卡全视觉,PP 各段不均会把流水线打不满;K3 把 encoder 放在 PP 中后段,前段跑浅层主干时,中间闲置的 rank 提前把 encoder 后面的活干掉。
RL 的两个省法。 每条轨迹一个独立 docker,大规模调度本身就是工程活;显存上,reference model 求 objective 时不需要梯度、出梯度之后也不再上场——把它的显存和 policy 模型的 gradient buffer 合起来复用,一个坑两个用法。
这个 2.5× 怎么读。 它不是固定数据集下测的——K2、K3 的数据配方不可能相同。所以 2.5× 是「架构 + 训练配方 + 数据策略」一起换代的综合结果,不是单归因于某个设计。
1.2 MoE 稀疏激活
1.3 架构规格
1.4 工程现实
2.2 深度 AttnRes
2.3 宽度 LatentMoE
3.2 读擦写
3.3 逐通道遗忘门
3.4 Chunkwise
3.5 Sigmoid
3.6 混合注意力
4.2 LatentMoE 尺度
4.3 Quantile Balancing
5.2 后训练
5.3 实测结论
5.4 训练与推理工程