腾讯混元的 HPC-Ops 算子库正式合进了 SGLang 主分支。不是又在论文里跑分,不是一个新的插件更不是挂着开源名头的 demo——直接拉出 Hy3 模型,TPOT 最高砍掉 48.8%。这组数放在任何做过 MoE 线上服务的团队面前,都足够让人坐直。
MoE 推理的“慢”,是真慢在骨子里
Token 来了,GPU 却在排队
很多人谈混合专家模型推理瓶颈,张口就是计算量大。不对。MoE 的前向推理真正吃掉的不是 FLOPs,是 带宽和调度。每个 token 只激活一小部分专家,这听起来很省——可实际中每个 decoding step 都要从 HBM 里把选中的专家权重搬出来,搬运的时间往往比计算还长。SGLang 这几年靠 RadixAttention 和连续批处理把调度做得足够漂亮,但一旦落到 MoE 的细粒度算子层,通用的 attention kernel 和 router GEMM 仍然会让 GPU 把大量时间花在等待上。等数据传输,等 All-to-All 通信对齐,等那几条 SM 把路由器只当个简单的 top-k 做完。延迟就是这么被抬起来的。
让算子重新认一遍数据流的形状
这件事必须从最底层的算子动手。通用的 cuBLAS 、手写的 FlashAttention 不会知道你的 token 路由分布有多不规整,也不会主动为 负载均衡 调整 tile 切分。而现实中的 MoE 模型,不同层的专家被选中的概率天差地别——热门专家上 token 挤破头,冷门专家几乎空转。没有感知能力的高性能算子只会机械地分配相同的计算资源,最终整体延迟被那几个超载的尾部专家拖垮。这是所有自研推理框架都得正面硬啃的骨头。
混元往里塞了什么硬通货
Dynamic Attention:把空转的时钟周期抢回来
HPC-Ops 这次给出的 Dynamic Attention,本质上是一套面向非均匀请求的注意力机制调度算法实现。它不再假设 batch 内所有序列长度接近、所有 attention head 的计算量均等,而是根据实际 token 分布动态调整计算块的划分和发射序列。带来的直接变化是:GPU 计算单元闲置大幅减少,尾延迟的“毛刺”被削平。在 Hy3 这类超大规模且路由极不均衡的模型上,仅靠这一项优化就能让 attention 阶段的耗时缩短一截。它没有去发明新的 attention 数学,而是逼着硬件按实际负载去干活,不再假装一切整齐划一。
Fused MoE:路由器不再是个凑合过的模块
更值得拆解的是 Fused MoE。过去做 MoE 推理通常分三步:路由计算、token 分发、批量专家 GEMM。三步之间要多次读写 HBM,中间结果搬来搬去。HPC-Ops 的做法是把路由打分与专家 GEMM 启动融合在一个 kernel 里,利用 精度感知 的路由策略提前裁掉无贡献的专家通道,让分发逻辑紧挨着计算单元完成,减少访存轮次。这意味着每一个选中专家的前向计算,背后都已经提前把“谁该来、带什么精度”预处理好了,不额外消耗显存带宽。对于推理服务,这就是实打实的每 token 时间缩短。
一个不靠运气靠打磨的组合拳
单独看 Dynamic Attention 或者 Fused MoE,都能在某些场景拿分。但把它们拧在一起放进 SGLang 主分支,效果远超各自为战。因为在线服务不是 benchmark 切片,attention 等待和专家计算等待会相互传导,形成延迟叠加效应。HPC-Ops 通过联合设计让调度层和算子层首次在同一套运行时约束下配合,不再互相“谦让”计算资源。这也是为什么 Hy3 模型能刷出接近一半的 TPOT 降幅:它不是改了一个热点,是拆掉了整条延迟链条上最要命的两个卡口。
这组数字,比你想象的更现实
48.8% 降幅,不用再自己攒轮子
许多团队看到“最高降低 48.8%”会习惯性怀疑:是不是极特殊配置下的数字游戏。但混元这次直接把算子合入 SGLang 主分支,意味着任何用 SGLang 跑 MoE 的人都可以在 Hy3 及同结构的模型上直接调用并复现。不需要自己把 attention 重写一遍,不需要为路由器折腾大半个月的 CUDA 调优。开源合入的含金量就在这里——过去你在论文里看到的漂亮加速,可能只有原厂机房能跑;现在它们是主干代码的一部分,拉下来编译就能压进线上延迟预算。
从“可以快”到“默认快”的最后一步
更关键的是,这次集成代表着 SGLang 社区和腾讯混元将大模型推理的底层创新直接商品化了。以后再部署 MoE 服务,不用再纠结要不要手工接第三方的算子补丁,不用再担心优化库和主线脱节带来的兼容性陷阱。HPC-Ops 成为主干的一部分,意味着 Dynamic Attention 和 Fused MoE 会随着 SGLang 的版本迭代持续得到维护和打磨。对中小团队来说,这是把原本需要顶级系统工程师啃三个月的活,压缩成了一行引擎配置。当这种级别的算子优化开始“默认启用”,整个开源推理栈的基准线就被悄悄抬高了。

