SGLang と Miles が Qwen3.8 の Day-0 サポートを開始
本文の状態
日本語全文を表示中
詳細モードで約17分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
LMSYS Blog
SGLang と Miles が Qwen3.8-2.4T-A95B の Day-0 サポートを開始し、NVFP4 量子化やハイブリッドアテンション対応など大規模モデルの高速推論を実現した。
Continue in AI NEW LAB
このニュースを、実務の判断につなげる
AI NEW LABで、試したことや先に確認したい条件を共有できます。まずはログインなしで読めます。
AI NEW LABで論点を見るAI深層分析を開く2026年8月13日 01:13
AI深層分析
キーポイント
大規模モデルの完全サポート開始
SGLang と Miles が Qwen3.8-2.4T-A95B の Day-0 サポートを提供し、同社のハイブリッドアテンションアーキテクチャへの完全対応を達成した。
NVFP4 量子化と専用カーネル
NVIDIA と AMD チームとの協力により NVFP4 チェックポイントが公開され、MoE 統合や低遅延パスを含む最適化されたカーネルスタックが FlashInfer を通じて提供される。
高性能な推論と学習の実証
B300 環境での推測デコーディングで最大 378 tok/s を達成し、Miles による Day-0 RL トレーニングも成功裏に完了した。
ハイブリッドアテンションとGDNの設計
69層の線形アテンション(GDN)と23層の完全アテンション(GQA)を3:1で交互に配置し、計算複雑性と長文コンテキスト性能のバランスを実現している。GDNは状態空間モデルと因果畳み込みを組み合わせ、固定サイズの再帰状態によりO(1)メモリで動作する。
ReplaySSMによる検証プロセスの最適化
MTP検証時の状態回復問題を解決するため、GDN状態のスナップショットではなく再帰入力のみを記録し、採択されたプレフィックスから折り返し実行するReplaySSMを採用している。この手法は検証結果をビット単位で不変に保ちつつ、検証スループットの低下をもたらさない。
重要な引用
It is Qwen's largest open-source model, with 2.4T total parameters and 95B active per token
In collaboration with the Qwen, NVIDIA, and AMD teams, SGLang covers the model in full on launch day.
at TP8 on B300, the NVFP4 checkpoint decodes at 378 tok/s with DSpark
This design strikes a balance between linear computational complexity and long-context modeling performance.
編集コメントを表示
編集コメント
超大規模モデルの Day-0 サポートは、技術的な成熟度と実用性を示す重要な指標である。特に NVFP4 量子化と専用カーネルの組み合わせは、コスト効率を重視する現場にとって即戦力となるだろう。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
SGLang と Miles で Qwen3.8 の Day-0 サポートを開始しました
SGLang と Miles で、Qwen3.8-2.4T-A95B の Day-0 サポートを開始できることをお知らせします。これは Qwen が公開した中で最大のオープンソースモデルで、パラメータ数は合計 2.4T(兆)、1 トークンあたりの活性化パラメータは 95B(億)です。ハイブリッドアテンションアーキテクチャを採用しているため、推論スタックが前提とする状態管理に関する多くの仮定に負荷がかかります。Qwen、NVIDIA、AMD の各チームとの連携により、SGLang は発売当日からこのモデルを完全にサポートしています。
主なポイント
- ハイブリッドアーキテクチャ: 92 レイヤー構成で、3:1 のパターンで交互に配置された 69 レイヤーの GDN(線形アテンション)レイヤーと 23 レイヤーの GQA(グループ化クエリアテンション)フルアテンションレイヤー、そして 512 エキスパートを持つ MoE(Mixture of Experts)層で構成されています。ルーティングは top-10 です。
- NVFP4 チェックポイント: Day-0 に公開した、私たちが量子化を行った RadixArk/Qwen3.8-2.4T-A95B-NVFP4 チェックポイントです。
- NVIDIA と共同開発したカーネルスタック: FlashInfer を通じて提供されています。MoE の最終処理を all-reduce と RMSNorm と融合させ、エンドツーエンドで 10% 以上の性能向上を実現しました。また、コンテキスト並列化に対応した GDN プレフィルルカーネルや、低遅延のシングル GEMM パス(約 4% の改善)も実装しています。
- スペキュレーティブ・ディコーディング: B300 で TP8(Tensor Parallelism 8)環境の場合、NVFP4 チェックポイントを使用すると、バッチサイズ 1、MTP(Multi-Token Prediction)の許容長 3.3 の条件下で346 tok/s、DSpark を使用して許容長 4 の条件で378 tok/s の推論速度を達成しました。どちらもボーナストークンを含んだ値です。
フェーズごとに並列処理を分割し、チャンク化されたパイプライン並列プリフィルとデータ・エキスパート並列デコードワーカーを組み合わせて PD 非集約構成を実現。これにより、8k/1k の設定で GPU あたり 5,126 トークン/秒の性能を発揮します。ステージングバッファを設けることで、両側のサイズや並列度を独立して調整可能です。
Miles を活用した Day-0 RL では、ネイティブ NVFP4 ベース上で LoRA 学習を共置し、BF16 の Megatron トレーナーと NVFP4 SGLang ロールアウトエンジンが同じ 64 GB の H100(300s)リソースを共有。GSM8K での GRPO 実行により、報酬の安定性とトレーニング/ロールアウト間の KL 散逸の平坦性が確認されています。
起動コマンドと各ワークロードの設定ガイドは、Qwen3.8 クックブック に掲載されています。
モデルアーキテクチャ
Qwen3.8-2.4T-A95B は、Qwen3.5/3.6 シリーズに継承されたハイブリッドアテンション設計を踏襲しています。この世代では総パラメータ数が 2.4T にスケールし、92 レイヤー構成の中でトークンあたり 95B が活性化されます。
アーキテクチャの主な特徴
Qwen3.8-2.4T-A95B のアーキテクチャには以下が含まれます:

- ハイブリッドアテンション:69 レイヤーの線形アテンション(GDN)と 23 レイヤーのフルアテンション(GQA)を 3:1 の間隔で交互に配置。計算コストの線形性と長文コンテキストのモデル性能のバランスを実現しています。
GDN(ゲートド・デルタネットワーク)では、線形アテンション層が状態空間モデル(SSM)と因果畳み込み(CausalConv1d)を組み合わせます。固定サイズの再帰状態が成長する KV キャッシュに代わり、各 GDN 層は O(1) のメモリ使用量で動作し、計算量は O(N) でスケーリングします。
スパース・エキスパート混合(MoE)では、各 MoE 層が 512 のルーティング済みエキスパートと 1 つの共有エキスパートを持ち、トップ k=10 のルーティングを行います。
機能サポート
Qwen3.8 の各リクエストでは、フルアテンション層用の KV キャッシュ、GDN 層用の再帰状態、そして GDN の畳み込みウィンドウという 3 つのサービング状態が維持されます。以下の機能は、プレフィックスキャッシング、推測デコーディング、PD 分離化においてこれら 3 つを一貫して管理する必要があります。
GDN 状態のための ReplaySSM
MTP 検証は、GDN レイヤーにおいて状態復旧の問題を引き起こします。各レイヤーは複数のドラフトトークンを検証する間に再帰状態をその場で更新しますが、コミットされるべきは受け入れられたプレフィックスに対応する状態のみです。Qwen3.8 ではこの課題に対して ReplaySSM を適用しています。この生入力リプレイ機構については、以前の投稿 で詳しく解説しました。
検証中は、ドラフト位置ごとに GDN 状態のスナップショットを取得するのではなく、再帰の入力を記録します。サンプリャが受け入れられた長さを決定した後、fold カーネルがコミットされたチェックポイントから受け入れられたプレフィックスをリプレイし、状態をその場で進めます。
BF16 状態の FlashInfer CuTe DSL GDN MTP カーネルに、記録パスを組み込みました。検証のプロローグには必要な値がレジスタ内に既に存在するため、ReplaySSM は対応するリングバッファへの書き込みを追加するだけです。これにより検証結果はビット単位で変更されず、検証スループットの低下も測定可能な範囲では発生しません。
同じ可変状態キャッシュパスを用いることで、MTP はプレフィックスキャッシングやオーバーラップスケジューリング、PD 分離とも組み合わせることが可能になります。
Prefill-Decode Disaggregation
PD 分離では、prefill ワーカーから decode ワーカーへ、型付き状態レジストリを介してすべての 3 つの状態タイプが転送されます。各登録されたハンドラは、対応する状態(KV キャッシュ、GDN の再帰状態、および GDN 畳み込みウィンドウ)をそれぞれ移動します。各畳み込みウィンドウ内の q、k、v サブブロックは、テンソル並列ランク間で独立してシャードされるため、転送層が宛先のレイアウトに合わせてスライスと再構成を行います。
同じペイロードには、MTP ドラフトモデルの KV キャッシュ、隠れ状態(hidden states)、トップ k メタデータが含まれており、これによりデコードワーカー上でスペキュレティブ・ディコーディングを継続して実行できます。プリフェッチとデコードで異なるアテンション・シャードレイアウトを使用する場合、GPU のステージングバッファが各層のスライスを結合し、チャンクごとに 1 つのバルク RDMA 転送として処理することで、各スライスごとの個別転送を不要にします。
Radix Cache and HiCache
Qwen3.8 は、SGLang の Unified Radix Cache を採用し、フルアテンション KV と GDN 状態の両方に対してプレフィックスキャッシングを可能にしています。FULL コンポーネントはフルアテンション KV キャッシュを管理し、MAMBA コンポーネントは GDN チェックポイントを管理します。各 GDN チェックポイントには、再帰状態と畳み込みウィンドウがバンドルされています。
共有された GDN チェックポイントへのフォワードパス実行前に、コピー・オン・ライト(Copy-on-Write)によってそのデータが個別のリクエスト用スロットに復元されます。SGLang は、プリフィルのチャンク境界と通常のデコード間隔において新しいチェックポイントを生成します。共有キャッシュコントローラーは、デバイスとホストの各階層にわたって KV コンポーネントと GDN コンポーネントを調整し、プレフィックスキャッシングや HiCache を MTP や PD 非集約(disaggregation)と組み合わせて利用可能にしています。
チャンク化されたパイプライン並列プリフィル
ここで測定した構成では、デコードとプリフィルは異なる並列レイアウトを好みます。デコードには、512 のエキスパートすべてをランク間で分割する広域エキスパート並列(wide expert parallelism)を使用します。以下の広域 EP 構成の両方で EPLB が有効化されています。測定された 8K プリフィル動作ポイントでは、ディスパッチとコンバインの集合操作を含む広域 EP 構成は、純粋なパイプライン並列(PP)よりもスループットが低いことが示されました。PD 非集約により、2 つのフェーズを別々のワーカー上で実行し、異なるレイアウトを使用できるようになります。
純粋なパイプライン並列プリフィルでは、各ステージが 92 レイヤーの連続したスライスを所有し、MoE のディスパッチ、コンバイン、または EPLB を使用せずにフル幅の GEMM(行列乗算)でそのスライスを実行します。主なインターステージ間の通信は、各ステージ境界における活性化値の転送です。リクエストをチャンクに分割することで、チャンク *i* のハンドオフと、バック・トゥ・バックでステージを流れるチャンク *i+1* の計算処理を重畳させることができます。
表示された動作点で 8K プリフィルを測定した結果(GPU あたり入力トークン数/秒):
| チェックポイント | チャンク化 PP プリフェッチ | 広域 EP + EPLB | 速度向上率 |
|---|---|---|---|
| FP8、16 GPU | 5231 (PP16) | 3421 | 1.53× |
| NVFP4、8 GPU | 8363 (PP8) | 5151 | 1.62× |
MTP を用いたパイプライン並列プリフィル
これまで、パイプラインプリフィルとスペキュレーティブデコーディングは排他的な関係にあり、スループットを優先するかユーザーごとの速度を優先するかを選ばざるを得ませんでした。その障壁は構造的なものでした。パイプライン化すると、埋め込み層が最初のステージに、LM ヘッドが最後のステージに配置されるため、単一のステージで両方を持つことができません。しかし、ドラフトヘッドには両方が必要です。
そこで私たちは、ドラフトヘッドを最後のステージに配置し、そのステージ内で必要な半分のデータを独自のコピーとして保持するようにしました。また、ドラフト KV を PD 境界に沿ってターゲット KV と共にステージングバッファに配置し、ドラフトを持たないランクはドラフト KV プールも持たないように設計しています。この結果、プリフィルのトポロジーは自由変数となり、デコードワーカーがスペキュレーティブデコーディングをどのように維持するかに関わらず、プリフィルワーカーのスライスを独立して設定できるようになりました。
ステージングバッファ:プリフィルとデコードレイアウトの分離
PP16 のプリフィルワーカーと広範囲な EP デコードワーカーでは、KV のパーティショニング方法に合意が得られません。もし共有 TP レイアウトを要求すれば、プリフィルは再びデコードのトポロジーに縛られ、上記で得たメリットすべてを失ってしまいます。
ステージングバッファはこの合意内容を根本から変えます。プリフィルは完了したチャンクをステージングバッファに書き込み、各ピアごとのウォーターマークを公開します。一方、デコード側はそこから任意のレイアウトへ散乱させながら、チャンク単位でプリフェッチを行います。この契約ではパーティショニングではなく「チャンクインデックスとウォーターマーク」が基準となるため、残りのプリフィル処理と転送処理を並行して実行することが可能になります。これにより、プリフィルとデコードの比率、パイプライン深度、デコード EP 幅をそれぞれ独立して調整できるようになりました。ドラフト KV の経路も同じパスを利用します。
パフォーマンス
8K/1K のパレート曲線
以下の数値は、GB300 環境における入力 8,192 トークン・出力 1,024 トークンの設定で測定したものです。図には NVFP4 と FP8 の PD(Prefill-Decode)非集約結果に加え、FP8 の TP(Tensor Parallelism)集計結果も含まれています。
スループットは「アクティブなモデル推論 GPU 1 基あたりの総トークン数/秒(入力+出力)」で定義され、ユーザーごとの速度は「リクエストあたり出力トークン数/秒」を示します。
代表的なエンドポイントラベルは、アクティブまたは割り当てられた GPU 数を示しています。P と D はそれぞれ、アクティブな Prefill(前処理)と Decode(生成)の割合を表します。
PP6 の最大構成では、24 基の割り当て GPU から 20 基(12 基が Prefill、8 基が Decode)をアクティブに使用し、TPS/GPU はアクティブなモデル推論 GPU 数で割って算出されます。
ここで示す PD 非集約のポイントでは、強制受け入れ長さを 3.3 に設定しています。FP8 の集計ポイントは、各実行で測定された TPOT(Time Per Output Token)を報告したものです。エンドポイントの詳細は以下の通りです: (原文の技術表記: 12P + 8D)
| チェックポイント | 最大スループット (PD disagg) | 低遅延エンドポイント |
|---|---|---|
| NVFP4 (2×PP6 prefill, DP2-attn / TP4 / EP8 decode) | 5,126 tok/s/GPU @ 30 tok/s/user | PD: 108 tok/s/GPU @ 334 tok/s/user |
| FP8 (2×PP16 prefill, DP4-attn / TP4 / EP16 decode) | 3,532 tok/s/GPU @ 30 tok/s/user | Aggregate CC1: 220 tok/s/GPU @ 362 tok/s/user |
NVFP4 のピーク性能では、2 つの PP6 事前計算ワーカーが DP2-attn / TP4 / EP8 デコードワーカーにデータを供給します。一方、低遅延エンドでは、NVFP4 は PD 非同期化された PP2×TP4 事前計算ワーカーと TP16 デコードワーカー(ユーザーあたり 334 トークン/秒)を使用し、FP8 では並行度 1 で TP16 統合ワーカー(ユーザーあたり 362 トークン/秒)が採用されています。
同じく双 PP6 の NVFP4 バックボーンに MTP を追加すると、スループットは +10.0% 向上し、ユーザーあたりの速度は 2.33 倍になります。この比較には更新された 5,126 ポイントは使用されていません。非対称性は期待される形状です。飽和状態のデコードワーカーでは、ステップあたりのトークン数は概ね running_requests × draft_tokens で決まり、メモリ予算によって固定されます。そのため、スペキュレーション・ディコーディングは、固定されたステップ予算を、各リクエストあたりのステップ数を減らしつつステップ長を長くする形に変換します。
カーネル最適化
- 統合 MoE 最終処理、AllReduce、RMSNorm。 隠れ次元が 8,192 でトップ 10 ルーティングを行う場合、事前計算中に最終処理の入力バッファは非常に大きくなります。入力シーケンス長が 8K のとき、
8192 × 10 × 8192 × sizeof(bfloat16)は 1.25 GiB を必要とし、最終処理が事前計算時間の最大 10% を占めることになります。私たちは、プログラム依存起動(PDL)チェーンと永続実行を活用した統合計算・通信カーネルを開発しました。テスト済み構成では、エンドツーエンドの遅延とスループットが 10% 以上改善されました。実装は FlashInfer PR #4358 で公開されています。
コンテキスト並列 GDN プリフィル。このカーネルはシーケンスをチャンクに分割して並列処理を行うため、長いシーケンスやバッチサイズが小さい場合でも GPU の利用率が向上します。これによりプリフィルのパフォーマンスが 2% から 3% 改善されます。実装の詳細については FlashInfer issue #3491 を参照してください。
低レイテンシの単一 GEMM パス。小規模な GEMM は、特に別々の Split-K 還元カーネルを必要とする場合にレイテンシに大きく寄与します。最適化された単一 GEMM パスにより、カーネルレベルで最大 1.5 倍の高速化と、エンドツーエンドで約 4% の改善が実現されます。詳細は FlashInfer PR #4266 をご覧ください。
融合された GDN デコード操作。低レイテンシのテンソル並列構成向けに、SplitKV 変形と Conv1D 演算を融合しました。これによりエンドツーエンドのデコードパフォーマンスが 2% から 3% 向上します。詳細は SGLang PR #32919 を参照してください。
RL: ネイティブ NVFP4 ベース上での LoRA トレーニング
Qwen3.8 向けの Day-0 RL は、Miles との colocated LoRA トレーニングです。Miles は BF16 の Megatron トレーナーであり、ネイティブ NVFP4 の SGLang ロールアウトエンジンと同一の 64 GB300s で動作します。アテンション投影に対するランク 32 のアダプターを GRPO でトレーニングします。短い GSM8K トレーニング実行で検証したところ、報酬と評価スコアが着実に上昇する一方で、train/rollout KL は平坦に保たれることを確認しました。

謝辞
本プロジェクトは、RadixArk の SGLang & Miles チーム、Qwen、アリババクラウド、NVIDIA、AMD が連携して進めたものです。
SGLang コミュニティ: Qiaolin Yu, Yuhao Yang, Xinyuan Tong, Ke Bao, Zijie Xia, Yi Sun, Mao Cheng, Yueming Yuan, Mingyi Lu, Haoguang Cai, Banghua Zhu, Ying Sheng
Qwen: Yi Zhang, Zheng Li
アリババクラウド: Tao Lan とそのチーム
AMD: Jacky Cheng, Zijie Chen, Hai Xiao
NVIDIA: NVIDIA と SGLang は、GDN、GEMMs、GQA、MoE 通信のカーネル開発で協力しました。これには前述の通信融合処理も含まれます。また、Qwen3.8 の性能評価結果で使用された並列構成についても両チームで共同作業を行いました。
原文を表示
We are excited to announce Day-0 support for Qwen3.8-2.4T-A95B in SGLang and Miles.
It is Qwen's largest open-source model, with 2.4T total parameters and 95B active per token,
and its hybrid attention architecture puts pressure on most of the assumptions a serving stack
makes about state. In collaboration with the Qwen, NVIDIA, and AMD teams, SGLang covers the
model in full on launch day. This post covers what it took.
Highlights
- A hybrid architecture. 92 layers, 69 GDN linear-attention layers interleaved with 23 GQA
full-attention layers in a 3:1 pattern, and MoE layers with 512 experts and top-10 routing.
- An NVFP4 checkpoint we quantized,
RadixArk/Qwen3.8-2.4T-A95B-NVFP4,
released Day-0.
- A kernel stack built with NVIDIA and shipped through FlashInfer: MoE finalize fused
with all-reduce and RMSNorm (10+% end to end), a context-parallel GDN prefill kernel, and
a low latency single-GEMM path (~4% end to end).
- Speculative decoding: at TP8 on B300, the NVFP4 checkpoint decodes at 346 tok/s
for batch size 1 with MTP at an accept length of 3.3, and at 378 tok/s with DSpark at
an accept length of 4. Both rates include the bonus token.
- Parallelism split by phase: chunked pipeline-parallel prefill and a
data-and-expert-parallel decode worker, composing under PD disaggregation to 5,126
tok/s per GPU on 8k/1k, with a staging buffer that lets the two sides be sized and
parallelized independently.
- Day-0 RL with Miles: colocated LoRA training on the native NVFP4 base, with a
BF16 Megatron trainer and NVFP4 SGLang rollout engines sharing the same 64 GB300s,
and a GRPO run on GSM8K verifying stable reward and flat train/rollout KL.
Launch commands and per-workload configuration guidance live in the
Model Architecture
Qwen3.8-2.4T-A95B continues the hybrid attention design of the Qwen3.5/3.6 series.
This generation scales to 2.4T total parameters, with 95B activated per token across
92 layers.
Architecture Highlights
The Qwen3.8-2.4T-A95B architecture includes:

- Hybrid Attention. It combines 69 linear-attention (GDN) layers and 23 full-attention (GQA) layers in a 3:1 interleaved pattern. This design strikes a balance between linear computational complexity and long-context modeling performance.
- GDN (Gated Delta Network). The linear-attention layers combine a State Space Model (SSM) with causal convolution (CausalConv1d). A fixed-size recurrent state replaces the growing KV cache, so each GDN layer uses O(1) memory while its computation scales as O(N).
- Sparse Mixture-of-Experts (MoE). Each MoE layer provides 512 routed experts plus a single shared expert, with top-k=10 routing.
Feature Support
Each Qwen3.8 request maintains three forms of serving state: the KV cache for
full-attention layers, the recurrent state for GDN layers, and the GDN convolution
windows. The features below must manage all three consistently across prefix caching,
speculative decoding, and PD disaggregation.
ReplaySSM for the GDN State
MTP verification creates a state-recovery problem for GDN layers. Each layer updates
its recurrent state in place while verifying multiple draft tokens, but only the state
corresponding to the accepted prefix should be committed. Qwen3.8 applies
ReplaySSM to this problem. We described this
raw-input replay mechanism in detail in our
During verification, it records the recurrence inputs instead of snapshotting the full
GDN state at every draft position. Once the sampler determines the accepted length, a
fold kernel replays the accepted prefix from the committed checkpoint and advances the
state in place.
We integrated the recording path into FlashInfer's CuTe DSL GDN MTP kernel for BF16
states. The verify prologue already has the required values in registers, so ReplaySSM
only adds the corresponding ring-buffer stores. It leaves verification results bitwise
unchanged and introduces no measurable verify-throughput regression. The same
mutable-state caching path allows MTP to compose with prefix caching, overlap scheduling,
and PD disaggregation.
Prefill-Decode Disaggregation
PD disaggregation transfers all three state types from the prefill worker to the
decode worker through a typed state registry. Each registered handler moves its
corresponding state, including the KV cache, GDN recurrent state, and GDN convolution
windows. The q, k, and v sub-blocks of each convolution window are sharded
independently across tensor-parallel ranks, so the transfer layer slices and
reassembles them for the destination layout.
The same payload carries the MTP draft model's KV cache, hidden states, and top-k
metadata, allowing speculative decoding to continue on the decode worker. When prefill
and decode use different attention-sharding layouts, a GPU staging buffer coalesces the
per-layer slices into one bulk RDMA transfer per chunk instead of issuing separate
transfers for each slice.
Radix Cache and HiCache
Qwen3.8 uses SGLang's
to enable prefix caching for both full-attention KV and GDN state. The FULL
component manages the full-attention KV cache, while the MAMBA component manages
GDN checkpoints. Each GDN checkpoint bundles the recurrent state and convolution
windows.
Before a forward pass mutates a shared GDN checkpoint, copy-on-write restores it
into a private request slot. SGLang creates new checkpoints at prefill chunk
boundaries and regular decode intervals. A shared cache controller coordinates the
KV and GDN components across device and host tiers, allowing prefix caching and
HiCache to compose with MTP and PD disaggregation.
Chunked Pipeline-Parallel Prefill
Decode and prefill favor different parallel layouts in the configurations measured
here. For decode, we use wide expert parallelism to shard all 512 experts across ranks.
Both wide-EP configurations below have EPLB enabled. At the measured 8K prefill
operating points, the wide-EP configurations, which include dispatch and combine
collectives, showed lower throughput than pure PP. PD disaggregation lets the two
phases run on separate workers and use different layouts.
With pure pipeline-parallel prefill, each stage owns a contiguous slice of the 92 layers
and executes that slice on one rank, using full-width GEMMs without MoE dispatch,
combine, or EPLB. The main inter-stage communication is the activation transfer at each
stage boundary. Splitting a request into chunks allows the hand-off for chunk *i* to
overlap the compute of chunk *i+1* as the chunks flow through the stages back to back.
Measured on 8K prefill at the operating points shown, in input tokens per second per GPU:
| Checkpoint | Chunked PP prefill | Wide EP + EPLB | Speedup |
|---|---|---|---|
| FP8, 16 GPUs | 5231 (PP16) | 3421 | 1.53× |
| NVFP4, 8 GPUs | 8363 (PP8) | 5151 | 1.62× |
Pipeline-Parallel Prefill with MTP
Pipelined prefill and speculative decoding used to be mutually exclusive, which meant
choosing between the throughput above and the per-user speed below. The obstruction was
structural: under pipelining the embedding sits on the first stage and the LM head on
the last, so no single stage holds both, yet the draft head needs both. We put the draft
head on the last stage with its own copy of the half it does not receive, stage the
draft KV across the PD boundary alongside the target KV, and let the ranks that host no
draft own no draft KV pool. The prefill topology becomes a free variable: the decode
worker keeps its speculative decoding however the prefill worker is sliced.
Staging Buffer: Decoupling Prefill and Decode Layouts
A PP16 prefill worker and a wide-EP decode worker do not agree on how KV is partitioned,
and requiring a shared TP layout would drag prefill back onto decode's topology and
forfeit everything above.
The staging buffer changes what the two sides agree on. Prefill writes completed chunks
into staging buffers and publishes a per-peer watermark; decode scatters out of them into
whatever layout it uses, prefetching chunk by chunk. The contract is a chunk index and a
watermark rather than a partitioning, allowing transfer to overlap the remaining
prefill. The prefill:decode ratio, pipeline depth, and decode EP width can therefore be
tuned separately. The same path carries draft KV.
Performance
Pareto Curve on 8K/1K
All numbers below are 8,192-input / 1,024-output on GB300. The figure includes
PD-disaggregated results for NVFP4 and FP8, plus aggregate TP results for FP8.
Throughput is total (input + output) tokens per second per active model-serving GPU;
per-user speed is output tokens per second per request.
The representative endpoint labels report active/allocated GPU counts; P and D
show the active prefill/decode split. The PP6 maximum uses 20 active GPUs
(12P + 8D) from 24 allocated, and TPS/GPU is divided by active model-serving GPUs.
The PD-disaggregated points shown here use a forced accept length of 3.3. The FP8
aggregate points report the TPOT measured in their respective runs. The endpoints are:
| Checkpoint | Max throughput (PD disagg) | Low-latency endpoint |
|---|---|---|
| NVFP4 (2×PP6 prefill, DP2-attn / TP4 / EP8 decode) | 5,126 tok/s/GPU @ 36 tok/s/user | PD: 108 tok/s/GPU @ 334 tok/s/user |
| FP8 (2×PP16 prefill, DP4-attn / TP4 / EP16 decode) | 3,532 tok/s/GPU @ 30 tok/s/user | Aggregate CC1: 220 tok/s/GPU @ 362 tok/s/user |
The NVFP4 peak uses two PP6 prefill workers feeding a DP2-attn / TP4 / EP8 decode
worker. At the low-latency end, NVFP4 uses a PD-disaggregated PP2×TP4 prefill worker
with a TP16 decode worker (334 tok/s/user), while FP8 uses a TP16 aggregate worker at
concurrency 1 (362 tok/s/user).
On the matched dual-PP6 NVFP4 backbone, adding MTP moves throughput +10.0% and per-user
speed 2.33×. The updated 5,126 point is not used for that matched comparison.
The asymmetry is the expected shape: in a saturated decode worker the tokens per step are
roughly running_requests × draft_tokens and fixed by the memory budget, so speculative
decoding mostly converts a fixed step budget into fewer, longer steps per request.
Kernel Optimizations
- Fused MoE finalize, AllReduce, and RMSNorm. With a hidden dimension of 8,192
and top-10 routing, the finalize input buffer becomes large during prefill. At an
input sequence length of 8K, 8192 × 10 × 8192 × sizeof(bfloat16) requires
1.25 GiB and makes finalization account for up to 10% of prefill time. We developed
fused computation and communication kernels using Programmatic Dependent Launch
(PDL) chaining and persistent execution. In our tested configurations, they improved
end-to-end latency and throughput by more than 10%. The implementation is available
in FlashInfer PR #4358.
- Context-parallel GDN prefill. This kernel partitions the sequence into chunks
and processes them in parallel, increasing GPU utilization for long sequences and
small batches. It improves prefill performance by 2% to 3%. Implementation details
are tracked in
FlashInfer issue #3491.
- Low-latency single-GEMM path. Small GEMMs contribute substantially to latency,
especially when they require a separate Split-K reduction kernel. The optimized
single-GEMM path delivers up to 1.5× kernel-level speedup and approximately 4%
end-to-end improvement. See
FlashInfer PR #4266.
- Fused GDN decode operations. We fused the SplitKV reshape and Conv1D operations
for low-latency tensor-parallel configurations, improving end-to-end decode
performance by 2% to 3%. See
SGLang PR #32919.
RL: LoRA Training on the Native NVFP4 Base
Day-0 RL for Qwen3.8 is colocated LoRA training with
Miles: a BF16 Megatron trainer and native
NVFP4 SGLang rollout engines sharing the same 64 GB300s, with rank-32 adapters
on the attention projections trained with GRPO. We verified the setup with a
short GSM8K training run: reward and eval score climb steadily while the
train/rollout KL stays flat.

Acknowledgments
This work was a collaboration among the SGLang & Miles team at RadixArk, Qwen,
Alibaba Cloud, NVIDIA, and AMD.
SGLang Community: Qiaolin Yu, Yuhao Yang, Xinyuan Tong, Ke Bao, Zijie Xia, Yi Sun, Mao Cheng, Yueming Yuan, Mingyi Lu, Haoguang Cai, Banghua Zhu, Ying Sheng
Qwen: Yi Zhang, Zheng Li
Alibaba Cloud: Tao Lan and colleagues
AMD: Jacky Cheng, Zijie Chen, Hai Xiao
NVIDIA: NVIDIA and SGLang collaborated on kernels for GDN, GEMMs, GQA, and MoE
communication, including the communication fusions described above. The teams also worked on the parallel configurations used in the Qwen3.8 performance results.
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み