MT-TransformerEngine 入门
1. MT-TransformerEngine 是什么
Transformer Engine 是面向 Transformer 模型的低精度训练与高性能算子库。它提供优化后的 Linear、LayerNorm、Attention 等模块,并通过 FP8 recipe、缩放因子和自动混合精度上下文管理低精度计算。
MT-TransformerEngine(MT-TE) 基于 Transformer Engine 和 torch_musa 适配,使摩尔线程 GPU 能够使用 FP8 训练和相关融合优化。它可以单独用于 PyTorch 模块,也可以与 MT-Megatron 集成到大模型训练中。
1.1 适用场景
- 在摩尔线程 GPU 上验证 FP8 forward/backward;
- 用 TE 模块替换普通 PyTorch Transformer 层;
- 降低大模型训练的计算和通信成本;
- 在 MT-Megatron 中使用 FP8、TP overlap、MoE 重计算等优化;
- 对比 BF16 与 FP8 的吞吐、显存和数值稳定性。
1.2 设计特点
- 高性能模块:提供融合或定制实现的 Transformer 核心层;
- FP8 recipe:统一配置格式、缩放、统计与更新策略;
- 作用域控制:通过
fp8_autocast控制哪些 forward 使用 FP8; - 训练框架集成:可与 Megatron 的并行和 checkpoint 体系组合;
- MUSA 内核:通过 MUSA C++/kernel 和
torch_musa执行实际计算。
2. 核心架构
2.1 主要组件
| 组件 | 作用 |
|---|---|
| TE PyTorch Modules | Linear、LayerNorm、TransformerLayer 等高性能模块 |
| FP8 Recipe | 定义 FP8 格式、margin、缩放与统计策略 |
fp8_autocast | 开启或关闭指定代码段中的 FP8 计算 |
| Scaling Metadata | 维护 amax、scale、scale inverse 等状态 |
| Fused Kernels | 执行 GEMM、归一化、激活等融合计算 |
| Distributed Integration | 与 TP、通信 overlap、MoE 等训练能力协作 |
| torch_musa / MUSA Kernels | 提供设备、运行时和底层算子实现 |