快速概览
Novita AI开发了一系列经过生产验证的高影响力优化,用于基于SGLang部署GLM4-MoE模型。我们提出了一种端到端性能优化策略,针对整个推理管道的瓶颈进行优化——从内核执行效率到跨节点数据传输调度。通过集成Shared Experts Fusion和Suffix Decoding,在代理编码工作负载下取得了关键生产指标的重大提升:
- TTFT降低高达65%
- TPOT提升22%
所有结果均在H200集群的TP8和FP8配置下验证,为苛刻生产环境提供高吞吐量与低延迟的实战蓝图。
GLM-MoE核心生产优化的实现
1. Shared Experts Fusion
SGLang PR #13873: 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

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

在应用PD分离与重叠调度的场景下,虽然吞吐量提升约10%,但TTFT显著下降。我们观察到当前prefill实现中,数据传输延迟至下一批次内核启动后。对于如GLM4.7的92层模型,无CUDA Graph的内核启动耗时长(常达数百毫秒甚至超1秒)。
我们的修改是将传输步骤提前,置于对应GPU操作完成后立即调度,并置于独立线程。通过小心处理数据竞争结构,避免阻塞主线程。
对内核启动频繁的模型,此优化效果巨大。在高负载下,TTFT可节省高达1秒,如下图所示。

生产基准测试结果
实施上述优化后,GLM-MoE模型性能显著提升,如下基准结果所示。
基准配置
- 输入长度:4096
- 输出长度:1000
- 请求率:14 req/s
- 模型:GLM-4.7 FP8 (TP8)


这些优化已非实验性——已在Novita AI的生产推理服务中部署并验证。
Suffix Decoding
代理编码场景(如Cursor和Claude Code)存在大量可复用代码模式,适合针对性优化如Suffix Decoding。
背景:代理编码中的推理瓶颈
LLM Agents擅长代码生成,但延迟仍是挑战。传统Speculative Decoding通过预预测多token加速,但需训练额外draft模型,工程复杂。
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):
| 指标 | MTP | Suffix Decoding | 变化 |
|---|---|---|---|
| 平均TPOT | 25.13 ms | 19.63 ms | -21.90% |
| 中位数TPOT | 25.95 ms | 20.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 4Suffix Decoding配置(可选)
--speculative-algorithm SUFFIX
--speculative-suffix-cache-max-depth 64
--speculative-suffix-max-spec-factor 1.0
--speculative-suffix-min-token-prob 0.1