MFU 与利用率
"训练快不快"需要一个统一的度量。MFU(Model FLOPs Utilization)是事实标准:实际训练吞吐 ÷ 理论峰值算力。它是集群效率的"第一指标"——但它有很多陷阱(数什么 FLOPs、什么算有效)。本章把 MFU 讲透:定义、典型值、低 MFU 的排查方法。
定义:一个数,两个口径
Section titled “定义:一个数,两个口径”有效模型 FLOPs(transformer 训练的标准近似):
两个口径的陷阱:
- HFU(Hardware FLOPs Utilization):按"实际执行的 FLOPs"算(含重计算、padding)——重计算会让 HFU 高但 MFU 低:每层重计算让实际执行 FLOPs ×1.33,但有效工作没变。比较用 MFU,不用 HFU
- 峰值算力的精度:989 TFLOPS 是 H100 BF16 稠密;用 FP8 峰值(1979)或稀疏峰值(×2)作分母,MFU 数字直接翻倍——比较前先对齐分母
典型值:多少算正常
Section titled “典型值:多少算正常”公开的大模型训练 MFU(同口径:BF16 稠密峰值、含通信不含重计算):
| 训练 | MFU | 说明 |
|---|---|---|
| GPT-3 级(A100 时代) | 40–50% | |
| Llama 3 405B(H100,公开数据) | ~40%(含检查点/中断后 ~38%) | 万卡集群的真实值 |
| 优化良好的千卡级训练 | 50–60% | |
| 单卡/节点内小规模 | 55–65% | 通信少 |
| 理论上限 | ~70%+ | 一阶模型的极限 |
两个经验数字:千卡级以内优化好能到 50–60%;万卡级 40% 上下(通信与容错的开销随规模涨)。MFU 30% 以下值得排查,25% 以下有问题。
低 MFU 的排查:按分解定位
Section titled “低 MFU 的排查:按分解定位”MFU 低 = step 时间被浪费。按四段分解(见 profiling)定位:
| 症状 | 原因 | 解法 |
|---|---|---|
| 通信占比 >20% | 梯度同步没重叠 / TP 跨域 | 重叠(按层同步)、TP 收回 NVLink 域 |
| 数据等待 >5% | 数据饥饿 | worker/pinned/预取(见数据加载) |
| 计算 MFU 也低 | 算子效率低 | 融合、pad 维度、精度(见GEMM) |
| step time 方差大 | straggler/抖动 | 锁频、隔离(见straggler) |
| 气泡占比高 | PP 太深微批少 | 减 PP / 加微批(见流水线并行) |
先分解,再对症——没有分解的低 MFU 排查全是猜。
利用率与 MFU 的区别
Section titled “利用率与 MFU 的区别”两个常被混淆的指标:
| GPU 利用率(util %) | MFU | |
|---|---|---|
| 含义 | 有 kernel 在跑的时间比例 | 有效 FLOPs ÷ 峰值 |
| 问题 | kernel 在跑 ≠ 在算有效工作 | — |
| 例子 | 跑逐元素算子:util 100%,MFU 0.06%(见 Roofline) | |
| 用途 | 看断粮/空闲(数据饥饿) | 看算力效率 |
util 高不代表 MFU 高:util 100% 的逐元素负载 MFU 不到 1%。util 用来发现"空转"(数据饥饿、同步等待),MFU 用来度量"算力效率"——两个指标一起看。
提升路径(按收益排序)
Section titled “提升路径(按收益排序)”- 重叠:梯度同步与计算重叠(通信隐藏)——万卡级的最大头
- 融合与精度:算子融合、BF16/FP8(见混合精度)
- batch 拉满:微批打满算力(算术强度,见 Roofline)
- 消气泡:PP 度与微批的平衡
- 消 straggler:锁频、隔离、基线
- 数据不断粮:worker/pinned/预取
每一步都有数字验证(MFU 前后对比)——提升路径是"测出来的",不是"配置出来的"。
- MFU = 6N × tokens/s ÷ 峰值算力(N 是参数量,6 = 前向 2 + 反向 4);比较先对齐分母(精度/稠密度)。
- HFU 含重计算会虚高,比较用 MFU;重计算让执行 FLOPs ×1.33 但有效工作不变。
- 经验值:千卡内 50–60%,万卡 ~40%(Llama 3 实测);<30% 值得排查。
- util(空转检测)与 MFU(算力效率)是两个指标:util 100% 的逐元素负载 MFU <1%。
- 提升路径按收益排:重叠 > 融合精度 > batch 拉满 > 消气泡 > 消 straggler > 数据。
- 先四段分解,再对症下药;每步用 MFU 前后对比验证。
- 集群利用率 — 下一章:集群级的效率
- Profiling:指标与工具 — step 分解的方法
- 算术强度与 Roofline — MFU 的物理上限
- 训练成本模型 — MFU 换算成钱