vLLMアダプティブ検証、信頼度ヘッドなしで実現:オンライン適合受理推定器(PR #52228)
概要
vLLMは、訓練済みの信頼度ヘッドを備えたDSparkドラフターだけでなく、すべてのドラフトモデルベースのスペキュレータータイプに対して信頼度スコアリングをサポートするようになりました。信頼度ヘッドが存在しない場合、オンライン適合推定器がドラフターのロジットから特徴量(ドラフターの最有力トークンの対数オッズ)を導出し、それを使ってターゲットモデルが各ドラフトトークンを受け入れる確率を予測します。その予測は、アダプティブ検証(AV)の信頼度スコアとして直接使用されます。推定器の係数はライブサービス中に継続的に再適合されるため、入力されるデータトラフィックに適応します。この機能はPR #52228で導入され、信頼度ヘッドのないドラフトモデルに対してenable_adaptive_verificationで有効化されます。
アダプティブ検証とは何か、なぜ信頼度スコアが必要だったのか
アダプティブ検証は、投機的デコード中にドラフトトークンのサブセットのみを検証し、ターゲットモデルのフォワードパスが実行される前に、受理確率が低いドラフトトークンをバッチから切り詰めます。これにより計算資源が節約され、特に大規模なバッチサイズを処理する際に有益です。そのような状況ではGPUが計算バウンドになるからです。
AVはトークンごとの受理確率の推定を必要とします。この変更以前は、その要件によりAVはDSparkドラフターに限定されていました。DSparkドラフターは多くの場合、各位置のドラフターの隠れ状態に対する小さな線形層である信頼度ヘッドを備えており、「ターゲットがこのトークンを受け入れるかどうか」の二値分類器として訓練されています。
信頼度ヘッドを欠くドラフトモデル(EAGLE、MTP、DFlash、一部のDSparkチェックポイント)は、AVをまったく使用できませんでした。信頼度ヘッドを追加するにはドラフターの再訓練が必要であり、既にサービス提供されている多くの既存チェックポイントにとっては選択肢になりませんでした。
解決策:サービング中に適合されるロジスティック回帰
vLLMは、ドラフト分布から導出される単一のスカラー(ドラフターの最有力トークンの対数オッズ)から各ドラフトトークンの受理確率を推定する軽量なロジスティック回帰を追加しました。モデルはドラフト位置ごとに1つの共有傾きと1つの切片を持ちます。したがって、Kトークンのドラフターには合計K + 1個のパラメータが必要です。これらのパラメータは、ターゲットモデルが通常の検証中にすでに生成する受理/拒否の決定からオンラインで適合されます。既存のドラフトチェックポイントは、AVを追加費用なしで利用できます。
特定のドラフトトークンの信頼度スコアは、位置ごとのロジスティック回帰で推定されます。ここで、ωはすべてのドラフト位置で共有される適合傾き、βiは適合された位置ごとの切片、qはドラフト分布です。対数オッズ形式では、logit(qmax)が推定器の特徴量です。これはドラフトの最有力トークンの対数オッズであり、ドラフトモデルが自身の予測にどれだけ自信を持っているかを表します。この特徴量はωとβiによって線形変換され、ターゲットモデルによるドラフトの受理の対数オッズを予測します。その値のシグモイドがp、つまり推定受理率であり、AVの信頼度スコアとして使用されます。
特徴量を選択する際に使用された4つの基準
候補となる特徴量を評価する際に最も重要だった4つの軸は以下の通りです:
- 無損失性 — 特徴量が投機的デコード中の出力分布にバイアスをかけるかどうか。
- 曲線下面積(AUC) — ランダムに選ばれた受理されたドラフトが、ランダムに選ばれた拒否されたドラフトよりも高いスコアを獲得する確率。これは、受理されるべきドラフトと拒否されるべきドラフトを識別する能力を測定します。0.5はランダムな偶然です。
- 対数損失 — 予測された受理確率の平均負の対数尤度。自信過剰な誤答を penalize し、較正を報酬とします。
- 期待較正誤差(ECE) — 各ドラフトを予測受理確率でビンに分け、各ビン内の平均予測と平均観測頻度の誤差をビンの占有率で重み付けして測定します。これは較正を測定します。
無損失性は交渉の余地がありません。それがなければ、投機的デコードはターゲットモデルの正確な分布を出力するという保証を失います。AUCとECEはどちらもAVのトリミング決定に重要ですが、役割は異なります。AUCは生存確率の局所的な順序を決定し、受理される可能性が高いドラフトトークンが、可能性の低いものよりも優先されることを保証します。ECEはグローバルな予算決定を管理します。予測確率が合計され、測定されたコストテーブルで割られるため、ECEは推定された受理トークン数が実際の数と一致することを保証します。
特徴量比較結果
候補となる特徴量は、DeepSeek-V4-Flash + DSpark(temp=1、top-p=0.95、conc=64)をAVなしでサービス提供しながら収集された約450万のラベル付きドラフトで測定されました。データセットは5つ:SPEED-Bench 2k低/高エントロピー、GSM8K、HumanEval、MT-Benchです。最後の2行は適合された特徴量ではなく参照です。
| 特徴量 | 無損失 | AUC | 対数損失 | ECE |
|---|---|---|---|---|
| log(qmax) | はい | 0.8069 | 0.4813 | 0.0592 |
| log(qmax) − log(q2nd)(トップ2マージン) | はい | 0.8156 | 0.4437 | 0.0105 |
| H(q)(エントロピー) | はい | 0.8321 | 0.4577 | 0.0638 |
| −log(−log(qmax)) | はい | 0.8336 | 0.4289 | 0.0103 |
| *logit(qmax)(採用)* | はい | 0.8336 | 0.4284 | 0.0100 |
| logit(qsampled) | いいえ | 0.8553 | 0.4040 | 0.0152 |
| −log(−log(qsampled)) | いいえ | 0.8554 | 0.4075 | 0.0193 |
| qmax(適合なし、確率として直接使用) | はい | 0.8259 | 0.4880 | 0.0736 |
| 訓練済み信頼度ヘッド | はい | 0.8191 | 0.4449 | 0.0052 |
logit(q_sampled)と−log(−log(q_sampled))はAUCで選択された特徴量を明らかに上回りますが、それらに基づくトリミングはバイアスされた出力分布を生成するため拒否されました。どちらもドラフターが実際に描画したトークンの確率であるqsampledを読み取ります。その値の関数でドラフトをトリミングすると、位置iでの検証の決定がxi自体に依存することになり、生存したドラフトはもはやqとして分布しません。標準的な棄却サンプリングは、min(1, p/q)の確率でトークンを受け入れ、qがドラフトトークンがサンプリングされた分布であることを期待します。qsampledでトリミングすると、出力分布がドラフターの高信頼トークンに偏ります。
qmaxの「適合なし」の行は、EAGLE-2がドラフトツリーを構築するときにドラフター自身の確率を直接使用するように、なぜ適合が必要なのかを説明しています。直接使用すると、ドラフターのトップトークン確率は訓練済みの信頼度ヘッドよりもドラフトをランク付けします(AUC 0.8259対0.8191)が、較正は良好ではありません。ラベル付きドラフトに対する平均予測は0.784であるのに対し、観測された受理率は0.723であり、ECEは採用されたlogit(qmax)特徴量より7倍悪い(0.0736対0.0100)です。ドラフターのトップトークン確率は、ドラフターが自身の予測にどれだけ自信があるかを反映するだけで、ターゲットモデルが同意するかどうかは反映しません。そしてその同意は、サンプリング設定とワークロードによってさらに影響を受けます。オンライン適合はこのマッピングをターゲットの受理/拒否の決定から直接学習し、予算決定が依存する較正を改善します。
推定器と訓練済み信頼度ヘッドの比較
DeepSeek-V4-Flash + DSparkでは、推定器はAUCと対数損失の両方で信頼度ヘッドを上回りますが、ECEでは劣ります。
| AUC ↑ | 対数損失 ↓ | ECE ↓ | |
|---|---|---|---|
| 推定器 logit(qmax) | 0.8336 | 0.4284 | 0.0100 |
| 訓練済み信頼度ヘッド | 0.8191 | 0.4449 | 0.0052 |
| Δ(推定器 − ヘッド) | +0.0146 | −0.0166 | +0.0048 |
最初のドラフト位置を平均から除外すると、状況は大きく変わります。推定器のAUC優位性は+0.0278に広がり、対数損失の優位性は−0.0323に広がり、ECEの差は+0.0013に縮小し、ヘッドと推定器は較正に関してほぼ同等になります。
| AUC ↑ | 対数損失 ↓ | ECE ↓ | |
|---|---|---|---|
| 推定器 logit(qmax) | 0.8352 | 0.4420 | 0.0103 |
| 訓練済み信頼度ヘッド | 0.8075 | 0.4743 | 0.0090 |
| Δ(推定器 − ヘッド) | +0.0278 | −0.0323 | +0.0013 |
位置ごとのAUCの内訳が変化を説明します。DeepSeek-V4-Flash + DSparkで7つの投機トークン、447万のラベル付きドラフトで測定したところ、信頼度ヘッドは最初の位置でリードしますが、推定器は2番目の位置以降でリードし、その差は深さとともに広がります。推定器は最後の位置までにAUCで0.08リードします。両方の予測子は5番目の位置以降で低下します。これはおそらく、DSV4-FlashのDSparkがブロックサイズ5を宣言しており、ドラフターがそれを超えて訓練されていないため、ドラフト自体がそこで悪化するためです。
生存は累積積であり、最初のドラフト位置は常にリクエストの最高スコアを持つため、予算で削られることはあまりありません。推定器の優位性は正確にトリミングが発生する場所にあり、エンドツーエンドのパフォーマンスで信頼度ヘッドに匹敵できる理由を説明しています。
係数の適合方法
係数ωとβiは、ライブサービング中に継続的に再適合されます。前のデコードステップで提案されたドラフトトークンは、次のデコードステップでターゲットモデルによって検証され、最初の拒否(もしあれば)までのドラフトトークンのみがトレーニングに適格です。ターゲットモデルがそれらを受理または拒否として明示的にラベル付けしているためです。
vLLMは反復再重み付け最小二乗法(IRLS)を使用して、損失の2次テイラー近似上で最小化し、予測とラベルに対する対数尤度損失を最小化します。ωとβiの最適化ステップは、Δθが共有傾きと位置ごとの切片のデルタ、Hが形状(K + 1)×(K + 1)の損失関数のヘッセ行列、gがサイズK + 1の損失関数の勾配である連立方程式を解くことで得られます。
再適合は、固定されたNデコードステップごとに実行されます。その間隔の各デコードステップ中に、ヘッセ行列と勾配の値は、そのラウンド中に収集された係数、特徴量、ラベルから累積されます。これにより、ラウンド全体のメモリがO(K²)に上限されます。対照的に、生のラベルを収集した場合のO(N × B × K)とは異なります。ラウンドの最終ステップで、システムが解かれ、係数が更新されます。
より深いドラフトは浅いドラフトよりも受理される頻度が低いため、ラウンド中に深いドラフト位置のラベルが不足する可能性があります。2つの設計上の決定がこれを緩和します:
- 共有傾き — 傾きはすべてのドラフト位置で共有され、深さでのデータの薄まりによるノイズの多い更新を防ぎます。予測は傾きの誤差に対して切片の誤差よりもはるかに敏感であるため、共有によりニュートンステップが明確に決定されます。経験的測定では、傾きの共有は精度にほとんどコストをかけないことが示されています:AUCで0.0002、対数損失で0.0003のみ。
- ステップ減衰 — 各係数の更新は、式n /(n + 定数)を使用してサポートする証拠の量でスケーリングされます。ここでnは評価されたドラフトの数です。したがって、ラベルの少ない深い位置はより保守的に移動し、ノイズによる更新を防ぎます。
傾きと切片の役割の違い
モデルペアを固定してワークロードを変える:DSV4-Flash + DSparkを5つのワークロードそれぞれに独立して適合させると、傾きはほとんど動かず(0.51〜0.55)、ワークロードの難易度とは無相関です(平均ドラフトエントロピーに対してr = −0.08)。切片は逆のことを行います。最初のドラフト位置の切片は、ドラフトエントロピーとr = −0.89で相関し、より予測可能なワークロードでは約0.5〜0.6から、最も予測不可能なワークロードでは0未満まで変動します。
| データセット | 受理率 | 平均ドラフトエントロピー | 傾きω | 切片β0 |
|---|---|---|---|---|
| gsm8k | 0.781 | 0.562 | 0.5365 | +0.478 |
| humaneval | 0.751 | 0.669 | 0.5135 | +0.486 |
| speed-bench 2k低エントロピー | 0.755 | 0.703 | 0.5087 | +0.610 |
| mt-bench | 0.714 | 0.800 | 0.5495 | +0.181 |
| speed-bench 2k高エントロピー | 0.642 | 1.077 | 0.5197 | −0.089 |
代わりにモデルペアを変える:傾きはペア間で0.45から0.59の範囲ですが、各ペア内では緊密に保たれます。切片もペア間で異なるため、傾きとは異なり、単一の軸だけの特性ではありません。
| モデル | nspec | 傾きω | ω sd | 切片β0 |
|---|---|---|---|---|
| DeepSeek-V4-Flash + DSpark | 5 | 0.5013 | 0.0250 | +0.279 |
| MiMo-V2.5-Pro-FP4 + DFlash | 8 | 0.5197 | 0.0415 | −1.000 |
| Inkling-NVFP4 + MTP | 8 | 0.5859 | 0.0349 | −0.572 |
| Muse-Glimmer-30B + DFlash2 | 7 | 0.4450 | 0.0323 | +0.167 |
2つのテーブルを合わせて読むと、役割の分担が示唆されます。傾きは、ドラフトモデルが自分が正しいときをどれだけ知っているかを測定します。これはターゲット/ドラフトペアとドラフトサンプリング方法の特性であり、ワークロードだけが変わってもほとんど動かない理由です。切片は残りを吸収します:各ドラフト位置での基本受理率。これは深さとともに低下し、予測不可能なコンテンツではさらに低下します。その基本受理率はモデルペアとワークロードの両方に依存するため、切片は両方の軸に沿って移動し、傾きは1つの軸にのみ沿って移動します。
ベンチマーク
以前はAVをまったく使用できなかった3つのチェックポイントがベンチマークされました — MiMo-V2.5-Pro-FP4 + DFlash、Inkling-NVFP4 + MTP、Muse-Glimmer-30B + DFlash2 — 参照としてDSV4-Flash + DSpark + 推定器とDSV4-Flash + DSpark + 信頼度ヘッドも含まれます。ゲインは、AVオフ対オン、温度1.0、top-p 0.95、並行度64で、4つのデータセットにわたってキャプチャされました。
固定検証と比較して、同じ投機長でのオンライン推定器は、すべてのベンチマークデータセットで勝利です。ただし、そのゲインだけでは全体像はわかりません。特定の並行度では、最大投機長でのAVを上回る、より短い固定長がよく見つかります。DSV4 + DSparkで固定投機長のスイープと最大投機長でのAVにわたってキャプチャされたパレート曲線は、オンライン推定器と信頼度ヘッドが、測定されたすべての並行度でパフォーマンスがほぼ同等であることを示しています。
オンライン推定器は信頼度ヘッドの代替を意図したものではなく、ヘッドがない場合のドロップイン代替です。現在信頼度ヘッドを欠くモデルペアであるMiMo-V2.5-Pro-FP4 + DFlashでは、AVは7つの並行度のうち5つでスループット-インタラクティビティフロンティア上にあります。
制限事項
- ターゲットモデルのアテンションバックエンドは、可変長検証をサポートする必要があります。これはDSpark AVがすでに持っているのと同じ前提条件です。
- MTPとEAGLEは、DFlashやDSparkよりもAVの恩恵が少ないです。なぜなら、これらの自己回帰型スペキュレーターは、検証前にトリミングされる可能性のあるドラフトトークンの起草に対して比例して大きなコストを支払うからです。
vLLMで有効にする方法
AVは投機的設定を介して有効化されます。信頼度ヘッドがなく、すべてのバックエンドで可変長アテンションをサポートするドラフトモデルでは、オンライン推定器が自動的に選択されます:
vllm serve <ターゲットモデル> \
...
--speculative-config '{
"model": "<ドラフトモデル>",
"method": "<メソッド>",
"num_speculative_tokens": <投機トークン数>,
"draft_sample_method": "probabilistic",
"enable_adaptive_verification": true
}'
先行研究と謝辞
ドラフター自身の信頼度を受理のプロキシとして使用することは確立されています。EAGLE-2は、EAGLEのドラフト確率が受理率を密接に追跡することを示し、動的ドラフトツリーの成長と再ランク付けにそれらを使用しました。Draft & Verifyとそのいくつかのフォローアップは、ドラフターの確率が固定しきい値を下回ると起草を停止します。SpecDec++は代わりに、DSparkの信頼度ヘッドと同様の専用の受理予測ヘッドを訓練します。いずれの場合も、ドラフト信頼度から受理へのマッピングはそのまま使用されるか、オフラインで学習されます。AVには優れたランキング以上のものが必要です。その予算決定は予測された受理確率を合計し、測定されたコストと比較するため、予測はサービス提供される特定のモデルペアとワークロードに対して較正されている必要があります。
この作業はGiancarlo Delfin(Inferact)によって行われ、Lucas Wilkinson(Red Hat)とBenjamin Chislett(NVIDIA)によるAdaptive Verificationに直接基づいています。
なぜ無損失性が最高AUCの特徴量を除外するのか
単純な2トークン語彙[a, b]の例は、qsampledでトリミングすることによるバイアスを示しています。p = [0.5, 0.5]、q = [0.2, 0.8]と仮定し、q(x) < 0.5の場合にドラフトトークンが検証からトリミングされるとします。aを引くとトリミングが発生し、ターゲットは自身の分布* p*(x)からトークンをサンプリングします。bを引くと検証が発生します:トークンはmin(1, p(b)/q(b)) = 0.625の確率で受理され、そうでなければ拒否され、残差norm(max(0, p − q)) = [1, 0]から再サンプリングされ、aが生成されます。棄却サンプリング中、これはpout(a) = q(a)·p(a) + q(b)·(1 − 0.625) = 0.4、pout(b) = q(a)·p(b) + q(b)·0.625 = 0.6を与えます。これはターゲットの分布[0.5, 0.5]とは異なり、投機的デコードの無損失性保証に違反します。