SpecForge v0.3.0、推論と学習を分離した新ランタイムを発表
本文の状態
日本語全文を表示中
詳細モードで約27分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
LMSYS Blog
LMSYS は SpecForge v0.3.0 をリリースし、推論と学習の分離、分散型トレーニングの実装、および複数のスペキュレーティブ・デコーディングアルゴリズムへの対応を可能にした。
AI深層分析を開く2026年8月5日 11:05
AI深層分析
キーポイント
オンライン学習の完全な分散化
パッチ適用された SGLang サーバーがターゲットモデルの特徴をキャプチャし、Mooncake がテンソルを転送し、トレーナーワーカーが独立した制御平面を通じて軽量参照を消費する構成となった。
推論と学習の独立したスケーリング
8xH20 テストベッドにおいて、3 つの SGLang サーバーと 5 つのトレーナーワーカーというトポロジが、従来の colocated 実装と比較してエンドツーエンドのトレーニングスループットを約 10% 向上させた。
多様なドラフトモデルファミリーへの対応
EAGLE3, EAGLE3.1, P-EAGLE, DFlash, Domino, DSpark および DFlash のためのオプション目標である D-PACE を含む複数のスペキュレーティブ・デコーディング手法を単一のランタイムでサポートする。
コミュニティ貢献によるドラフトモデルの公開
パートナーおよび個人貢献者が、異なるターゲットモデルと異なるスペキュレーティブ・デコーディング手法に対してオープンデータのみを使用してトレーニングしたドラフトモデルを多数公開している。
トレーナーとターゲットモデルの境界明確化
トレーナーはターゲットモデル自体を所有する必要はなく、必要なトークンシーケンスや特徴量のみを必要とする。この境界を明示することで、SpecForge は単一のトレーニングプロセスから調整されたパイプラインへと変化する。
重要な引用
Online training is now fully disaggregated.
Inference and training can scale independently.
One runtime now supports multiple drafting families.
trainers do not need to own the target model
編集コメントを表示
編集コメント
LMSYS が推進する SpecForge の進化は、大規模言語モデルのトレーニング効率化において重要なマイルストーンとなる。特に推論と学習の分離によるスケーラビリティの向上は、実運用環境での導入を加速させる要素である。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
SpecForge の初版リリース時、トレーニングジョブは凍結されたターゲットモデルと最適化中のドラフトモデルの両方を単一のプロセスで管理していました。これにより EAGLE3 によるドラフトモデルの学習が現実的なものとなり、SGLang と直接互換性を持つようになりました。しかし同時に、性質の異なる二つのワークロードを同じプロセスライフサイクルやリソーストポロジーに縛り付ける結果にもなっていました。
本日、私たちは SpecForge の大幅アップデートを発表します。新しいランタイムではターゲットモデルの推論とドラフトモデルの学習が分離され、より広範なスペキュレイティブ・ディコーディングアルゴリズムをサポートします。また、オンライン、オフライン、そして非集約(disaggregated)ワークフローを一つの型付きトレーニングエントリーポイントで統合しました。今回のリリースに併せて、異なるスペキュレイティブ・ディコーディング手法やターゲットモデルに対応したドラフトモデルも新たに公開します。
新機能
- オンライン学習が完全に非集約化されました。 パッチ適用された SGLang サーバーがターゲットモデルの特徴量をキャプチャし、Mooncake がテンソルを転送、トレーナーワーカーは独立した制御平面を通じて軽量な参照を受け取ります。
- 推論と学習のスケールが可能になりました。 8xH20 のテストベッドにおいて、「3 つの SGLang サーバーと 5 つのトレーナーワーカー」というトポロジー構成が、以前の集約型実装と比較してエンドツーエンドのトレーニングスループットを約 10% 向上させました。
一つのランタイムで複数のドラフトモデルファミリーをサポートするようになりました。具体的には、EAGLE3、EAGLE3.1、P-EAGLE、DFlash、Domino、そして DSpark です。また、DFlash にはオプションの D-PACE オブジェクトも利用可能です。
より多くのドラフトモデルが公開されています。その多くはコミュニティからの貢献によるものです。パートナー企業や個人開発者が、このランタイムを用いてさまざまな推測的デコーディング手法やターゲットモデル向けにドラフトモデルを訓練し、オープンデータのみを使用して公開しました。
今回のリリースでは、キャプチャ、トレーニング、エクスポート、そして SGLang によるサービングが制御された例に対して合致しているかを確認する「トレーニングとサービングの一貫性ゲート」も搭載されています。これは、本格的なトレーニングを実行する前に素早く正しさを検証するためのチェック機能です。
カップルド・トレーナーからトレーニングパイプラインへ
オンラインでのドラフトモデルの訓練には、2 つの異なるワークロードが含まれています。
- ターゲット側では、学習中の会話データに対して大規模な固定モデルを実行し、隠れ状態をキャプチャします。これは推論処理が中心となるため、テンソル並列化を多用することが多く、本番環境向けの推論エンジンからの恩恵を受けます。
- ドラフト側では、より小規模なモデルに対して順伝播と逆伝播を行いながら訓練を行います。データ並列化またはシーケンス並列化によってスケーリングされ、メモリや計算リソースの特性はターゲット側とは異なります。
従来の集約型設計では、両側が同じライフサイクルと固定されたリソース構成を共有していました。これにより、以下の 3 つの実用的な制限が生じていました。
- 推論から学習への比率が固定されること。 トレーナーワーカーを増やしても、片側のボトルネック解消のみが必要な場合でも、ターゲットモデルの配置に影響が出ました。
- リソース干渉。 ターゲットキャプチャとドラフト最適化が、同じく密結合されたジョブ内で競合しました。
- 共通の障害境界。 機能生成が遅延または失敗すると学習が停止し、逆に過剰な生産が発生するとメモリ圧力が無制限に増大する恐れがありました。
重要な洞察はシンプルです。トレーナーがターゲットモデルを所有する必要はありません。 トレーニング目的で必要となるトークンシーケンス、マスク、およびターゲット特徴があれば十分です。この境界を明確に定義することで、SpecForge は「ターゲットモデルを含むトレーニングプロセス」から、「調整されたトレーニングパイプライン」へと進化します。
1 つの境界と 3 つの契約
新しいオンラインランタイムには、プロデューサープールとコンシューマープールが用意されています。プロデューサーはパッチ適用済みの SGLang キャプチャサーバー上でプロンプトをスケジューリングします。SGLang は特徴量テンソルを Mooncake に書き込み、SpecForge は制御平面を通じて軽量な SampleRef メタデータのみを送信します。トレーナーランクは、バッチ構築の準備が整った時点でこれらの参照を解決します。
Figure 1. オンライン非集約型トレーニングフロー。大きなテンソルはデータプレーンに留まり、参照情報とライフサイクルの状態のみがコントロールプレーンを通過します。
1. キャプチャ契約
deployment.disaggregated.server_urls に記載されたすべての URL は、パッチ適用済みの SGLang サーバーに接続されるロールアウトワーカーを生成します。各ワーカーは共有コントローラーから重複しないプロンプトをリースするため、トレーニングのトポロジーを変更することなくキャプチャ容量を増減できます。
キャプチャ機能のサポートは、固定された sglang==0.5.14 の上に適用される小さなパッチです。`patches/sglang/v0.5.14/spec-capture.patch` には、--enable-spec-capture フラグと、キャプチャされたテンソルを特徴ストアのキーレイアウトに従って Mooncake に直接書き込むサーバーサイドのシンクが追加されています。このパッチを適用した通常の SGLang サーバーが、キャプチャサーバーとなります。
これにより、明確な所有権の境界線が引かれます。SGLang がターゲットモデルの並列処理と特徴のキャプチャを担当し、SpecForge がプロンプトスケジューリング、参照公開、およびドラフトモデルの最適化を担当します。
2. デリバリー契約
キャプチャされた隠れ状態は容量が大きくなるため、Python のキューや制御データベースを介して転送するとすぐにボトルネックになります。SpecForge では、テンソルストレージとサンプル調整機能を分離しています。
- SGLang が特徴量テンソルを Mooncake に書き込みます。
- プロデューサーはテンソルを含まない
SampleRefレコードを公開します。 FeatureDataLoaderがこれらの参照を解決し、テンソルを含むトレーニングバッチに変換します。
学習器は、オプティマイザステップの完了確認後に特徴量オブジェクトを解放します。
このトレーニングループは特定の転送手段に依存せず、FeatureStore の契約に基づいて動作します。そのため、同じ消費経路でローカル特徴量、共有ディレクトリ、あるいは Mooncake を介したオンラインキャプチャを柔軟に使い分けることが可能です。
3. ライフサイクル契約
分散されたランクは同期して進行する必要があります。消費者側はオプティマイザステップの単位(クアンタ)で完全に参照を解放するため、すべてのランクが同期更新に必要なサンプルを確実に受け取ることができます。転送バッファの上限と下限を示すウォーターマークによってキャプチャが一時停止・再開されるため、生産者がトレーニングから極端に先行してしまうのを防ぎます。
オプティマイザ境界では、消費者側ランク 0 が、参照解放による転送深度の減少や特徴量オブジェクトの解放前に、完了したサンプル ID を SQLite の永続化された台帳に記録します。中断が発生した場合、この台帳を参照することで完了済みのサンプル ID をスキップし、残りの参照を再プレイできます。
失敗も生産者側で明示的に扱われます。キャプチャワーカーが失敗すると、リースしていたプロンプトを共有コントローラへ返却するため、正常なワーカーは継続して動作できます。すべてのキャプチャサーバーが利用不可になった場合や、プロンプトのリトライ予算を使い果たした場合は、システムは明確にエラーを報告して実行を停止します。
これらの契約により、トレーニング側は特徴量転送手段から独立しつつ、分散ステップの同期、バッファリングの制限、および回復機能のセマンティクスが損なわれることはありません。
この分離によって実現される利点
この新しい境界線により、2 つのユーザーが直接体感できるメリットが生まれました。まず、インフラをワークロードに合わせて最適化できるようになります。次に、アルゴリズムの実装において、1 つのトレーニングランタイムを共有することが可能になります。
推論用と学習用のプールを独立させる
ターゲットモデルのテンソル並列処理とエキスパート並列処理は SGLang が担当し、ドラフトモデルのデータ並列処理とシーケンス並列処理は SpecForge が担当します。この 2 つのプールは、1 つのローカル管理者の下で実行することも、スケジューラーが管理する別々のジョブとして独立して実行することも可能です。
両方のプールが固定された GPU リソースを共有する場合、その比率はリソースのトレードオフとなります。ただし、今回の違いは、このトレードオフがトレーニングプログラムにハードコードされるのではなく、明示的に設定可能になった点です。リソースに余裕があれば、どちらかのプールを拡張しても、もう一方に同じトポロジーを採用させる必要はありません。
初期システム結果:キャプチャサーバー 3 台とトレーナー 5 台
8×H20 のテスト環境で、Qwen3-8B Domino のトレーニング(コンテキスト長 3K トークン)を評価しました。ワークロードを SGLang キャプチャサーバー 3 台とトレーナーワーカー 5 台に再配置した結果、従来の集約型実装と比較して、測定されたエンドツーエンドのトレーニングスループットが約 10% 向上しました。
| ランタイム | ターゲットキャプチャ | ドラフトトレーニング | 相対的なエンドツーエンドのトレーニングスループット |
|---|---|---|---|
| 従来のコロケート版 | トレーニングジョブと結合 | 固定のコロケートレイアウト | 1.00× |
| 新しいディスアグリゲートランタイム | SGLang サーバー 3 台 | トレーナーワーカー 5 基 | 1.10× |
以下のプロファイルは、2 つのランタイムトポロジーにおける代表的なトレーニングウィンドウを示しています。
(a) コロケート型ベースライン

(b) ディスアグリゲート型:SGLang サーバー 3 台とトレーニングワーカー 5 台

*図 2. 3K トークンコンテキスト長における Qwen3-8B Domino の代表的なトレーニングウィンドウ。スループット表はエンドツーエンドの比較を示し、トレースは 2 つの実行パターンの定性的な概観を提供します。
このワークロードでは、プロファイリングにより、性能向上の要因が「特徴量の生成供給」と「トレーナー側の需要」をより適切にマッチングさせた点にあることが示されました。さらに大きな利点は設定の柔軟性です。異なるターゲットサイズ、シーケンス長、ドラフティングアルゴリズムに対応する際にも、別のトレーニング実装を追加することなく、キャプチャーからトレーニングまでの比率を自由に調整できます。
複数のドラフティングファミリーに共通するランタイム
SpecForge は当初、EAGLE3 に強い焦点を当てて開発されました。新しいランタイムでは、システム全体の共通課題と戦略固有のモデル化コードが明確に分離されています。
すべての戦略は、プロンプトスケジューリング、特徴量転送、分散実行、チェックポイント処理、プロセス監視といった機能を再利用します。各戦略で定義されるのは、必要なターゲット特徴量、それらをトレーニングバッチに変換する方法、ドラフトモデルのアーキテクチャ、そして最適化目標のみです。
| 手法 | 戦略固有のアイデア | SpecForge のサポート状況 |
|---|---|---|
| EAGLE3 | トレーニング時のテストと多層ターゲット特徴融合を用いた直接トークン予測 | オンライン非集約、ローカルオフライン、および非集約オフライン; オプションの LK 損失 目的関数 |
| P-EAGLE | 共有隠れ状態を介した並列多トークン予測 | オンライン非集約 |
| EAGLE3.1 | 層ごとの正規化とアテンションドリフト設定を備えた EAGLE3 構成のバリアント | eagle3 ストラテジーを通じたオンライン非集約 |
| DFlash | トークンブロックを並列で予測するブロック拡散ドラフティング | オンライン非集約、ローカルオフライン、および非集約オフライン; オプションの D-PACE 目的関数 |
| Domino | 軽量因果補正ヘッドに続く並列ドラフトバックボーン | オンライン非集約、ローカルオフライン、および非集約オフライン |
| DSpark | 適応的検証のための信頼度モデリングを備えた半自己回帰ドラフティング | オンライン非集約、ローカルオフライン、および非集約オフライン |
ここで言う「統一」とは、設定スキーマ、ランチャー、データフロー契約、トレーニングライフサイクル、チェックポイントの表面がすべて共通であることを意味します。すべての戦略があらゆるデータソースとトポロジーの組み合わせをサポートするわけではありません。
データソースとデプロイメントは独立した選択事項
「オンライン」と「オフライン」は、ターゲット特徴がどこから来るかを示す用語です。「ローカル」と「分散(disaggregated)」は、トレーニングワークフローをどのようにデプロイするかを表します。これらの概念を明確に区別することで、サポートされる組み合わせの理解が容易になります。
| 機能ソース | ローカル/データフロー展開 | プロデューサー/コンシューマー展開 |
|---|---|---|
| オンライン SGLang キャプチャ | なし | あり(Mooncake を使用) |
| オフライン機能チェックポイント | あり | あり(共有機能ストアを使用) |
すべてのオンライン実行ではプロデューサー/コンシューマーのトポロジーが採用され、トレーナーは colocated なターゲットモデルを初期化しません。オフラインでの EAGLE3、DFlash、Domino、DSpark のトレーニングは、ローカル環境または別々の ingestion と consumer プールを用いて実行可能です。P-EAGLE は現在、オンライントレーニングのみをサポートしています。
機能ソースはデータポリシーではない
実務上、もう一つの重要な区別があります。キャプチャサーバーは、あなたが提供した会話に対して完全な prefill を実行しますが、トレーニング用の応答を生成することはありません。つまり、オンラインキャプチャではドラフトがどのテキストから学習するかを選ぶのはトポロジーではなく、データセット自体です。この選択は、いかなるトポロジーの決定よりも重要です。データセット内の応答が人間によって記述されたものか、それとも別のモデルによって生成されたものかによって、ドラフトはターゲットモデル自身がめったに生成しないテキストを継続するよう学習してしまいます。その結果、同じドラフトがターゲット生成データ上で達成する水準に比べて、受け入れ率は著しく低く飽和します。
私たちのトレーニング実行において、ターゲットモデルでデータセットの応答を再生成すること(サービスされる際の推論モードで貪欲に実行)は、最終的な受け入れ率向上における最大の要因でした。あらゆる戦略に対して、ターゲット生成データの採用を推奨します。以下で説明する consistency gate も同じ性質に基づいています。このゲートが通過できるのは、学習済みサンプルが温度 0 でターゲットモデルによって再現されるテキストである場合だけです。
完全な戦略マトリックスについては トレーニングガイド を、デプロイの詳細については 非集約型トレーニングガイド をご覧ください。
設定は一つ、エントリーポイントは一つ
トポロジー(構成図)は、モデルやデータ、アルゴリズム、オプティマイザーの設定と同じ型付き YAML ドキュメント内に記述されます。以下の抜粋では、前述の「3 サーバー/5 トレーナー」の構成例を示しています。
training:
strategy: domino
deployment:
mode: disaggregated
trainer:
nnodes: 1
nproc_per_node: 5
disaggregated:
control_dir: outputs/qwen3-8b-domino/control
consumer_state_dir: outputs/qwen3-8b-domino/consumer-state
backend: mooncake
server_urls:
- http://capture-0:30000
- http://capture-1:30000
- http://capture-2:30000
同じコマンドで、選択したトポロジーが解決され、起動します。
specforge train --config run.yaml
単一ノード上では、ランチャーが SpecForge の両方の役割を監督できます。外部スケジューラーの下では、同じ設定を用いてプールを独立して起動することも可能です。
# Inference and ingestion pool
specforge train --config run.yaml --role producer
# Draft-model training pool
specforge train --config run.yaml --role consumer
メソッド固有の Python トレーニングエントリーポイントは存在しません。完全で実行可能な設定は、`examples/configs` の下に用意されています。
トレーニング例:Qwen3.6-27B
単一ノード上で、1 つのコマンドを実行するだけでトレーニングと推論を開始できます。
specforge train --config examples/configs/qwen3.6-27b-dspark-disaggregated.yaml
トレーニング例:Kimi-K3
トレーニングレシピは docs/recipes/kimi-k3-dspark-disaggregated.md に記載されています。
ドラフトモデルのサービングパフォーマンス
トレーニングシステムの処理能力とドラフトモデルの推論速度向上は、異なる問いに答えるものです。上記の H20 の結果はトレーニングパイプラインの効率を測定したものであり、以下に示す評価は SpecForge で学習されたドラフトチェックポイントのエンドツーエンド推論速度向上を測るものですが、10% のトレーニング実行時間短縮という結果の根拠として用いるものではありません。
Qwen3.6-27B-Domino を 2 枚の A100 GPU で評価しました。すべての数値は、ターゲットモデルのみによる自己回帰的デコーディング(AR = 1.00×)に対する相対値です。B8 と B16 は、それぞれドラフトブロックサイズが 8 と 16 の場合を示します。
コンカレンシー = 1
| データセット | AR | MTP-S3 | MTP-S7 | DFlash-B8 | DFlash-B16 | Domino-B8 | Domino-B16 |
|---|---|---|---|---|---|---|---|
| GSM8K | 1.00× | 2.68× | 3.22× | 3.79× | 4.25× | 4.36× | 5.25× |
| MATH500 | 1.00× | 2.80× | 3.55× | 4.29× | 5.07× | 4.60× | 5.72× |
| HumanEval | 1.00× | 2.65× | 3.18× | 3.98× | 4.47× | 4.20× | 4.98× |
| MBPP | 1.00× | 2.57× | 2.98× | 3.73× | 3.91× | 3.97× | 4.49× |
| MT-Bench | 1.00× | 2.44× | 2.65× | 3.00× | 3.05× | 3.31× | 3.44× |
| Alpaca | 1.00× | 2.38× | 2.54× | 2.87× | 2.84× | 3.18× | 3.34× |
並列処理数 1 の場合、Domino-B16 は全 6 つのデータセットで最も高い速度向上を示し、Alpaca では 3.34 倍、MATH500 では 5.72 倍に達しました。
手法と対象に応じたドラフトモデルの拡充
トレーニングスタックが有用であるためには、実際にデプロイ可能なチェックポイントを生み出す必要があります。スペキュレティブ・ディコーディング(推測的デコーディング)はトークンの採択率やエンドツーエンドの速度において理論的な保証と一貫した向上をもたらしますが、オープンソースコミュニティでの採用が進まなかった背景には、本番環境で使えるトレーニングツールの不足、高品質なドラフトチェックポイントの希少性、そしてそれらのドラフトモデルが学習に用いたデータの規模が小さかったことが挙げられます。
そこで、ランタイムと並行して、より広範なオープンソースのドラフトモデル群が利用可能になりました。驚くべき点は、これらのモデルを私たちが自ら訓練したものが極めて少ないことです。SpecForge を本番環境で運用しているチームは、実際に提供している対象モデル向けにドラフターを訓練し、その重み(ウェイト)を共有しました。これらはすべてオープンデータのみを用いて訓練されたものです。以下の 11 チェックポイントのうち 9 つは、Ant Group AQ、RadixArk、中国招商銀行、Domino の著者たち、そしてコミュニティの個人メンバーから提供されたものです。
この流入によって、カタログは以下の 2 つの軸で拡大しました:
- より広範な対象カバレッジ:コミュニティが実際にデプロイしているオープンソースモデルを網羅し、指令微調整済みモデルから推論モデル、そして現在公開されている最前線のオープンウェイトリリースまで範囲を広げました。
より広範な手法への対応。前節で説明したアルゴリズムに基づき、今回公開されたチェックポイントは EAGLE3、DFlash、Domino、そして DSpark を網羅しています。対象モデルの一部にはネイティブな MTP ヘッドも搭載されており、同じターゲット上でこれらのドラフターとネイティブ MTP の性能を比較できる環境が整いました。
SpecForge でドラフトモデルのトレーニングを行った場合は、ぜひこちらに追加してください。新たなターゲットやアルゴリズムの提供を歓迎します。
公開されたモデルとパフォーマンス
すべてのチェックポイントは Hugging Face の SpecBundle コレクション に公開されています:
| 対象モデル | ドラフトモデル | アルゴリズム | プロバイダー |
|---|---|---|---|
| GLM-5.1 | 🤗 | EAGLE3 | Ant Group AQ |
| Kimi-K2.5 | 🤗 | EAGLE3 | Ant Group AQ |
| Kimi-K2.6 | 🤗 | EAGLE3 | Ant Group AQ |
| Kimi-K2.7-Code | 🤗 | EAGLE3 | Ant Group AQ |
| Qwen3-32B | 🤗 | EAGLE3 | China Merchants Bank |
| Qwen3.5-35B-A3B | 🤗 | EAGLE3 | SpecForge |
| Step-3.5-Flash | 🤗 | EAGLE3 | RadixArk |
| Qwen3.5-397B-A17B | 🤗 | DFlash | LMSYS |
| Qwen3.6-27B | 🤗 | Domino | Domino Team |
| Inkling-Small | 🤗 | DSpark | RadixArk |
| Kimi-K3 | 🤗 | DSpark | RadixArk |
これらのモデルの一部の結果を、アルゴリズムごとにグループ化して以下に示します。
EAGLE3
*図 3. 同じドラフト設定(ステップ数 3、top-k 1、ドラフトトークン数 4)で動作する EAGLE3 ドラフトモデル 3 つ。自己回帰ベースラインに対する出力スループットを比較し、各棒グラフの上に速度向上倍率を表示しています。Step-3.5-Flash と Qwen3-32B は 4 × H200 で並列度 16 の条件下で測定されました。Kimi-K2.7-Code の数値は、その モデルカード に掲載されている 8 × H200、並列度 8 の結果です。
DFlash
*図 4. Qwen3.5-397B-A17B の結果(8 × B200、TP8、bfloat16、思考機能有効、貪欲デコーディング、最大出力トークン数 4096)。ブロックサイズ 8 の DFlash と自己回帰ベースラインの出力スループットを比較しています。ブロックサイズ 16 ではさらに高い性能を発揮し(並列度 1 で HumanEval において最大 4.31 倍)、負荷がかかる環境ではブロックサイズ 8 がより優れた選択肢となります。MTP 比較を含む詳細な数値は、モデルカード で確認できます。
Domino
図 5:Qwen3.6-27B を 2 枚の A100(TP2、BF16、思考機能有効、貪欲デコーディング)で実行した結果。ブロックサイズ 8 の Domino と自己回帰ベースラインの出力スループットを比較し、各バーの上に速度向上倍率を表示しています。並行度 1 で効果は最大となり、MATH500 では最大 4.60 倍の高速化が実現されました。一方、並行度が 32 に達すると、ターゲットモデル自体の利用率が高まるため、速度向上幅は 1.48〜2.11 倍に縮小します。
他のブロックサイズや MTP、DFlash との比較を含む、各ワークロードごとの詳細数値は モデルカード で確認できます。
DSpark
図 6:8 枚の B300 を使用した Kimi-K3 の結果。5 つのワークロード全体における DSpark と自己回帰ベースラインの出力スループットを比較し、各バーの上に速度向上倍率を表示しています。並行度 1 で効果は最大となり、GSM8K では最大 3.14 倍の高速化が実現されました。一方、並行度が 16 に達すると、ターゲットモデル自体の利用率が高まるため、速度向上幅は 1.37〜2.36 倍に縮小します。5 つのワークロードの中で最も自由度が高い MT-Bench は、あらゆる並行度レベルで恩恵が最小となります。詳細数値は モデルカード で確認できます。
学習と推論の一貫性の検証
モデル品質ベンチマークと正しさのチェックゲート(correctness gates)は、それぞれ異なる目的を持っています。ベンチマークは一般化能力を測定するものであり、一方、チェックゲートは学習、エクスポート、推論の実装が同じアルゴリズム契約に従っているかを確認するものです。
SpecForge は、Domino を含む DFlash ファミリーモデル向けのトレーニングと推論の両方に対応するゲートウェイを提供します。このゲートウェイは以下の 3 つの段階で動作します。
- 有効なサンプルの選択:ゲートは、対象となるチャットテンプレート、推論モード、トークナイザーの挙動、シーケンス長、およびトレーニング可能な最小サフィックスを確認し、監査可能なプロンプトアーティファクトを生成します。
- 公開された学習パスを通じた過学習:
specforge trainを介して起動される制限付きの実行でそのサンプルを反復処理し、設定済みの損失値とトークン精度の閾値を満たすこと、および正確な最終チェックポイントが取得されていることを要求します。
- チェックポイントのエクスポートと提供:
specforge exportを通じてエクスポートされ、SGLang が DFlash による推論用デコーディングで起動されます。その後、リクエストごとの受容メタデータと対象トークンプレフィックスとの整合性が検証されます。
このゲートは意図的に厳格かつ限定的に設計されています。これを通過することは、キャプチャ、トレーニング、エクスポート、提供のすべての工程が 1 つの制御された例で合致していることを示すものであり、保持されたモデル品質や推論パフォーマンスの評価を代替するものではありません。
次のステップ
今回のリリースでは、SpecForge のスケーリング単位が変更されました。これまでは対象モデルを含むトレーニングプロセスが実行単位でしたが、今後は推論能力、ストレージ、最適化能力をそれぞれ独立して調整できる協調型パイプラインが実行単位となります。
今後のステップとして、上記の残りのターゲットモデルに対するドラフトモデルの公開完了と、アルゴリズムおよびモデルカタログの拡大を継続します。また、VLM や AMD、Ascend などを含むさまざまなモダリティやハードウェアプラットフォームでのテストと適応も実施していきます。
謝辞
SGLang および SpecForge コミュニティ、サポートされた推測デコーディング手法の著者、そして新しいランタイムおよびアルゴリズム統合のテストに貢献いただいたすべての関係者に感謝いたします。
SpecForge チーム: Jiaping Wang, Shenggui Li, Xiaoming Dong, Chao Wang, Ji Li
RadixArk チーム: Cheng Mao, Yi Sun, Kan Wu
Domino チーム: Jianuo Huang
Ant Group AQ チーム: Yefei Chen, Yuan Wang
China Merchants Bank チーム: Peixiang Tan
Meta/Pytorch: Richard Zou
**Modal チーム
原文を表示
When we first released SpecForge, a training job owned both the frozen target model and the draft model being optimized. This made EAGLE3 draft-model training practical and directly compatible with SGLang, but it also tied two very different workloads to the same process lifecycle and resource topology.
Today, we are introducing a major update to SpecForge. The new runtime separates target-model inference from draft-model training, supports a broader family of speculative decoding algorithms, and unifies online, offline, and disaggregated workflows behind one typed training entry point. Alongside the release, we are publishing more draft models, covering different speculative decoding methods and different target models.
What's New
- Online training is now fully disaggregated. Patched SGLang servers capture target-model features, Mooncake transports the tensors, and trainer workers consume lightweight references through a separate control plane.
- Inference and training can scale independently. On our 8xH20 testbed, a topology with 3 SGLang servers and 5 trainer workers improves end-to-end training throughput by approximately 10% over our previous colocated implementation.
- One runtime now supports multiple drafting families: EAGLE3, EAGLE3.1, P-EAGLE, DFlash, Domino, and DSpark, together with the optional D-PACE objective for DFlash.
- More draft models are being released, most of them contributed by the community. Partners and individual contributors have trained and published draft models with this runtime across different speculative decoding methods and different target models, all trained only on open data.
This release also ships a training-serving consistency gate that verifies capture, training, export, and SGLang serving agree on a controlled example — a fast correctness check before investing in a full training run.
From a Coupled Trainer to a Training Pipeline
Online draft-model training contains two distinct workloads:
- The target side runs a large, frozen model over training conversations to capture hidden states. It is inference-heavy, often uses tensor parallelism, and benefits from a production inference engine.
- The draft side trains a much smaller model with forward and backward passes. It scales through data or sequence parallelism and has a different memory and compute profile.
In the previous colocated design, both sides shared one lifecycle and one fixed resource layout. This created three practical limitations:
- A fixed inference-to-training ratio. Scaling trainer workers also affected target-model placement, even when only one side was the bottleneck.
- Resource interference. Target capture and draft optimization competed inside the same tightly coupled job.
- A shared failure boundary. Slow or failed feature generation could stall training, while excess production could create unbounded memory pressure.
The key observation is simple: trainers do not need to own the target model. They only need the token sequences, masks, and target features required by the selected training objective. Making that boundary explicit changes SpecForge from a trainer process containing a target model into a coordinated training pipeline.
One Boundary, Three Contracts
The new online runtime has a producer pool and a consumer pool. Producers schedule prompts across patched SGLang capture servers. SGLang writes feature tensors to Mooncake, while SpecForge sends only lightweight SampleRef metadata through the control plane. Trainer ranks resolve those references when they are ready to build a batch.
1. The capture contract
Every URL in deployment.disaggregated.server_urls creates a rollout worker connected to a patched SGLang server. Workers lease disjoint prompts from a shared controller, so capture capacity can change without changing the trainer topology.
The capture support is a small patch on top of the pinned sglang==0.5.14: patches/sglang/v0.5.14/spec-capture.patch adds an --enable-spec-capture flag and a server-side sink that writes captured tensors directly into Mooncake using the feature store's key layout. A capture server is a stock SGLang server with this patch applied.
This creates a clear ownership boundary: SGLang owns target-model parallelism and feature capture, while SpecForge owns prompt scheduling, reference publication, and draft-model optimization.
2. The delivery contract
Captured hidden states can be large, so forwarding them through a Python queue or control database would quickly become a bottleneck. SpecForge separates tensor storage from sample coordination:
- SGLang writes feature tensors to Mooncake.
- The producer publishes tensor-free SampleRef records.
- FeatureDataLoader resolves references into tensor-carrying training batches.
- Trainers release feature objects after an optimizer-step acknowledgement.
The training loop depends on the FeatureStore contract rather than a specific transport. The same consumer path can therefore use local features, a shared directory, or Mooncake-backed online capture.
3. The lifecycle contract
Distributed ranks must advance together. The consumer releases references in complete optimizer-step quanta, so every rank receives the samples it needs for one synchronized update. High and low in-flight watermarks pause and resume capture, preventing the producer from running arbitrarily far ahead of training.
At optimizer boundaries, consumer rank 0 records trained sample IDs in a retained SQLite ledger before acknowledgements reduce the in-flight depth and release feature objects. After an interruption, the consumer can use that ledger to skip completed sample IDs and replay the remaining references.
Failures are explicit on the producer side as well. A failed capture worker returns its leased prompts to the shared controller, allowing healthy workers to continue. The run fails loudly if all capture servers are unavailable or a prompt exhausts its retry budget.
Together, these contracts keep the trainer independent of feature transport without weakening distributed-step alignment, bounded buffering, or recovery semantics.
What This Separation Unlocks
The new boundary produces two user-visible benefits: infrastructure can be balanced around the workload, and algorithm implementations can share one training runtime.
Independent inference and training pools
Target-model tensor and expert parallelism now belong to SGLang; draft-model data and sequence parallelism belong to SpecForge. The two pools can run under one local supervisor or as separate scheduler-managed jobs.
When both pools share a fixed GPU budget, their ratio remains a resource trade-off. The difference is that the trade-off is now explicit and tunable instead of hard-wired into the trainer. When more resources are available, either pool can be expanded without forcing the other to adopt the same topology.
Preliminary system result: 3 capture servers + 5 trainers
On an 8×H20 testbed, we evaluated Qwen3-8B Domino training with a 3K-token context length. Reallocating the workload to three SGLang capture servers and five trainer workers improved measured end-to-end training throughput by approximately 10% over the previous colocated implementation.
| Runtime | Target capture | Draft training | Relative end-to-end training throughput |
|---|---|---|---|
| Previous colocated version | Coupled with the training job | Fixed colocated layout | 1.00× |
| New disaggregated runtime | 3 SGLang servers | 5 trainer workers | 1.10× |
The profiles below show representative training windows for the two runtime topologies.
(a) Colocated baseline

(b) Disaggregated: 3 SGLang servers + 5 trainer workers

In this workload, profiling indicates that the gain came from better matching feature-production supply to trainer demand. The broader benefit is configurability: different target sizes, sequence lengths, and drafting algorithms can use different capture-to-training ratios without requiring another trainer implementation.
One runtime for multiple drafting families
SpecForge began with a strong focus on EAGLE3. The new runtime separates common systems concerns from strategy-specific modeling code.
Every strategy reuses prompt scheduling, feature transport, distributed execution, checkpointing, and process supervision. A strategy defines only the target features it needs, how those features become a training batch, its draft-model architecture, and its objective.
| Method | Strategy-specific idea | SpecForge support |
|---|---|---|
| EAGLE3 | Direct token prediction with training-time test and multi-layer target-feature fusion | Online-disaggregated, local offline, and disaggregated offline; optional LK loss objective |
| P-EAGLE | Parallel multi-token prediction through a shared hidden state | Online-disaggregated |
| EAGLE3.1 | An EAGLE3 configuration variant with per-layer normalization and attention-drift settings | Online-disaggregated through the eagle3 strategy |
| DFlash | Block-diffusion drafting that predicts a token block in parallel | Online-disaggregated, local offline, and disaggregated offline; optional D-PACE objective |
| Domino | A parallel draft backbone followed by a lightweight causal correction head | Online-disaggregated, local offline, and disaggregated offline |
| DSpark | Semi-autoregressive drafting with confidence modeling for adaptive verification | Online-disaggregated, local offline, and disaggregated offline |
Here, *unified* means one configuration schema, launcher, dataflow contract, trainer lifecycle, and checkpoint surface. It does not mean that every strategy supports every data source and topology combination.
Data Source and Deployment Are Separate Choices
Online and offline describe where target features come from. Local and disaggregated describe how the training workflow is deployed. Keeping those concepts separate makes the supported combinations easier to understand:
| Feature source | Local/dataflow deployment | Producer/consumer deployment |
|---|---|---|
| Online SGLang capture | No | Yes, with Mooncake |
| Offline feature checkpoints | Yes | Yes, with a shared feature store |
Every online run uses the producer/consumer topology; the trainer never initializes a colocated target model. Offline EAGLE3, DFlash, Domino, and DSpark training can run locally or with separate ingestion and consumer pools. P-EAGLE currently supports online training only.
Feature source is not data policy
One further distinction matters in practice. Capture servers execute a full prefill over the conversations you provide and never generate the training responses, so online capture does not choose whose text the draft learns from — the dataset does. This choice matters more than any topology decision: when dataset responses were written by humans or by a different model, the draft learns to continue text the target itself would rarely produce, and acceptance saturates well below what the same draft reaches on target-generated data. In our training runs, regenerating dataset responses with the target model — greedily, in the reasoning mode that will be served — has been the single largest lever on final acceptance. We recommend target-generated data for every strategy. The consistency gate described below rests on the same property: its serving stage can only pass when the trained sample is text the target reproduces at temperature 0.
See the training guide for the complete strategy matrix and the disaggregated training guide for deployment details.
One Configuration, One Entry Point
The topology lives in the same typed YAML document as the model, data, algorithm, and optimizer settings. The following excerpt illustrates the three-server/five-trainer shape used above:
training:
strategy: domino
deployment:
mode: disaggregated
trainer:
nnodes: 1
nproc_per_node: 5
disaggregated:
control_dir: outputs/qwen3-8b-domino/control
consumer_state_dir: outputs/qwen3-8b-domino/consumer-state
backend: mooncake
server_urls:
- http://capture-0:30000
- http://capture-1:30000
- http://capture-2:30000
The same command resolves and launches the selected topology:
specforge train --config run.yaml
On a single node, the launcher can supervise both SpecForge roles. Under an external scheduler, the pools can be launched independently with the same configuration:
# Inference and ingestion pool
specforge train --config run.yaml --role producer
# Draft-model training pool
specforge train --config run.yaml --role consumer
There are no method-specific Python training entry points. Full, runnable configurations are available under examples/configs.
Training Example: Qwen3.6-27B
Start training and inference on a single node using a single command:
specforge train --config examples/configs/qwen3.6-27b-dspark-disaggregated.yaml
Training Example: Kimi-K3
The training recipes are listed in docs/recipes/kimi-k3-dspark-disaggregated.md.
Draft-Model Serving Performance
Training-system throughput and draft-model serving speedup answer different questions. The H20 result above measures the efficiency of the training pipeline. The following evaluation measures the end-to-end serving speedup of a draft checkpoint trained with SpecForge; it is not used as evidence for the 10% training-runtime result.
We evaluated Qwen3.6-27B-Domino on 2×A100 GPUs. All values are relative to target-only autoregressive decoding (AR = 1.00×). B8 and B16 denote draft block sizes of 8 and 16.
Concurrency = 1
| Dataset | AR | MTP-S3 | MTP-S7 | DFlash-B8 | DFlash-B16 | Domino-B8 | Domino-B16 |
|---|---|---|---|---|---|---|---|
| GSM8K | 1.00× | 2.68× | 3.22× | 3.79× | 4.25× | 4.36× | 5.25× |
| MATH500 | 1.00× | 2.80× | 3.55× | 4.29× | 5.07× | 4.60× | 5.72× |
| HumanEval | 1.00× | 2.65× | 3.18× | 3.98× | 4.47× | 4.20× | 4.98× |
| MBPP | 1.00× | 2.57× | 2.98× | 3.73× | 3.91× | 3.97× | 4.49× |
| MT-Bench | 1.00× | 2.44× | 2.65× | 3.00× | 3.05× | 3.31× | 3.44× |
| Alpaca | 1.00× | 2.38× | 2.54× | 2.87× | 2.84× | 3.18× | 3.34× |
At concurrency 1, Domino-B16 provides the highest speedup on all six datasets, ranging from 3.34× on Alpaca to 5.72× on MATH500.
More Draft Models Across Methods and Targets
A training stack is only useful if it produces checkpoints people can actually deploy. Speculative decoding offers strong theoretical guarantees and consistent gains in token acceptance rate and end-to-end speed, but adoption in the open-source community has been limited by a lack of production-ready training tooling, a scarcity of high-quality draft checkpoints, and the small scale of the data those drafts were trained on.
So alongside the runtime, a much larger set of open draft models is now available — and the striking part is how few of them we trained ourselves. Teams running SpecForge in production have trained drafters for the targets they actually serve and contributed the weights back, all trained only on open data. Nine of the eleven checkpoints listed below came in this way, from Ant Group AQ, RadixArk, China Merchants Bank, the Domino authors, and individual community members.
That inflow is what broadened the catalog along two axes:
- Wider target coverage of the open-source models the community actually deploys, extending from instruct-tuned models into reasoning models and the current frontier of open-weight releases.
- Wider method coverage. Following the algorithms described in the previous section, the released checkpoints now span EAGLE3, DFlash, Domino, and DSpark. Several targets in scope also ship a native MTP head, giving the community a chance to compare these drafters against native MTP on the same target.
If you have trained a draft model with SpecForge, we would like to host it alongside these — contributions of new targets and new algorithms are both welcome.
Released models and performance
All checkpoints are published in the SpecBundle collection on Hugging Face:
| Target model | Draft model | Algorithm | Provider |
|---|---|---|---|
| GLM-5.1 | 🤗 | EAGLE3 | Ant Group AQ |
| Kimi-K2.5 | 🤗 | EAGLE3 | Ant Group AQ |
| Kimi-K2.6 | 🤗 | EAGLE3 | Ant Group AQ |
| Kimi-K2.7-Code | 🤗 | EAGLE3 | Ant Group AQ |
| Qwen3-32B | 🤗 | EAGLE3 | China Merchants Bank |
| Qwen3.5-35B-A3B | 🤗 | EAGLE3 | SpecForge |
| Step-3.5-Flash | 🤗 | EAGLE3 | RadixArk |
| Qwen3.5-397B-A17B | 🤗 | DFlash | LMSYS |
| Qwen3.6-27B | 🤗 | Domino | Domino Team |
| Inkling-Small | 🤗 | DSpark | RadixArk |
| Kimi-K3 | 🤗 | DSpark | RadixArk |
Results for a subset of these models are shown below, grouped by algorithm.
EAGLE3
DFlash
Domino
The full per-workload numbers, including the other block sizes and the MTP and DFlash comparisons, are on the model card.
DSpark
Verifying Training-Serving Consistency
Model-quality benchmarks and correctness gates serve different purposes. A benchmark measures generalization; a gate checks that training, export, and serving implement the same algorithmic contract.
SpecForge provides an end-to-end training and serving gate for DFlash-family models, including Domino. It performs three stages:
- Select a valid sample. The gate checks the target chat template, reasoning mode, tokenizer behavior, sequence length, and minimum trainable suffix before producing an auditable prompt artifact.
- Overfit through the public training path. It repeats that sample for a bounded run launched through specforge train, then requires the configured loss and token-accuracy thresholds and the exact final checkpoint.
- Export and serve the checkpoint. It exports through specforge export, launches SGLang with DFlash speculative decoding, and verifies per-request acceptance metadata and agreement with the target-token prefix.
This gate is intentionally strict and narrow. Passing it shows that capture, training, export, and serving agree on one controlled example; it does not replace held-out model-quality or serving-performance evaluation.
What's Next
This release changes the unit of scaling in SpecForge. A run is no longer a trainer process that happens to contain a target model; it is a coordinated pipeline whose inference capacity, storage, and optimization capacity can be sized independently.
Our next steps are to finish releasing the draft models for the remaining target models above, and to continue expanding the algorithm and model catalog. We will also conduct testing and adaptation across different modalities such as VLM and additional hardware platforms, including but not limited to AMD and Ascend.
Acknowledgements
We thank the SGLang and SpecForge communities, the authors of the supported speculative decoding methods, and all contributors who helped test the new runtime and algorithm integrations.
SpecForge Team: Jiaping Wang, Shenggui Li, Xiaoming Dong, Chao Wang, and Ji Li
RadixArk Team: Cheng Mao, Yi Sun, and Kan Wu
Domino Team: Jianuo Huang
Ant Group AQ Team: Yefei Chen, Yuan Wang
China Merchants Bank Team: Peixiang Tan
Meta/Pytorch: Richard Zou
Modal Team
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み