推論

推論

執筆済 AILLM

学習済みモデルで実際にテキストを生成する処理。inference

自己回帰生成#

1 トークンずつ生成し、それを入力に足して次を生成する。

入力 → 次トークンの確率分布 → サンプリング → 入力に追加 → 繰り返し

逐次的なので、系列長に比例した時間がかかる。 訓練時は全位置を並列に計算できるが、生成時はできない。

KV キャッシュ#

各ステップで過去すべてを再計算するのは無駄。 AttentionKV を保存して使い回す。

𝒪(T2)𝒪(T)(1 トークンあたり)

代わりにメモリを消費する

KV キャッシュ=2×L×T×d×バッチ

長文脈・大バッチではこれが GPU メモリの大半を占め、 同時に処理できるリクエスト数を制限する。

2 つの段階#

段階 内容 ボトルネック
Prefill 入力プロンプトを一括処理 計算律速
Decode 1 トークンずつ生成 メモリ帯域律速

Decode では、1 トークン生成するのに 全パラメータを読み出す必要がある。 計算量は小さいのにメモリ帯域が限界になる。

これが推論の高速化で 量子化(パラメータを小さくする)や 投機的デコーディング(小モデルで下書きして大モデルで検証)が 効く理由。

参考文献#

ノート一覧を閉じる