プロンプト処理 vs デコーディング:AI推論における計算能力 vs メモリ帯域幅
AI推論におけるプロンプト処理とデコーディングの違いを理解する
大規模言語モデル(LLM)の推論は、プロンプト処理(プリフィルとも呼ばれる)とデコーディングという、根本的に異なる2つのフェーズを経ます。各フェーズには独自のハードウェア要件とボトルネックがあります。これらの違いを理解することは、AIインフラストラクチャを最適化する上で極めて重要です。なぜなら、支配的なワークロードに応じてGPUやアクセラレータの選択が大きく変わるからです。
1. プロンプト処理(プリフィル):計算バウンド
このフェーズでは、ユーザープロンプト全体が一度に処理されます。モデルは行列-行列乗算(GEMM)を実行します。これは、プロンプトのすべてのトークンを並列に計算できるためです。これは計算バウンド(compute-bound)なタスクです。必要な浮動小数点演算(FLOPs)の数は、特にアテンション計算により、プロンプト長に応じて二次関数的に増加します。ここでは、高いTFLOPS(1秒あたりの浮動小数点演算数、兆単位)を持つGPUが重要です。長いプロンプトの場合、計算能力が不十分だと、最初のトークンが生成されるまで(Time to First Token、TTFT)に数秒から数分の遅延が発生する可能性があります。
2. デコーディング(トークン生成):メモリバウンド
プリフィルの後、モデルはトークンを1つずつ生成して応答します。新しいトークンはそれぞれ前のトークンに依存するため、複数の出力トークンにわたる並列化は不可能です。計算は主に行列-ベクトル乗算(GEMV)で構成されます。このフェーズはメモリバウンド(memory-bound)です。単一のトークンごとに、GPUはモデルの重み全体(数十億のパラメータ)をVRAMから計算コアにロードする必要があります。ロードされたバイトあたりの演算数は非常に少ない(低い演算強度)ため、GPUはほとんどの時間を計算ではなくデータ待ちに費やします。したがって、高いメモリ帯域幅(例:HBM3)が高速なトークン生成の鍵となります。
主な違いの概要
| 側面 | プロンプト処理(プリフィル) | デコーディング(トークン生成) |
|---|---|---|
| 計算タイプ | 行列-行列(GEMM) | 行列-ベクトル(GEMV) |
| ボトルネック | 計算能力(TFLOPS) | メモリ帯域幅(GB/s) |
| 並列性 | 高い(すべてのプロンプトトークンを並列) | 低い(一度に1トークン) |
| 演算強度 | 高い | 低い |
| 主なハードウェア要件 | 高いTFLOPS | 高いメモリ帯域幅 |
| リソース不足の影響 | 長いTTFT(Time to First Token) | 遅いトークン生成(低いトークン/秒) |
インフラストラクチャ最適化への影響
この区別は、AIサーバーの選択と構成に直接的な影響を与えます。非常に長いプロンプトを扱うアプリケーション(例:文書分析、コードレビュー)では、プリフィル部分に高い計算能力を持つGPU(NVIDIA H100やAMD MI300Xなど)が有利です。多くのトークンを生成するリアルタイムチャットアプリケーションでは、高いメモリ帯域幅が重要です。一部のシステムでは、2つのフェーズに別々のハードウェアを使用したり、KVキャッシュ圧縮や投機的デコーディングなどの手法で最適化したりしています。根本的なボトルネックを理解することで、開発者や運用者はコストとパフォーマンスの適切なバランスを見つけることができます。
まとめると、プロンプト処理は生の計算能力(TFLOPS)の課題であり、デコーディングはデータ転送(メモリ帯域幅)の課題です。効率的なLLM推論のためには、両方のフェーズを最適化する必要があります。
一緒に取り組みましょう
さらに詳しい情報やプロジェクトのヘルプ、またはアイデアの構築が必要ですか?
簡単な質問でもフルプロジェクトでも、お気軽にどうぞ。お問い合わせいただき、あなたのアイデアを一緒に実現しましょう。
お問い合わせ →