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モデルの独創的な作業から着想を得ています。上図に示すように、GLM4.7のようなMoEモデルは、すべての入力トークンを一つの共有エキスパートにルーティングし、同時に各トークンをモデルルーターが選択したtop-kルーティングエキスパートにもルーティングします。その後、すべてのエキスパート出力を重み付けして集約します。例えば、GLM4.7は160のルーティングエキスパートと1つの共有エキスパートを持ち、トークンごとにtop 8のルーティングエキスパートを選択します。初期の実装では、これら2つの部分は独立して処理されていました。しかし、これらのテンソル形状と計算フローが同一であるため、自然に統一できます:共有エキスパートをルーティング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バリアントに適応させ、ヘッド内の半分の次元のみが回転するという特殊なケースに対応したことです。

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は複数トークンを事前予測することで高速化しますが、追加のドラフトモデルの訓練が必要で、エンジニアリングが複雑になります。

Suffix Decodingの動作原理

Suffix Decoding動作原理図

Suffix Decodingは完全にモデル非依存です:

  • 追加のモデル重みは不要
  • 履歴出力シーケンスパターンを利用して後続トークンを予測
  • 現在のリクエストのサフィックスが履歴パターンにマッチした場合、履歴シーケンスに沿って推測

データ検証:出力パターンの反復分析

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 FusionMoEモデルの計算効率を解決
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