推論
serving · generation
ひとことで
推論とは、訓練済みのモデルに新しい入力を与えて出力を得る行為であり、モデル自体を作成する訓練とは対照的です。訓練は一度だけかかるコストですが、推論は毎回のリクエストで繰り返され、広く使用されるモデルのライフサイクルを通じて、支出とエネルギー消費の大部分を占めます。
推論は、異なるパフォーマンス特性を持つ2つのフェーズに分かれます。
Prefill は、入力全体を一度に処理します。並列化が容易で計算バウンドであるため、入力長に応じてスケールし、ユーザーが最初のトークンを待つ時間を決定します。
Decode は、一度に1つのトークンを生成します。各ステップでモデルの重み全体を完全に通過する必要があります。これはメモリ帯域幅バウンドであり、ユーザーが認識する毎秒あたりの単語数を設定します。
ほとんどのサービング最適化は、これらのいずれかを対象としています。Continuous batching は、異なる時間に到着するリクエストをマージすることで、アクセラレータを稼働させ続けます。KV caching は、中間アテンション状態を保存するため、前のトークンが各ステップで再計算されることはありません。Speculative decoding は、小さなモデルがいくつかのトークンをドラフトし、大きなモデルが1回のパスでそれらを検証します。[Quantisation](/en/glossary/quantization) は、重みを縮小して、より多くのデータを高速メモリに格納できるようにします。[Mixture-of-experts](/en/glossary/mixture-of-experts) は、各トークンをネットワークの一部のみを通過させます。
経済的な結果として、AI製品が実行可能な利益を持つかどうかは、モデルサイズではなく推論効率によって決まります。そして、コストを削減する最適化は、エネルギー消費も削減します。
よくある質問
- 最初のトークンがなぜ他のトークンよりも遅いのか
- モデルは、何も生成する前に入力全体を処理しなければならない — プリフィルフェーズがある。その後、トークンはデコードフェーズで次々に生成され、これは計算能力ではなくメモリ帯域幅によって制限される。
- 推論は学習よりも全体としてコストが高いですか?
- 本番環境で使用される任意のモデルに対して、その通りです。学習は有限ですが、推論は無限に繰り返され、累積した推論コストはモデルのサービスライフ中に学習コストをはるかに上回ります。