负载类型学
第二部分给了一套分析工具。这一章把它们用到真实负载上。
先说结论:同一批加速器,跑大模型训练能到 40% 的算力利用率,跑推荐系统训练可能只有 4%——而后者并不是"没优化好",它根本不该用算力利用率来衡量。
负载类型决定瓶颈位置。 这是本卷最实用的一条判断。
四个分类维度
Section titled “四个分类维度”| 维度 | 取值 | 决定什么 |
|---|---|---|
| 计算密度 | 稠密 / 稀疏 | 算术强度高还是低(第四章) |
| 数据访问 | 规则 / 不规则 | 有效带宽能拿到峰值的几成(第三章) |
| 状态规模 | 权重主导 / 表主导 / 无状态 | 显存策略与并行方式 |
| 时间约束 | 吞吐导向 / 延迟导向 | 批处理与扩缩容策略(下一章) |
前三个维度决定"卡在哪一层",第四个决定"怎么部署"。
五类典型负载
Section titled “五类典型负载”一、大模型(稠密 Transformer)
Section titled “一、大模型(稠密 Transformer)”| 方面 | 特征 |
|---|---|
| 计算 | 稠密矩阵乘主导,算术强度高(数百–上千) |
| 内存 | 权重与优化器状态主导;推理时中间状态随上下文与并发线性增长 |
| 通信 | 集合通信密集:all-reduce(TP/DP)、all-to-all(MoE) |
| 瓶颈 | 训练:集合通信 + 显存容量;推理解码:显存带宽 |
| 对策 | 多维并行、通信计算重叠、算子融合、量化、批处理 |
这是唯一一类训练时能真正打满矩阵单元的负载,也因此成了硬件厂商的优化目标。
二、推荐 / 广告系统(稀疏 + 稠密混合)
Section titled “二、推荐 / 广告系统(稀疏 + 稠密混合)”| 方面 | 特征 |
|---|---|
| 计算 | embedding 查表(几乎零 FLOPs)+ 小 MLP;总 FLOPs 比大模型低几个数量级 |
| 内存 | embedding 表可达 TB 到几十 TB,远超单机显存 |
| 通信 | 查表结果的 all-to-all,消息小而频繁,对延迟敏感 |
| 瓶颈 | 内存容量 → 访存带宽 → 小消息延迟。算力几乎从不是瓶颈 |
| 对策 | 参数服务器、embedding 分片与多级缓存、CPU/GPU 混合存放、哈希与量化压缩、热 ID 缓存 |
三、视觉与多模态
Section titled “三、视觉与多模态”| 方面 | 特征 |
|---|---|
| 计算 | 卷积或 ViT,稠密、规则、算术强度中等偏高 |
| 内存 | 激活主导(高分辨率、大批量),权重相对小 |
| 数据 | 解码常常是真正的瓶颈——JPEG/视频解码、增强、缩放 |
| 瓶颈 | 数据管道 > 访存 > 算力 |
| 对策 | GPU 上解码、预处理离线化、顺序读友好的分片格式 |
一个常见现象:加了更多加速器反而没变快,因为 CPU 侧的解码成了瓶颈。这时该做的是把解码搬到 GPU,而不是继续加卡。
四、图神经网络与不规则负载
Section titled “四、图神经网络与不规则负载”| 方面 | 特征 |
|---|---|
| 计算 | 聚合操作、稀疏矩阵乘,访问模式随图结构而变 |
| 内存 | 图本身 + 邻居采样的中间结果(采样爆炸) |
| 通信 | 跨分区的邻居访问,最不规则、最难预取 |
| 瓶颈 | 不规则访存与通信;缓存命中率低,向量化困难 |
| 对策 | 图分区、邻居采样、压缩存储、历史嵌入缓存 |
有效带宽在这类负载上可能只有峰值的百分之几——回顾第三章的访问模式表。
五、科学计算与仿真
Section titled “五、科学计算与仿真”| 方面 | 特征 |
|---|---|
| 计算 | 常需双精度(分子动力学、CFD、气候),稠密或结构化稀疏 |
| 通信 | 强扩展——问题规模固定、加节点求更快,对延迟极敏感 |
| 瓶颈 | 通信延迟与同步;节点越多越难扩展 |
| 对策 | 拓扑感知放置、通信避免算法、混合精度求解 |
强扩展 vs 弱扩展是与 AI 负载的根本差异:AI 训练加节点通常同时加批量(弱扩展,通信量不变),科学计算加节点问题规模不变(强扩展,每节点的计算变少而通信不变,扩展性天然更差)。
负载—瓶颈—指标对照表
Section titled “负载—瓶颈—指标对照表”| 负载 | 主瓶颈 | 次瓶颈 | 该看的指标 | 不该看的指标 |
|---|---|---|---|---|
| 大模型训练 | 集合通信、显存 | 算力 | MFU、通信占比、goodput | — |
| 大模型推理 · 首 token 阶段 | 算力 | 显存 | MFU、TTFT | — |
| 大模型推理 · 逐 token 阶段 | 显存带宽 | 显存容量 | MBU、TPOT | MFU |
| 推荐训练 | 内存容量、访存 | 小消息延迟 | 带宽利用率、samples/s | MFU |
| 推荐推理 | 访存、延迟 | 缓存命中 | QPS、P99、命中率 | MFU |
| 视觉训练 | 数据管道 | 算力 | 空闲占比、samples/s | — |
| 视觉推理 | 解码 + 算力 | — | QPS、P99 | — |
| GNN | 不规则访存 | 通信 | 缓存命中率、采样开销 | MFU |
| 科学计算 | 通信延迟 | 双精度算力 | 强扩展效率 | 吞吐 |
用法:拿到一个作业,在左列找到它,只看第四列的指标,忽略第五列。很多"性能玄学"就是因为看错了指标。
为什么同一硬件利用率能差三个数量级
Section titled “为什么同一硬件利用率能差三个数量级”用第四章的框架解释。H100 的机器平衡点约 295 FLOPs/byte:
| 算子 | 算术强度 | 算力利用率上限 |
|---|---|---|
| 大矩阵乘 | ~1000+ | 接近 100% |
| 注意力(解码单请求) | ~1 | ~0.3% |
| 逐元素算子 | ~0.17 | ~0.06% |
| Embedding 查表 | ≈ 0 | ≈ 0 |
同一块卡,从算术强度 0.17 的负载到 1000 的负载,算力利用率相差三到四个数量级,硬件毫无问题。
一个重要推论:访存受限算子的优化手段是融合(少读写一次),不是"用更好的算法"。把三个逐元素算子融成一个,能省掉四次显存往返,收益接近 3 倍;而把其中某一个算子的浮点运算优化掉一半,收益接近零。
六步判断流程
Section titled “六步判断流程”拿到一个陌生负载:
- 总 FLOPs 是多少? 数一遍主要算子。数量级很小 → 大概率不是计算问题。
- 要读写多少字节? 权重、激活、表、数据集各算一遍。
- 算术强度 = FLOPs / 字节,与机器平衡点比。 高于它看算力,低于它看带宽。
- 状态放得下吗? 单卡 → 单机 → 整集群三级判断,决定并行方式。
- 通信量与消息大小? 大消息看带宽,小消息看延迟(第六章)。
- 吞吐导向还是延迟导向? 决定批处理与扩缩容策略。
六个问题答完,瓶颈基本定位。
一个完整反例:别用大模型的直觉分析推荐系统
Section titled “一个完整反例:别用大模型的直觉分析推荐系统”假设有人报告:"我们的推荐模型训练 MFU 只有 4%,帮我优化。"
按大模型的直觉,你会去查通信重叠、算子融合、并行策略。但正确的第一步是走上面的流程。
Step 1 · 数 FLOPs。 典型推荐模型:embedding 查表(零 FLOPs)+ 三四层 MLP。假设 MLP 部分每样本 10 MFLOPs,批量 8192,则每步约 FLOPs。
Step 2 · 数字节。 每个样本查 100 个 embedding,每个 128 维 FP32 = 512 字节,批量 8192 → 每步读约 400 MB(且是随机访问)。加上表的更新写回。
Step 3 · 算术强度。
看起来不低?但注意这是随机访问——有效带宽可能只有峰值的 5%(第三章的访问模式表)。等效算术强度要按有效带宽折算,实际远在平衡点之下。
结论:这个负载注定是访存受限的,MFU 4% 不是缺陷,是这个负载在这块硬件上的物理上限附近。
真正该优化的:
- embedding 的存放位置(显存 / 主机内存 / SSD 的分层)
- 热 ID 的缓存命中率
- all-to-all 的消息聚合(把很多小消息合并)
- 用量化或哈希把表压小
这些都跟 MFU 无关。 如果这位同事花两周把 MLP 部分的矩阵乘优化了 30%,端到端会一点变化都没有——回到第二章的 Amdahl 定律。
现实中一个集群常常同时跑多类负载,这带来额外问题:
| 组合 | 冲突 | 对策 |
|---|---|---|
| 训练 + 在线推理 | 训练的突发通信打破推理的延迟 SLO | 物理隔离,或只在非核心场景混部 |
| 大模型 + 推荐 | 前者要算力,后者要内存容量 | 异构资源池,按负载类型分配机型 |
| 批处理 + 交互式 | 交互式占坑不跑任务 | 空闲回收、抢占式配额 |
第九章讲训练与推理的混部,第八卷讲调度层面的解法。
- 四个分类维度:计算密度、访问规则性、状态规模、时间约束。
- 五类负载的瓶颈:大模型看通信与显存、推荐看容量与带宽、视觉看数据管道、GNN 看不规则访存、科学计算看通信延迟。
- 推荐系统按集群规模常常是最大的 AI 负载,且从不该用 MFU 考核。
- 算力利用率在不同负载间可差三到四个数量级,这是负载性质而非硬件缺陷。
- 访存受限算子靠融合优化,不靠减少浮点运算。
- 六步判断流程:FLOPs → 字节 → 算术强度 → 状态规模 → 通信 → 时间约束。
- 效率度量 — 上一章
- 训练与推理的系统差异 — 下一章
- 算术强度与 Roofline — 本章判断的理论基础