当前位置: 首页 > ops >正文

【大模型推理加速】MOE加速比与batchsize 关系

https://zhuanlan.zhihu.com/p/18788701543
在这里插入图片描述

您的查询描述了Mixture of Experts (MoE) 模型在推理过程中不同批次大小(Batch Size, BS)下的性能特征,特别是在小批次、中间区域和大批次三种情况下的行为。我将针对您的问题“为什么大批次时MoE吞吐量更高”进行详细解释。首先,简要回顾MoE模型的核心特性:

  • MoE模型原理:MoE模型由多个专家(experts)组成(如前馈神经网络层),每个输入token通过路由机制被分配到少数专家(通常k=1或2)。相比之下,稠密模型(dense model)对所有token使用相同的参数。MoE的优势在于,它可以通过增加专家数量来扩展模型规模(总参数量更大),但每个token只激活部分专家,从而减少每个token的计算量(FLOPs)。

  • 关键性能指标

    • 延迟(Latency):处理一个批次所需的时间。
    • 吞吐量(Throughput):单位时间内处理的token数量(例如,tokens/秒)。
    • 瓶颈:推理性能受限于内存带宽(memory bandwidth)或计算量(compute-bound)。内存带宽限制时,时间主要花在从内存(如DRAM)读取参数;计算量限制时,时间主要花在执行浮点运算(FLOPs)。

现在,针对您描述的三种情况,我先快速总结,然后重点解释大批次时MoE吞吐量更高的原因。

1. 小批次(Small Batch): 内存带宽限制

  • 行为:当批次大小较小时,推理延迟主要取决于“读入所有激活参数的时间”。这是因为每个token可能被路由到不同专家,导致参数访问分散,无法有效利用缓存。内存带宽成为瓶颈(即硬件等待数据加载,而非忙于计算)。
  • 原因:小批次时,计算单元(如GPU核心)经常空闲,等待参数从内存加载。MoE模型可能比稠密模型更差,因为路由增加了额外的参数访问开销(不同专家的参数位置不连续)。

2. 中间区域(Middle Region): 无收益区域

  • 行为:随着批次大小增加,所有专家被激活(即每个专家都处理至少一个token),但相比同等规模的稠密模型(例如,总FLOPs相当的稠密模型),MoE没有性能收益(延迟或吞吐量无改善)。
  • 原因:此时,计算量接近稠密模型(所有专家都活跃),但引入了路由开销(如选择专家的softmax计算)、负载不平衡(某些专家处理更多token,导致等待)或同步成本。这些开销抵消了MoE的潜在优势,而稠密模型由于参数共享更均匀,效率更高。

3. 大批次(Large Batch): MoE吞吐量更高

  • 行为:当批次大小继续增加,瓶颈从内存带宽转为“单token激活计算量”(即计算成为主要限制)。此时,MoE的吞吐量显著高于同等规模的稠密模型。
  • 关键问题:为什么大批次时MoE吞吐量更高?
    原因在于大批次下,硬件(如GPU)进入计算绑定(compute-bound)状态,而MoE模型每个token的计算量(FLOPs per token)更低,且参数访问开销被有效摊销。具体机制如下:
(1) 更低的每token计算量(Lower FLOPs per Token)
  • MoE模型的核心优势是每个token只激活少数专家(例如,k=2),而稠密模型每个token必须通过全部参数。假设一个MoE模型有E个专家,每个专家的计算量较小(例如,专家FFN层的隐藏尺寸d_ff_expert < 稠密模型的d_ff_dense),那么:
    • 稠密模型的每token计算量:~ ( O(d_model \times d_ff_dense) )(例如,一次大型矩阵乘)。
    • MoE模型的每token计算量:~ ( O(k \times d_model \times d_ff_expert) )(例如,k个小型矩阵乘)。
      通常,MoE设计为 ( k \times d_ff_expert \ll d_ff_dense ),因此每token FLOPs更低(可能减少2-4倍)。
  • 在计算绑定区域,硬件计算能力(如GPU的TFLOPS)是固定的。吞吐量公式为:
    [
    \text{Throughput} = \frac{\text{Hardware Compute Capacity (FLOPS)}}{\text{FLOPs per Token}}
    ]
    由于MoE的FLOPs per token更低,它能处理更多token/秒。例如:
    • 硬件计算能力:100 TFLOPS。
    • 稠密模型:每token需10 GFLOPs → 吞吐量 = 100e12 / 10e9 = 10,000 tokens/秒。
    • MoE模型:每token需4 GFLOPs → 吞吐量 = 100e12 / 4e9 = 25,000 tokens/秒(提升2.5倍)。
(2) 参数重用和访问开销摊销(Parameter Reuse and Access Amortization)
  • 大批次时,许多token被路由到相同的专家(例如,一个专家处理批次中的多个token),允许专家参数在缓存(如GPU共享内存或L2缓存)中重用:
    • 参数加载一次后,可多次用于计算,减少平均每个token的内存访问次数。
    • 而小批次时,token路由分散,参数无法有效重用,内存访问频繁。
  • 稠密模型在大批次下也有参数重用(所有token共享参数),但由于其每token计算量高,计算瓶颈更早出现,吞吐量上限较低。
  • 因此,大批次时MoE的内存访问开销被大幅摊销,瓶颈从内存带宽转向计算,MoE的低FLOPs优势得以发挥。
(3) 硬件利用率提升(Improved Hardware Utilization)
  • 在计算绑定状态下,GPU核心能持续高效工作(高利用率),减少内存等待时间。
  • MoE的路由和并行性在大批次下更有效:多个专家可以并行处理(如果硬件支持,如TPU或GPU的异步执行),而稠密模型计算更集中,可能无法充分利用所有计算单元。
  • 此外,MoE的稀疏激活特性(sparse activation)在大批次时减少冗余计算,而稠密模型必须对所有token执行全量计算。

为什么其他区域没有类似优势?

  • 小批次:内存带宽限制,MoE的参数访问更频繁(专家分散),可能劣于稠密模型。
  • 中间区域:所有专家激活但批次不够大,路由开销(如门控网络计算)和负载不平衡占主导,导致无收益。例如,一些专家过载而其他空闲,同步成本增加延迟。

实际考虑

  • 硬件影响:在内存带宽受限设备(如低端GPU)上,小批次MoE性能较差;但在高算力设备(如A100/H100)上,大批次MoE优势更明显。
  • 模型设计:MoE吞吐量增益取决于专家数量(E)、路由策略(如Top-k)和专家大小。理想情况下,MoE总参数量更大,但推理时仅部分激活。
  • 研究支持:实验数据(如GShard或Switch Transformer论文)显示,大批次时MoE吞吐量可比稠密模型高2-5倍,尤其在高算力场景。

总之,大批次时MoE吞吐量更高的根本原因是:计算成为瓶颈,而MoE的每token计算量更低,结合参数重用,允许硬件在单位时间内处理更多token。如果您有特定模型参数或硬件场景,我可以提供更具体的分析!

http://www.xdnf.cn/news/12217.html

相关文章:

  • 某药监局药品详情sign值逆向
  • 第12期_网站搭建_几时网络验证1.3二改源码包2024 软件卡密系统 虚拟主机搭建笔记
  • linux下覆盖率测试总结
  • SQL Server相关的sql语句
  • React Hooks 指南:何时使用 useEffect ?
  • 鸿蒙APP测试实战:从HDC命令到专项测试
  • 【连接器专题】案例:FPC焊接金手指顶层和底层开窗/焊盘为什么要错位?
  • 《计算机是怎么跑起来的》第二章读后感
  • LeetCode 70 爬楼梯(Java)
  • 【深度学习】为什么2个3×3的卷积可以相当于一个5×5的卷积核?为什么3个3×3的卷积相当于一个7×7的卷积核,到底区别在哪里?我们该如何使用?
  • ESP32C3中BLE开发问题汇总
  • 数字图像处理第二次实验
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(32):そうやすいにくいすぎ(過ぎ)
  • 链表相关知识
  • 一键切换不同状态,3D数字孪生场景搭建更便捷!
  • 【iOS】cache_t分析
  • Qt 按钮类控件(Push Button 与 Radio Button)(1)
  • COMSOL学习笔记-静电场仿真
  • 可视化图解算法48:有效括号序列
  • DFORMER: RETHINKING RGBD REPRESENTATION LEARNING FOR SEMANTIC SEGMENTATION 论文浅析
  • 电厂数字孪生:智能优化助力碳中和
  • 【定昌linux开发板】设置用户密码过期时间
  • eNSP实现WDS手拉手业务
  • 如何做好一份技术文档?(上篇)
  • Spring AI(11)——SSE传输的MCP服务端
  • Spring Plugin框架应用实践:医院多租户客户端动态路由方案解析
  • App使用webview套壳引入h5(二)—— app内访问h5,顶部被手机顶部菜单遮挡问题,保留顶部安全距离
  • 两个错误教训记录--java变量作用域问题导致变量值异常
  • calico/node is not ready: BIRD is not ready: BGP not established with xxx
  • sumatraPDF设置深色界面