推論のボトルネックは、計算よりも重みの読み込みにあります。

この記事では、speculative decoding(推測デコード)を土台にした新手法DFlashが、122Bパラメータ級の大規模LLMを250トークン/秒から1000トークン/秒超へ引き上げた仕組みを解説します。出力品質は通常デコードと同一です。

この記事でわかること

  • speculative decodingが2〜3倍で頭打ちになる理由
  • DFlashがブロック拡散と隠れ状態注入で受理長を伸ばす仕組み
  • ModalとZ Labが公開したQwen向けドラフトモデルのベンチマーク結果
  • 本番運用で受理長を上げるためのドラフトモデル学習の考え方

推論が遅い本当の理由

LLMのデコード(出力トークンを1つずつ生成する工程)は逐次処理です。Transformer系モデルは、直前までに出したトークンを前提に次のトークンを決めるため、並列化しにくい構造になっています。

100Bパラメータを超えるモデルでは、1ステップあたりの計算そのものより、GPUメモリから計算ユニットへ重みを転送する時間が支配的です。1トークン分の検証でも、ブロック単位の検証でも、読み込む重みの量はほぼ同じです。そのため、1回のフォワードパスで受理できるトークン数が増えるほど、スループットは伸びやすくなります。

speculative decodingの仕組み

speculative decodingは、小さなドラフトモデル(提案モデル)が複数トークンを先読みし、大きなターゲットモデルがそれらを1回のフォワードパスでまとめて検証する手法です。Google、Anthropic、Metaなども本番推論で採用しています。

ターゲットが一致したトークンはそのまま採用され、最初の不一致地点ではターゲットの予測に置き換えます。採用されたトークンは、ターゲットが単独で逐次生成した場合と同じものになるため、品質劣化は起きません。これは損失のない(lossless)高速化です。

ただし従来のドラフトモデルは逐次生成のままです。1トークンずつ提案するため、ドラフト側が新たなボトルネックになり、実運用ではおおむね2〜3倍が上限とされていました。

DFlashが変えた点

DFlashは、逐次型ドラフトモデルの代わりにブロック拡散モデルを使います。複数トークンを左から右へ1つずつ出すのではなく、1回の並列パスでブロック全体をデノイズして提案します。提案数が増えてもドラフト側のコストはほぼ一定に抑えられます。

さらに、ドラフトは生のトークン列だけを見ません。ターゲットモデルがコンテキストを読む際、各層が出力する隠れ状態(hidden states)を複数層から取り出し、ドラフトモデルへ渡します。ターゲットの内部表現を起点に提案するため、受理されやすいトークンが出やすくなります。

受理長(acceptance length)は、1回の検証でターゲットが採用するドラフトトークン数の平均です。この値はスループットとほぼ線形に対応します。受理長2で1.86倍、4で3.57倍、8で5.62倍という結果が、Qwen 3.5 27BをNVIDIA B200 1枚で計測した際に報告されています(参考)。

ModalとZ Labの新ドラフトモデル

2026年6月、ModalとZ LabはQwenシリーズ向けのDFlashドラフトモデルをHugging Faceで公開しました。既存のDFlashベースラインに加え、ターゲット自身の出力と実際の本番トラフィックで学習したモデルは、さらに5〜20%の高速化を達成しています。

受理長はベースラインの3前後から9超へ伸びました。Qwen 3.5 122B-A10B(122BパラメータのMoEモデル)を、調整済みドラフトと組み合わせてNVIDIA B200上・同時実行数1で動かすと、speculationなしの250トークン/秒から1000トークン/秒超に到達したと報告されています(参考)。

Hugging Face上のベンチマークでは、4枚のB200・テンソル並列4・SGLang上で、DFlashは同時実行数1で最大4.21倍、同時実行数32で最大3.07倍のスループット改善を示しています。対象ワークロードはGSM8K、MATH500、HumanEval、MBPP、MT-Benchです。ドラフトモデルのパラメータ数は0.8Bで、ターゲットと組み合わせて使います。

本番で速度を伸ばすには

ドラフトの品質が受理長の上限を決めます。汎用ドラフトをそのまま使うより、自社の推論ログで学習したドラフトの方が、実際にターゲットが出すトークンに近い提案ができ、受理長が伸びやすくなります。Modalの技術ブログでは、数万〜数十万トークン規模のデータでも受理長を3から9超へ動かせた事例が紹介されています(参考)。

一方、ドラフト長を無制限に増やしても効果は頭打ちです。1000トークン先まで提案しても、5トークン目で不一致になれば残りは破棄されます。ドラフト長と受理長のバランスが、実効的なスループットを左右します。

DFlashはSGLang、vLLM、Transformersに統合済みです。大規模MoEモデルの自前ホスティングを検討しているチームは、汎用ドラフトと自社データで学習したドラフトの両方を、実ワークロードで比較する価値があります。