SGLang优化GLM4-MoE生产部署:TTFT提升65%

快速概览

Novita AI开发了一系列经过生产验证的高影响力优化,用于基于SGLang部署GLM4-MoE模型。我们提出了一种端到端性能优化策略,针对整个推理管道的瓶颈进行优化——从内核执行效率到跨节点数据传输调度。通过集成Shared Experts FusionSuffix Decoding,在代理编码工作负载下取得了关键生产指标的重大提升:

  • TTFT降低高达65%
  • TPOT提升22%

所有结果均在H200集群的TP8和FP8配置下验证,为苛刻生产环境提供高吞吐量与低延迟的实战蓝图。

GLM-MoE核心生产优化的实现

1. Shared Experts Fusion

SGLang PR #13873: Shared Experts Fusion

Shared Experts Fusion示意图

此优化灵感来源于Deepseek模型的原创工作。如上图所示,MoE模型如GLM4.7会将所有输入token路由至一个共享专家,同时每个token还会路由至模型路由器选定的top-k路由专家。随后,所有专家输出加权聚合。例如,GLM4.7拥有160个路由专家和1个共享专家,每token选取top 8路由专家。早期实现中,这两部分独立处理。但由于它们张量形状和计算流程相同,自然可将其统一:将共享专家融入路由MoE结构中,从总计161个专家中选top 9,并固定共享专家为第9位。

如PR所述,此优化在TTFT上提升高达23.7%,ITL提升20.8%。在TP8和FP8配置下(中间尺寸仅192,对H200硬件较小),融合操作显著提升Streaming Multiprocessor (SM)利用率,并大幅降低内存I/O开销。

2. Qknorm Fusion

SGLang PR #15141: Qknorm Fusion
SGLang PR #15305: Qknorm Fusion Fix

Qknorm Fusion示意图

此优化基于Qwen-MOE的迁移。核心思路简单:两者均为head-wise计算,自然融合为单一内核。我们贡献在于适配GLM4-MoE变体,仅head内一半维度旋转的特殊情况。

3. Async Transfer

SGLang PR #14782: Async Transfer

Async Transfer调度示意图

在应用PD分离与重叠调度的场景下,虽然吞吐量提升约10%,但TTFT显著下降。我们观察到当前prefill实现中,数据传输延迟至下一批次内核启动后。对于如GLM4.7的92层模型,无CUDA Graph的内核启动耗时长(常达数百毫秒甚至超1秒)。

我们的修改是将传输步骤提前,置于对应GPU操作完成后立即调度,并置于独立线程。通过小心处理数据竞争结构,避免阻塞主线程。

对内核启动频繁的模型,此优化效果巨大。在高负载下,TTFT可节省高达1秒,如下图所示。

Async Transfer TTFT提升图

生产基准测试结果

实施上述优化后,GLM-MoE模型性能显著提升,如下基准结果所示。

基准配置

  • 输入长度:4096
  • 输出长度:1000
  • 请求率:14 req/s
  • 模型:GLM-4.7 FP8 (TP8)
基准TTFT对比图基准TPOT对比图
这些优化已非实验性——已在Novita AI的生产推理服务中部署并验证。

Suffix Decoding

代理编码场景(如Cursor和Claude Code)存在大量可复用代码模式,适合针对性优化如Suffix Decoding

背景:代理编码中的推理瓶颈

LLM Agents擅长代码生成,但延迟仍是挑战。传统Speculative Decoding通过预预测多token加速,但需训练额外draft模型,工程复杂。

Suffix Decoding工作原理

Suffix Decoding工作原理图

Suffix Decoding完全无模型依赖:

  • 无需额外模型权重
  • 利用历史输出序列模式预测后续token
  • 当前请求后缀匹配历史模式时,顺着历史序列进行推测

数据验证:输出模式重复分析

分析22个Claude Code会话(17,487轮对话)发现:

  • 39.3%输出模式重复:工具调用和响应模式高频相似
  • 高度结构化代理行为:如“Let me...”、“Now let me...”等固定短语频现

为支持进一步研究,我们在Hugging Face开源评估数据集:Agentic Code Dataset

性能对比

结合内置MTP加速,Suffix Decoding将TPOT进一步降低22%(从25.13ms降至19.63ms):

指标MTPSuffix Decoding变化
平均TPOT25.13 ms19.63 ms-21.90%
中位数TPOT25.95 ms20.05 ms-22.70%

结论

这些优化组合为SGLang部署提供全面性能提升:

优化影响/益处
Shared Experts Fusion解决MoE模型计算效率
QK-Norm-RoPE Fusion减少内核启动开销
Async Transfer优化分离部署数据移动
Suffix Decoding利用代理编码模式重复进行推测解码

多数组件已上游合并或集成中,可查看SGLang仓库。

复现指南

仅列出关键性能参数。完整启动脚本(基线 vs 优化)、基准工具和剖析追踪已在GitHub发布:novitalabs/sglang (glm_suffix branch)

SGLang运行时核心优化标志

--tp-size 8
--kv-cache-dtype fp8_e4m3
--attention-backend fa3
--chunked-prefill-size 16384
--enable-flashinfer-allreduce-fusion
--enable-fused-qk-norm-rope
--enable-shared-experts-fusion
--disaggregation-async-transfer

推测解码配置(代理编码负载)

--speculative-algorithm NEXTN
--speculative-num-steps 3
--speculative-eagle-topk 1
--speculative-num-draft-tokens 4

Suffix Decoding配置(可选)

--speculative-algorithm SUFFIX
--speculative-suffix-cache-max-depth 64
--speculative-suffix-max-spec-factor 1.0
--speculative-suffix-min-token-prob 0.1

参考文献

  1. SGLANG PR #13873: Shared Experts Optimization
  2. Snowflake Engineering Blog: SuffixDecoding at Production Scale
  3. NeurIPS Paper: SuffixDecoding
  4. Arctic Inference Repository
本文来自 LMSYS 博客,嬴政天下(winzheng.com)进行了全文翻译。 点击这里查看原文 如果转载中文,请注明出处,谢谢支持!