专栏名称: GiantPandaCV
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaCV  ·  SGLang的Expert ... ·  17 小时前  
今天看啥  ›  专栏  ›  GiantPandaCV

SGLang的Expert Parallel特性解读

GiantPandaCV  · 公众号  · 3D  · 2025-01-11 22:14
    

主要观点总结

SGLang实现了Expert Parallel(EPMoE),这是其率先在开源推理框架中实现的。SGLang通过修改上层接口和底层实现,特别是利用GroupedGemmRunner类进行矩阵乘法,并实现了EPMoE类和其Forward方法,实现了类似EP MoE训练时的步骤。SGLang EP MoE Kernel通过预重排序和两次Group GEMM,以及两次重排序,最终得到最终输出。EPMoE和MoE EP训练流程的区别在于,EPMoE在推理时通过优化All2All流程来降低通信成本。SGLang EPMoE计算流程中最耗时的Group GEMM尚未使用FalshInfer的优化版本,因此可能效率不高。

关键观点总结

关键观点1: SGLang实现Expert Parallel(EPMoE)

SGLang是开源推理框架中率先实现EPMoE的。

关键观点2: 上层接口和底层实现修改

通过修改上层接口和底层实现,特别是利用GroupedGemmRunner类进行矩阵乘法,并实现了EPMoE类和其Forward方法。

关键观点3: EPMoE计算流程

通过预重排序和两次Group GEMM,以及两次重排序,得到最终输出。

关键观点4: EPMoE和MoE EP训练流程的区别

EPMoE在推理时通过优化All2All流程来降低通信成本。

关键观点5: EPMoE效率问题

SGLang EPMoE计算流程中最耗时的Group GEMM尚未使用FalshInfer的优化版本,可能效率不高。


文章预览

0x0. 前言 最近在SGlang仓库下做了一段时间的开发和学习,对SGLang的一些比较新的Feature也开始有一些了解。这篇文章就是尝试来梳理一下SGLang中Expert Parallel的实现,据我所知SGlang应该是开源推理框架中率先实现Expert Parallel的。我们可以学习一下它是如何实现的,以及它相比于普通的EP主要优化点在哪。SGLang在 https://github.com/sgl-project/sglang/pull/2371 中实现了Expert Parallel,我们从这里看就行。如果对MoE EP不熟悉可以参考 https://zhuanlan.zhihu.com/p/681154742 这篇文章或者阅读 DeepSeek 相关的资料。 0x1. 上层的接口 首先我们可以看到server_args.py中的改动,Expert Parallel接管了Tensor Parallel的位置,以Deepseek V3为例子,有256个Expert,现在打开Expert Parallel并且把 expert_parallel_size 设置为8的话,那么每张卡上分得完整的32个Expert。另外可以看到在初始化参数的时候,如果开启了Expe ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览