Administrator
Published on 2026-08-05 / 6 Visits
0
0

Meta GEM 训练效率:LLM 规模推荐模型需要一套专用优化栈

Meta GEM 在 12 个月内把总训练 FLOPs 扩大 4 倍,同时将端到端训练效率翻倍至 20% 至 25% MFU。这个案例的核心价值是一套瓶颈诊断方法:先测量端到端效率,再把问题拆到单卡计算与分布式扩展,处理当前最紧的约束,完成质量验证,然后重新测量。推荐模型与 LLM 的算力规模可以接近,数据形态、参数结构和通信模式却需要一套专用优化栈。

先把 MFU 的分母说清楚

Meta 的工程报告把 GEM 的效率拆成两个部分:

端到端 MFU = 本地 MFU × 扩展比率

本地 MFU 回答单张 GPU 是否被充分利用,主要受 kernel、数值精度、张量形状和内存访问影响。扩展比率回答单卡性能分布到数千张 GPU 后保留了多少,主要受通信、拓扑、负载不均、重计算和慢节点影响。

这项拆分可以防止把局部加速误写成系统收益。一个 kernel 快了 2 倍,训练 step 可能仍在等待通信。一次 collective 传输的字节数下降,墙钟时间可能继续受固定延迟或同步影响。只有局部改进沿着整条指标链传递,才会提高端到端吞吐。

MFU 的分母也依赖硬件代际与数值格式。20% 至 25% MFU 表示相对于选定理论 FLOPs 口径的利用率,剩余部分包含 memory-bound 操作、通信和同步等工作,不能简单理解为还有 75% 至 80% 的算力可以回收。

推荐模型改变了四个基础假设

GEM 同时处理用户活动历史等序列特征,以及位置、广告创意表示等非序列特征。它拥有万亿级稀疏 embedding 参数和十亿级稠密参数。这个组合改变了常规 LLM 训练栈的适用前提。

常规 LLM 假设 GEM 的真实负载 直接后果
序列长度相对规整 用户历史从数百到数万事件 Padding 浪费与 rank 负载偏斜
Attention 形状较统一 自注意力、交叉注意力与 pooled attention 高度不对称 Tiling 效率和 occupancy 下降
稠密参数占主导 万亿级稀疏参数与十亿级稠密参数共存 两套分片与 collective 逻辑
低精度主要是数据类型切换 CTR、CVR 对数值变化敏感 稳定性与量化开销成为门槛
增加 GPU 可近似线性加速 通信跨越多层带宽拓扑 Collective 暴露与慢节点放大

成熟的 LLM 基础设施仍然可以作为起点。真正决定收益的是工作负载适配,所有关键优化都需要在生产张量形状和数据分布上重新测量。

第一轮瓶颈迁移:从 Padding 到 Jagged Kernel

Meta 表示,如果把 GEM 的变长用户序列补齐到最大长度,最多会浪费约 50% 计算。直接处理 jagged tensor 可以消除 Padding,却会引入新的不规则性:短序列提前结束,长序列继续占用计算,GPU 内部和不同 rank 之间都会出现负载偏斜。

Meta 为此构建了多种推荐专用 kernel:

  • Jagged Flash Attention 直接处理变长张量,并支持定制 bias 与不对称的 query、key/value 长度。
  • Generalized Dot-Product Attention 统一处理 GELU、SiLU 等非 softmax 的交互模块。
  • BlockAttention 在模型允许时把长序列拆成独立固定 block,缩小无效计算范围。

PyTorch 的 GDPA 工程文解释了生产形状的重要性。在披露的生产配置中,优化后的 GDPA 相对 Triton 基线最高获得 2 倍前向和 1.6 倍反向加速,并使整模训练吞吐提升超过 30%。在部分短 key/value 场景中,前向相对 FlashAttention 4 最高达到 3.5 倍。

这些数字绑定特定张量形状与基线,无法直接外推。可迁移的结论是:用生产分布做基准。消除 Padding 后,瓶颈通常会迁移到 tile 调度、反向累加、内存重排和 rank 负载均衡。单独优化矩阵乘法无法完成整条链路。

第二轮瓶颈迁移:从低精度峰值到数值流水线

新一代 GPU 的 FP8、FP4 理论吞吐显著高于 FP16。GEM 的实践说明,低精度训练需要把数值稳定性与数据搬运一起设计。

量化如果单独执行,会增加 scale factor 计算、类型转换、kernel launch 和 HBM 流量。Meta 把 activation quantization 融入上游 normalization 与 projection,在 FSDP all-gather 前量化本地 weight shard,并传输低精度 payload。同时使用随机舍入、outlier 缓解、混合精度,以及对敏感 weight-gradient 路径和后段 layer 保留更高精度。

因此低精度需要同时通过两道验收门:

  1. 扣除量化、反量化和数据搬运后,module 与端到端时间确实下降。
  2. 训练稳定性和推荐质量维持在预先定义的接受范围内。

Kernel 更快但模型质量回退,属于失败。质量稳定但转换开销吃掉全部速度收益,同样属于失败。

第三轮瓶颈迁移:从 GPU 数量到通信拓扑

GEM 的稠密参数与稀疏参数需要不同的分布策略。Meta 在稠密模块上采用 2D FSDP 加 Expert Parallelism,在稀疏表上采用 fully sharded 2D model parallelism,最终形成拓扑感知的 5D 并行。

这里最值得复用的原则是把消息放到合适的链路。Meta 披露的集群包含主机内 NVLink、AI zone 内 RoCE,以及带宽更低且存在超卖的跨 zone 链路。引入新的并行维度,可以缩小受限链路上的消息体积或 collective group size。

PyTorch 对 2D sparse parallelism 的介绍展示了同一组权衡。缩小 model-parallel group 可以改善负载与通信,直接复制参数却会让超大 embedding table 产生难以承受的显存开销。进一步做 fully sharding,用快链路上的额外通信换取更低 HBM 占用。

通信与计算同时发生也不等于通信已经隐藏。Collective kernel 仍可能占用 streaming multiprocessor,与计算 kernel 竞争硬件资源。Meta 表示,NCCLX 把 all-gather 的 SM 使用量从约 24 个降至 1 个,并在完整训练规模上带来约 5% 端到端 QPS 增益。NCCLX 论文提供了更广的 collective communication 背景。

第四轮瓶颈迁移:从显存释放到负载均衡

稠密与稀疏参数完成分片后,activation 会成为单卡显存的主要约束。GEM 把编译器自动 activation checkpointing 改造成按区域分配内存预算,再叠加 activation quantization,目标是在控制重计算成本的同时保留较大的本地 batch。

更大的 batch 与 jagged 执行随后暴露 rank 负载偏斜。Meta 观测到最重 rank 每轮约比平均负载高 15%。全局最优重排需要每个 step 增加一次 all-to-all,协调成本可能抵消全部收益。Meta 最终采用 Base Batch Shuffling:先按总序列长度排序小 sub-batch,再把重组与轻组交错合并。公司报告 QPS 提升 4%,峰值内存下降 4%。

这里有一个普遍的系统结论:接近最优且协调成本很低的方案,可能比理论上完美的全局方案拥有更高吞吐。

建立指标阶梯,避免堆叠加速数字

不同层级的性能数字不能相加。训练效率报告需要保留完整证据层级。

证据层级 典型指标 回答的问题
Micro-kernel TFLOPS、kernel latency 单个算子是否更快
Module Attention 或 MLP 时间 周边开销是否保留收益
单卡 本地 MFU、examples/s 内存与 launch 是否保留收益
分布式 step Scaling ratio、straggler gap 通信与负载偏斜是否保留收益
训练作业 端到端 MFU、有效训练时间 启动、checkpoint 与失败恢复是否保留收益
模型结果 Loss、NE、CTR/CVR 质量门槛 效率是否保持模型质量
业务结果 迭代周期、每个合格模型的成本 更快的系统是否改善交付经济性

Meta 的公开资料在 kernel 到稳态分布式 step 之间证据最强,对总训练成本、能耗、启动、checkpoint 恢复、失败率和每个合格模型成本披露较少。这些空白需要明确保留,不能从 MFU 静默推导。

团队可以直接复用的六步流程

GEM 的具体 kernel 与 5D 并行维度依赖 Meta 的模型和集群。诊断流程具有更强的可迁移性。

  1. 记录生产分布:序列长度直方图、attention shape、稀疏表规模、数值 outlier 与 rank 负载。
  2. 建立指标树:把 kernel time 连到 module time、本地 MFU、scaling ratio、端到端 step、有效训练时间和模型质量门槛。
  3. 分类当前约束:至少覆盖计算、内存、通信、同步、负载均衡和输入流水线。
  4. 只改变当前瓶颈的责任层:每个 kernel、精度配方、分片维度或 batching 策略都要绑定一个目标指标。
  5. 验证整条链路:重跑数值测试、质量指标、分布式 profile、checkpoint 恢复和墙钟时间。
  6. 重新 profile:成功优化会改变约束地图,上一轮优先级随之失效。

小团队可以从生产形状基准、profiler trace、按序列长度 batching、选择性 mixed precision 和指标树开始。只有标准实现持续占据端到端时间的大头,定制 kernel 与高维并行才具有足够回报。

同一套逻辑也适用于其他基础设施层。OpenAI MRC 网络设计把受限网络层作为优化单元,Token 预算工程则把资源上限连接到最终能力,避免只看孤立成本。

公开证据的边界

Meta 的一级资料提供了少见的生产机制细节,同时仍属于公司自述。完整 GPU 型号、绝对 GPU 数量、功耗范围、全部基线、总成本和质量置信区间没有完全披露。多数局部加速使用不同基线,无法相加得到 2 倍端到端提升。

20% 至 25% MFU 可以证明 Meta 按其内部负载与测量方法报告了这一结果。独立复现仍需要模型配置、序列长度分布、硬件拓扑、精度分母、质量门槛和完整 profiler trace。

常见问题

Meta GEM 是什么?

GEM 是 Meta 的生成式广告推荐基础模型。Meta 将其描述为万亿级稀疏 embedding 参数与十亿级稠密参数组成的混合架构,使用广告内容和用户互动数据训练。

MFU 是什么?

Model FLOPs Utilization 用实际完成的模型计算量对比硬件理论峰值。它适合跟踪同一负载与硬件配置。跨硬件、精度格式或模型定义比较时,需要先对齐分母。

标准 FlashAttention 为什么难以直接适配推荐模型?

生产推荐张量常见变长序列、大 batch、不对称 query 与 key/value、定制 bias 和非 softmax 激活。针对规整 LLM 序列设计的 kernel 可能产生 Padding 浪费、低 occupancy 或负载偏斜。

Jagged tensor 是什么?

Jagged tensor 用 values 加 offsets 或长度元数据紧凑保存变长样本。它减少 Padding,同时需要处理不规则调度与通信。

每个推荐团队都要开发定制 GPU kernel 吗?

Profiler 负责做出这个决定。当稳定的生产 shape 占据足够多端到端时间,并且通用实现明显偏离硬件 roofline 时,定制 kernel 才有合理回报。数据、batching、通信或恢复机制常常提供成本更低的优化空间。

文中的加速数字可以相加吗?

这些数字属于 kernel、layer、单卡和分布式作业等不同范围,基线也不同。组合收益需要端到端 ablation 或 waterfall 单独核验。

参考资料


Comment