最近模型从 Dense 切到了 MoE,MFU 也相应地暴跌了,大家直觉上觉得 Expert 被切的很小,所以计算强度上不去,但实际切分完的维度至少也有 1024,MFU 暴跌的原因一定不来自这里。深入理解这个问题,就是理解 GPU 的分布式并行计算,要在计算和访存 bound 之外,引入通信 bound,而解决吞吐和 MFU 的问题的手段,就是设计合理的 GPU并行策略,做好 GPU 计算和通信的遮掩(overlap)。 DeepSeek 的 H800 和昇腾卡,8 卡 nvlink 高速互联,跨节点都是 IB(InfiniBand)低速网络,我们手里虽然有 B200,但实际也也没用上 NVL72,所以DeepSeek 的并行策略有普适的借鉴意义——硬件基础相似,低成本方案,新的 MoE 的方案也做了开源。
2026 年了,一个 LLM 的训练流程并不陌生——pre-train,SFT,RLHF/RLVR。但实际这是一个领域 LLM 的训练方案,比如 Coder/Match/文本专家,怎么整合成一个混合通用模型呢? 最近的 DeepSeek V4技术报告把Post-Train 讲流程讲的更细致了,它先是 pre-train 得到一个 Base-Model,然后先按领域(数学、代码、agent、指令跟随等)分别训练 10 几个专家模型,每个专家都走过 SFT + GRPO 的完整 RL 流程,在自己领域里练到极致。然后关键的一步来了:把这些专家"合成"一个统一模型时,不是让 student 去抄 teacher 的输出分布,而是让 student 自己先 rollout 生成回答,再让多个 teacher 在 student 自己写出来的轨迹上逐 token 给反馈。
TCA 是 GPU 的核心算力部件 Tensor Core 的时间周期的激活比率,它和 MFU 理论上应当非常接近,日常中会出现 10%~20% 的 GAP,相对稳定,我们就以观察 TCA 为准了。 本文的契机是,当我尝试优化 MFU,拿TCA 作为一个辅助的观察指标,我发现他们之间的 GAP 在一些特殊情况下是不稳定的。由此开始拆解MFU 和 TCA 的 GAP,发现了GPU 的时钟频率在变,矩阵维度不是cuBLAS选择的 kernel shape 的整数倍导致的padding 计算浪费,以及最诡异Flash Attention 2 的 TCA 是 51%,MFU 不到 8%,时钟频率矫正后TCA稳定的是 MFU的 4 倍!
深度网络依赖LayerNorm(RMSNorm),这创造了局部的尺度不变性(Scale Invariance),它带了独特的梯度动力学(Gradient Dynamics)。在这个独特的动力学场域中,我们关于机器学习的直觉被颠覆了,Norm的物理含义从特征强度表示变成了学习进度的旋钮,Norm理论上稳步增加,SGD自带学习率衰减,但是刹车踩的太狠导致了学习的早停,而Weight Decay从正则化项进化为有效学习率的动态调节阀。AdamW如何成为标配:Adam做到了梯度的步长恒定,有效学习率的平缓刹车;Warmup来处理训练早期的权重过小(梯度爆炸)和二阶矩估计不准的问题;AdamW修正了L2正则的问题,引入Weight Decay,把“方向更新”和“进度控制”拆成两个干净的旋钮。