NVIDIAはDGX Sparkで言語モデルの応答生成を高速化する三つの最適化手法を公開した。同社発表によると、全問題セットを使った評価で生成スループットは42.5%向上し、平均レイテンシーは24.5%短縮した。開発者がローカル推論環境を調整する際の比較基準を示した。
1. エキスパート計算と出力層の読み込み負荷を減らす
評価対象はInclusion AIのLing-3.0-flash-fp4だ。複数のエキスパートのうち一部だけを選んで計算するMoEモデルで、全1,240億パラメーターのうちトークンごとに51億個を有効化する。DGX Sparkでリクエストを一つずつ処理するバッチサイズ1で分析したところ、トークン生成は重みの読み込み速度に制約されていた。
主なコストはエキスパート計算と、語彙ごとのスコアを求める出力層だった。NVIDIAは計算を実行するカーネル、つまりGPUで演算を行うプログラムを置き換え、出力層の重みを圧縮してステップ当たりの読み込み負荷を減らした。さらに、複数のトークンを事前に提案して一括検証する投機的デコーディングを加え、生成に必要なステップ数も削減した。
2. カーネルの置き換えとFP8出力層を併用する
一つ目は、ブロック単位の4ビット浮動小数点形式を使う標準のFlashInfer MXFP4エキスパート計算経路を、Hummingカーネルに置き換える方法だ。Hummingは行列サイズ、データ形式、GPUに合わせて実行時にカーネルをコンパイルし、保存して再利用する。同社によると、個別のカーネルのコンパイルは数秒で終わるが、標準経路では97個の対象のコンパイルに数十分かかる。
二つ目は、保存済みモデルの出力層だけを、構成時に16ビット浮動小数点表現のBF16形式から、より小さい8ビット浮動小数点表現のFP8形式に変える方法だ。出力層は生成トークンごとに語彙157,184個に対応する重み全体を読み込むが、FP8に変えるとこの層の読み込み量は半分になる。モデルのそれ以外の量子化設定は維持する。
基準構成は重み4ビット、活性値8ビットの設定で、出力スコアをFP32で出す経路を使用した。FP8出力層はこの経路の代わりに適用する。
この組み合わせはステップ当たりのコストと生成ステップ数を減らす一方、初めて使うカーネルをコンパイルして保存する手順と、ドラフトの検証計算を追加する。導入時にはトークン生成の利点と、この準備・検証コストを併せて検討する必要がある。
3. 内蔵の予測層がドラフトを作り、本体モデルが検査する
Ling-3.0-flashのNEXTN予測層は、次のトークン候補を予測する層で、追加学習やダウンロードなしでドラフト生成に使える。ドラフトがトークン三つを順に提案すると、本体モデルが四つの位置をまとめて検査し、先頭から一致する部分を受け入れる。1回の検査で複数のトークンを確定する仕組みだ。
同社発表によると、検証1回のコストは通常の生成1ステップの約2.26倍だった。バッチサイズ1では、以前のトークンの保存情報を読み込むコストよりエキスパートの有効化の負荷が大きかった。通常の生成はトークン一つにエキスパート8個を使うが、四つの位置の検証では最大32個を有効化する。
FP8出力層と投機的デコーディングを併用するには、ドラフトモデルが本体モデルの出力層の重みだけでなく、モジュール全体を共有するよう構成する必要がある。共有しないとFP8の重みをBF16として解釈し、一度に受け入れる長さが1.00トークンに落ち、最適化前より遅くなる可能性がある。
4. 合成テストでは段階的な累積効果が大きかった
NVIDIAはDGX Sparkで、入力32Kトークン、出力2Kトークンの合成タスクに各手法を順に追加した。同社発表によると、三つの手法をすべて適用したスループットは毎秒102.88トークンで、基準構成より185.1%向上した。
表:合成タスクの累積最適化結果
条件:NVIDIA DGX Spark、Ling-3.0-flash-fp4、入力32K・出力2Kトークン、バッチサイズ1、貪欲デコーディング、投機的構成 steps=3 / topk=1 / draft_tokens=4
単位:トークン当たりの時間 ms、スループット トークン/秒、増加率 %
| 構成 | トークン当たりの時間 | スループット | 基準比の増加率 |
|---|---|---|---|
| 基準構成 | 27.71 | 36.09 | — |
| Humming追加 | 25.35 | 39.45 | +9.3 |
| FP8出力層追加 | 22.76 | 43.94 | +21.7 |
| 投機的デコーディング追加 | 9.72 | 102.88 | +185.1 |
このテストは最も確率の高いトークンを選び、反復的な出力を生成した。投機的デコーディングは一度に平均3.90トークンを受け入れ、複数のトークンを確定した。
5. 全問評価ではスループットが42.5%向上した
GSM8Kの全1,319問の評価では、例示5個と解答過程の生成を使用した。両構成のサンプリング、正解の判定、乱数シード、メモリ割り当てをそろえた。同社発表によると、平均出力長は基準構成で567トークン、最適化後で607トークンだった。
表:GSM8K全問評価の基準構成と最適化構成
条件:NVIDIA DGX Spark、Ling-3.0-flash-fp4、GSM8K 1,319問、バッチサイズ1、例示5個・解答過程の生成、温度0.6・累積確率(トークンの確率を足して決める基準)0.95・上位トークン(確率の高い候補トークン)29・最大出力32,768トークン
| 指標 | 基準構成 | 三つの手法を適用 |
|---|---|---|
| トークン当たりの時間(ms) | 26.45 | 18.56 |
| デコーディングスループット(トークン/秒) | 37.81 | 53.89 |
| 正解率(%) | 96.89 | 96.82 |
| 平均レイテンシー(秒) | 15.21 | 11.49 |
| 最初のトークンまでの平均時間(秒) | 0.207 | 0.214 |
同社発表によると、正解率には統計的に検出可能な変化はなかった。この評価では確率に従ってトークンを選び、出力長の中央値は約310トークンと合成テストより短かった。一度に受け入れたトークンも平均2.68個で、両テストの改善幅の違いを説明している。
導入判断の鍵は、合成テストの最高改善率よりも、配備環境に近い入力と出力で三つの最適化を組み合わせた効果を確認することにある。
