Back to blog

Who Says Elephants Can''t Run: Bringing Large Scale MoE Models into Cloud

大规模MoE模型的高效推理框架,实现26倍吞吐量提升和4-bit量化

Who Says Elephants Can”t Run: Bringing Large Scale MoE Models into Cloud Scale Production

一、论文概述

项目内容
标题Who Says Elephants Can’t Run: Bringing Large Scale MoE Models into Cloud Scale Production
作者Young Jin Kim, Rawn Henry, Raffy Fahim, Hany Hassan Awadalla
机构Microsoft, NVIDIA
论文arXiv:2211.10017
发布2022年11月18日
会议SustaiNLP 2022 (EMNLP 2022)
领域cs.CL, cs.AI, cs.LG

二、核心思想

问题定义

混合专家(Mixture of Experts, MoE)模型通过稀疏激活层的条件执行,使得训练具有更多参数的模型成为可能,从而在机器翻译等各种NLP任务上取得了显著更好的质量。然而,由于巨大的内存需求和低效的推理,在实际场景中部署此类模型仍然具有挑战性。

在生产环境中,传统的多语言机器翻译系统通常采用”教师-学生”蒸馏范式:为每个语言对训练、蒸馏和部署单独的小模型。例如,部署100种语言的翻译系统需要至少200个这样的模型,这不仅不可扩展,还阻碍了不同语言对之间的知识共享和迁移。

解决方案概述

本文提出了一种高效的推理框架,包含多种优化方法来加速稀疏模型的计算并大幅减少内存消耗:

  • 吞吐量提升:最高26倍速度提升
  • 模型压缩:通过将专家权重量化为4-bit整数,模型大小减少到原始32-bit浮点模型的近1/8
  • 部署能力:能够部署136倍更大的模型,成本降低27%,质量显著优于现有解决方案

三、技术架构

整体框架图

CUTLASS Grouped GEMM计算

Figure 1: CUTLASS Grouped GEMM执行的计算。每种颜色代表特定专家的子矩阵,每个专家的矩阵乘法并行执行。如果黄色句子已完成,在启用批处理剪枝的情况下将从计算中省略,完全消除加载黄色专家权重矩阵的需要。

模型架构

组件说明关键参数
架构类型Encoder-Decoder with MoE深编码器-浅解码器
嵌入维度Hidden dimension1024
FFN维度Feed-forward hidden dimension4096
编码器层Encoder layers24
解码器层Decoder layers (半数于编码器)12
专家数量Number of experts32
门控算法Gating algorithmTop-1 (Switch Transformer)
词表大小Vocabulary size128K (SentencePiece)
总参数量Total parameters~5B
模型大小Model size (FP16)~10 GB

核心公式

专家量化

对称逐通道量化:

对于形状为 (E,M,N)(E, M, N) 的专家权重(E为专家数,M和N为任意维度),生成形状为 (E,1,N)(E, 1, N) 的缩放因子。

权重反量化算法 (Algorithm 1):

Input: E - 专家数量
       W - 量化权重, shape (E, M, N)
       S - FP16缩放因子, shape (E, 1, N)
Output: FP16反量化权重

for e = 0 to E-1:
    for m = 0 to M-1:
        for n = 0 to N-1:
            f = IntToFloat(W[e, m, n])
            W_dq[e, m, n] = f * S[e, n]

优化的I2F转换

关键观察:

  1. 对于任何FP16数 XX,当 1024≤X<20481024 \leq X < 2048 时,1024精确存储在指数位中,int(X−1024)\text{int}(X - 1024) 直接存储在尾数中
  2. 对于任何整数 0≤Y<10240 \leq Y < 1024,可以通过设置指数为1024并将Y存储在FP16尾数中来构造 Y+1024Y + 1024 的FP16表示

8-bit优化反量化:

  1. 加载4个int8值 [e0,e1,e2,e3][e_0, e_1, e_2, e_3] 到单个32位寄存器
  2. 创建第二个32位寄存器 R1R_1,存储 [e0+1024,e1+1024][e_0 + 1024, e_1 + 1024] 的FP16表示
  3. 使用浮点数学从 R1R_1 中减去 [1152,1152][1152, 1152](1024 + 128 = 1152)
  4. 对 e2e_2 和 e3e_3 重复步骤2-3

4-bit优化反量化:

重新排列权重布局以减少逻辑指令: [e0,e1,e2,e3,e4,e5,e6,e7]→[e0,e2,e4,e6,e1,e3,e5,e7][e_0, e_1, e_2, e_3, e_4, e_5, e_6, e_7] \rightarrow [e_0, e_2, e_4, e_6, e_1, e_3, e_5, e_7]

训练流程

  • 训练数据:生产规模训练数据,约40亿训练句对
  • MoE层配置:每隔一层使用MoE层替代普通前馈层
  • 并行策略:使用专家并行(Expert Parallelism)而非张量切片模型并行

工作流程

  1. Token路由:使用CUB库的GPU友好基数排序实现
    • 将行索引附加到门控函数输出的元组
    • 使用expert_idx作为键进行排序
    • 根据排序结果排列激活矩阵
  2. 分组GEMM:使用CUTLASS Grouped GEMM并行计算所有专家
  3. 反排列:将行恢复到原始顺序并应用expert_scale

四、核心创新

创新点说明理论/实验依据
CUTLASS Grouped GEMM利用CUTLASS库实现MoE层的高效并行计算支持不同输入类型的GEMM
4/8-bit权重量化仅量化专家权重(>90%模型参数),无需QATBLEU损失可忽略(-0.052~0.044)
优化I2F转换用高吞吐量ALU和FP16指令替代原生I2FINT8提升28%,INT4提升56%
融合GEMM+反量化将反量化步骤融合到GEMM内核中减少内存流量
批处理剪枝动态移除已完成翻译的句子最高1.14倍加速

量化性能对比

活跃专家数FP16INT8 (原生I2F)INT8 (优化I2F)INT4 (优化I2F)
111.051.281.24
411.011.211.28
811.341.211.57
1611.401.391.73
2411.401.491.78
3211.461.591.85
几何平均11.261.351.56

五、实验结果

基准测试

实验环境:

  • 硬件:单个NVIDIA PCIE V100
  • 软件:Docker容器(Ubuntu 20.04), CUDA 11.6
  • 任务:1000个tokenized英语句子翻译(~40K tokens)

翻译质量影响

INT8/INT4量化BLEU差异:

语言对INT8 Δ BLEUINT4 Δ BLEU
EN-DE (Beam 1)-0.028-0.052
EN-DE (Beam 2)+0.051-0.180
DE-EN (Beam 1)-0.084+0.044
DE-EN (Beam 2)-0.027-0.031
10语言对平均 (Beam 2)-0.007-0.167

结论:量化对翻译质量的影响可忽略不计。

端到端性能

吞吐量对比 (input tokens/sec):

批大小Torch-FP16FT-FP16FT-INT8FT-INT4
116388401400
8701,5941,6391,662
201503,0253,1783,247
322144,0084,2644,379
643795,3715,7065,935
964856,6897,1017,483

关键发现:

  • FT-FP16 vs Torch-FP16:14-24倍加速
  • FT-INT4 vs Torch-FP16:最高26倍加速
  • 批大小96时,FT-INT4达到7,483 tokens/sec

成本效益分析

硬件参数量批大小价格(东美)延迟(ms)吞吐量(words/sec)月成本(USD/token)
CPU (AVX512)0.04B1$587.65753510.209
CPU (AVX512)5.32B1$587.651,0802622.602
NVIDIA T45.32B20$390.554211,5650.250
NVIDIA T45.32B64$390.558242,5600.153

关键发现:

  • 在CPU上部署5.32B MoE模型的成本是0.04B模型的108倍
  • 优化后的GPU部署成本低于CPU上的小模型部署
  • 使用T4 GPU,批大小64时月成本仅0.153 USD/token

六、相关工作

MoE模型训练

  • Switch Transformers (Fedus et al., 2021):提出Top-1门控算法
  • GShard (Lepikhin et al., 2020):大规模MoE模型的条件计算和自动分片
  • ST-MoE (Zoph et al., 2022):设计稳定且可迁移的稀疏专家模型

推理优化

  • DeepSpeed-MoE (Rajbhandari et al., 2022):专注于100B+参数模型的多GPU解码
  • FasterTransformer:NVIDIA的高效transformer推理引擎

量化技术

  • QAT (Wu et al., 2020):量化感知训练(本文未使用,因为权重量化不降低性能)

七、总结

核心贡献

  1. 高效MoE推理框架:基于FasterTransformer扩展,支持MoE模型架构
  2. CUTLASS Grouped GEMM集成:高效表达token路由和批处理矩阵乘法
  3. 4/8-bit权重量化:无需QAT,融合反量化到GEMM内核
  4. 批处理剪枝:动态移除已完成句子,提高MoE层效率
  5. 优化I2F转换:用高吞吐量指令替代原生int-to-float转换

技术影响

  • 范式转变:用单个大型MoE模型替代数十个小型蒸馏模型
  • 成本效益:部署136倍更大模型,成本降低27%
  • 质量提升:利用跨语言迁移学习提高翻译质量
  • 可扩展性:优化适用于其他架构和任务

局限性

  1. 单GPU限制:本文聚焦于单GPU推理场景
  2. 模型规模:主要针对5B参数级别的MoE模型
  3. 任务范围:主要在机器翻译任务上验证

未来工作

  1. 改进融合GEMM+反量化内核,支持完全向量化的16字节加载
  2. 探索分布式推理以部署更大规模模型

八、参考资源

引用

@article{kim2022elephants,
  title={Who Says Elephants Can't Run: Bringing Large Scale MoE Models into Cloud Scale Production},
  author={Kim, Young Jin and Henry, Rawn and Fahim, Raffy and Awadalla, Hany Hassan},
  journal={arXiv preprint arXiv:2211.10017},
  year={2022}
}