vLLMが提案したKVキャッシュのメモリ管理手法で、OSの仮想メモリページング方式を応用して固定サイズブロックでK/Vを管理し、メモリフラグメンテーションを解消する技術。
Paged Attention(ページドアテンション)は、UCバークレーのKwon et al.が2023年に発表したKVキャッシュのメモリ管理手法であり、LLM推論フレームワークvLLMの中核技術である。従来のLLM推論では各リクエストのKVキャッシュに最大シーケンス長分のメモリを連続領域として事前確保していたが、Paged AttentionはOSの仮想メモリ管理と同様に、固定サイズの「ブロック」単位でKVキャッシュを非連続的に割り当てる。
従来の推論フレームワーク(HuggingFace Transformers、FasterTransformer等)では:
メモリの非効率な使用は直接的にバッチサイズ(同時処理リクエスト数)を制限する:
| GPU | VRAMTotal | モデル | 従来方式バッチ | Paged Attention バッチ |
|---|---|---|---|---|
| A100 80GB | 80GB | Llama 2 13B | 8〜12 | 32〜48 |
| H100 80GB | 80GB | Llama 3 8B | 16〜24 | 64〜96 |
| A100 80GB |
| 80GB |
| Llama 2 70B |
| 1〜2 |
| 4〜8 |
| L40S 48GB | 48GB | Mistral 7B | 12〜16 | 48〜64 |
Paged Attentionは以下の概念でKVキャッシュを管理する:
リクエスト到着
→ 論理ブロック0を物理ブロック#42にマッピング
→ プリフィル: ブロック#42にK/Vを格納
デコード開始(トークン生成)
→ ブロック#42が満杯(16トークン)
→ 新しい物理ブロック#107を割り当て
→ ブロックテーブル更新: 論理1 → 物理#107
リクエスト完了
→ 物理ブロック#42, #107を解放
→ 即座に他のリクエストで再利用可能
Beam Searchやパラレルサンプリングでは、複数の生成候補が共通のプレフィックスを持つ。Paged Attentionは:
vLLM 0.4で導入された改良版:
SGLangが導入したRadixAttentionの概念をvLLMも取り入れ、Paged AttentionとPrefix Cachingを統合:
リクエスト1: [System Prompt] + [User Query 1]
→ System Prompt のKV: ブロック#1-5(新規計算)
→ User Query 1のKV: ブロック#20-22
リクエスト2: [System Prompt] + [User Query 2]
→ System Prompt のKV: ブロック#1-5(キャッシュヒット!再利用)
→ User Query 2のKV: ブロック#30-31
HuggingFace TGI(従来方式)とvLLM(Paged Attention)の実測比較:
| 指標 | HF TGI | vLLM | 改善率 |
|---|---|---|---|
| メモリ利用率 | 20〜40% | 95%+ | 2.5〜5× |
| スループット(req/s) | 12 | 36 | 3× |
| P99レイテンシ | 850ms | 420ms | 2× |
| 同時バッチサイズ | 8 | 32 | 4× |
| TTFT(Llama 2 13B, 2K入力) | 180ms | 145ms | 1.2× |
測定条件: A100 80GB, Llama 2 13B, ShareGPT データセット, 出力平均256トークン
2026年時点での主要推論フレームワークのPaged Attention対応:
Q1: Paged Attentionのブロックサイズはどう選べばよいですか? A: vLLMのデフォルトは16トークン/ブロックで、ほとんどのユースケースに最適。ブロックサイズを大きくすると管理オーバーヘッドは減るが内部フラグメンテーションが増え、小さくすると逆になる。128Kコンテキストの長文処理では32〜64トークン/ブロックが効率的な場合がある。
Q2: Paged Attentionは推論品質に影響しますか? A: 数学的にはフルKVキャッシュと完全に等価な結果を返すため、品質への影響はゼロ。メモリの物理配置が変わるだけで、計算結果は同一である。FlashAttentionとの組み合わせでも等価性は保たれる。
Q3: FlashAttentionとPaged Attentionの違いは何ですか? A: FlashAttentionはAttention計算自体をGPU SRAMタイリングで高速化する技術で、HBM→SRAM間のデータ転送を最小化する。Paged AttentionはKVキャッシュのメモリ割り当て・管理の効率化技術。両者は直交する最適化であり、vLLMでは両方を組み合わせて使用する。FlashAttention v2.5以降はPaged Attentionのブロック配列に対応したカーネルを提供している。