Chunked Prefill
長いプロンプトをトークンのチャンクに分割することで、同時実行ワークロード下でのスムーズなサービングを実現し、LLM推論のレイテンシとスループットをチャンクドプリフィルがどのように改善するかを学びます。
チャンクドプリフィルとは、長い入力プロンプトを中断のない1つの処理として実行するのではなく、より小さなトークンのグループに分割する推論スケジューリング手法です。推論エンジンは、これらのチャンクを他のリクエストのトークン生成とインタリーブできるため、1つの長いプロンプトがGPUを占有するのを防ぎます。その結果、通常は同時並行ワークロード下でのレイテンシの平滑化、ハードウェア利用率の向上、およびインタラクティブな大規模言語モデル(LLM)アプリケーションにおけるより予測可能なサービスが実現します。
チャンクドプリフィルの仕組み#
自己回帰的Transformer推論には、主に2つのフェーズがあります。
- プリフィル: モデルはすべての入力トークンを処理し、それらのアテンション状態を計算して、KVキャッシュにデータを格納します。プリフィルは多くのトークンを並列評価するため、通常はコンピュートバウンド(計算性能律速)です。
- デコード: モデルは、以前にキャッシュされた状態を読み込みながら、1回に1つのトークンを出力生成します。デコードは、生鮮な計算能力よりもメモリ帯域幅によって制限されることがよくあります。
チャンク分割を行わない場合、20,000トークンのリクエストは、短いリクエストよりもはるかに長く推論ステップを占有する可能性があります。その結果、アクティブな生成処理に一時停止が発生し、独自のプロンプトが小さくてもトークン間レイテンシが増加します。
チャンクドプリフィルでは、スケジューラーは各イテレーションにトークンバジェットを割り当てます。まずアクティブなデコード操作をスケジュールし、残りのバジェットを1つ以上のプロンプトチャンクに割り当てます。プロンプトが収まらない場合、残りのトークンは後続のイテレーションまで待機します。vLLM最適化ガイドラインでは、このアプローチを計算負荷の高いプリフィル作業とメモリ負荷の高いデコードを組み合わせる方法として説明しています。
チャンク分割は、プロンプトトークンの処理タイミングを変更するものであり、その順序や意味を変更するものではありません。完了した各チャンクは、プロンプト全体が準備できデコードが開始されるまで、リクエストのキャッシュされたアテンション状態を拡張します。
チャンクドプリフィルが重要な理由#
チャンクドプリフィルは、本番環境のモデルサービングにおける競合するパフォーマンス目標に対処します。
- トークン間レイテンシ: 既存のデコードリクエストを優先することで、ストリーミング応答が長い一時停止なしで継続できるようにします。
- 最初のトークンまでの時間(TTFT): 大きなチャンクは新しいプロンプトをより早く完了させますが、非常に小さなチャンクは最初の生成トークンを遅らせる可能性があります。
- スループット: プリフィルとデコードの作業を組み合わせることで、GPUの計算能力とメモリ帯域幅をより効果的に活用できます。
- 公平性: 長いプロンプトが多数の短くインタラクティブなリクエストをブロックする可能性を低減します。
したがって、チャンクまたはトークンバジェットの設定はトレードオフになります。vLLMスケジューラー設定では、バッチ化トークン制限、部分プリフィル、および長いプロンプトのなしきい値に関する制御が提供されています。一般的に、小さなバジェットは応答性の高いデコードを優先し、大きなバジェットはプロンプトの高速な読み込みを優先します。
チャンク分割によってすべてのボトルネックが解消されるわけではありません。長いコンテキストは依然としてキャッシュメモリを消費し、過度に積極的な受け入れはキャッシュの圧迫、リクエストのプリエムション、または重複した作業を引き起こす可能性があります。オペレーターは、現実的なプロンプト分布の下で、中央値およびテール推論レイテンシ、最初のトークンまでの時間、トークン間レイテンシ、スループット、およびGPUメモリ使用量を測定する必要があります。
関連する推論の概念#
チャンクドプリフィルは、いくつかの最適化と密接に関連していますが、明確な目的を果たします。
- 継続的バッチ処理: 生成中にリクエストを動的に追加および削除します。チャンクドプリフィルは、トークン境界での長いプロンプト処理のスケジュールを可能にすることでこれを補完します。
- プロンプトキャッシュ: 繰り返し使用されるプロンプトプレフィックスのために、以前に計算された状態を再利用します。チャンクドプリフィルは新しい計算をスケジュールするものであり、その計算をスキップするものではありません。
- ページ化KVキャッシュ管理: キャッシュされたアテンション状態をメモリブロックに整理します。NVIDIAのTensorRT-LLM概要には、プロンプト処理の最適化と並行して、ページ化キャッシュとインフライトバッチ処理が含まれています。
- 動的バッチ処理: NVIDIA Triton動的バッチ処理ガイドで説明されているように、個別のリクエストをバッチに結合します。個々の長いプロンプトを必ずしも部分プリフィルに分割するわけではありません。
- 分離型プリフィルとデコード: フェーズを別々のワーカーで実行します。NVIDIAのプリフィルとデコードのデプロイメントガイダンスは、ステージを代わりに独立してスケーリングする方法を示しています。
Ultralytics YOLO26 Tritonデプロイメントワークフローはスケーラブルなコンピュータビジョン推論と自動バッチ処理をサポートしていますが、標準のYOLOオブジェクト検出には自己回帰的なテキストプリフィルフェーズがありません。チャンクドプリフィルは、主に生成言語モデルやマルチモーダルモデルに適用されます。
実社会での応用#
-
ドキュメントアシスタント: 検索拡張生成(RAG)アシスタントは、短い質問を持つユーザーに同時にサービスを提供しながら、長いレポートを受け取る場合があります。レポートのプリフィルをチャンク化することで、コンテキスト全体が処理されるまでフリーズするのではなく、進行中のチャットのデコードを継続させることができます。
-
マルチモーダル動画解析: ビジョン言語モデルは、画像特徴量、オブジェクトの説明、および長いテキストの指示を受け取る場合があります。ビジョンパイプラインはまずUltralytics YOLO予測を使用して検出を生成し、その後構造化された視覚的コンテキストを生成モデルに送信できます。チャンクドプリフィルは、結果として得られる視覚およびテキストのトークンを他のリクエストと並行してスケジュールするのに役立ちます。NVIDIAのマルチモーダル・エンコード・プリフィル・デコード・ワークフローは、これらのステージを独立して管理することがスケーラビリティを向上させる理由を示しています。
実践的なデプロイメントガイダンス#
ターゲットアーキテクチャを公式にサポートしているサービングエンジンを通じてのみ、チャンクドプリフィルを有効にしてください。たとえば、TensorRT-LLMバックエンド設定では、サポートされているデプロイメント向けのチャンクコンテキスト制御が文書化されています。
単一のリクエストに頼るのではなく、現実的な同時実行数、入力長、および出力長を使用してベンチマークを実行してください。ランタイムが推奨するトークンバジェットから開始し、最初のトークンまでの時間とトークン間レイテンシを監視しながら調整します。最後に、非常に長いプロンプトと非常に短いプロンプトの両方を含む混合ワークロードをテストします。ここにおいて、チャンクドプリフィルが最も明確な運用の価値を発揮します。






