なぜ KV キャッシュが重要か
LLM 推論時のメモリ占有の大半は KV キャッシュであり、ここを最適化できれば同時接続数・コンテキスト長・スループットすべてが改善する。
PagedAttention(vLLM)
OS のページングと同様に KV を固定サイズブロックで管理し、断片化を排除する。社内 R&D では PagedAttention 有効化で同時接続数が 1.6 倍。
RadixAttention(SGLang)
複数のリクエストが共有するプレフィックス(system prompt など)を木構造で重複排除。エージェント用途では 2-4 倍の効果。
Hierarchical Caching
ホット KV を HBM、ウォーム KV を DDR に階層化。長文コンテキスト + 多テナント運用で有効。AWS 系の研究プロジェクトで実装例が出ている。
CacheGen
KV キャッシュを圧縮 + ストリーム転送する研究実装。disaggregation と組み合わせて KV 転送オーバーヘッドを削減する。
比較
| 手法 | 主な恩恵 | 実装の難度 | | --- | --- | --- | | PagedAttention | メモリ断片化解消 | 低(vLLM デフォルト) | | RadixAttention | プレフィックス共有 | 低(SGLang デフォルト) | | Hierarchical | 長文 + 多テナント | 中(独自実装が必要) | | CacheGen | 分散推論時の転送削減 | 高(研究レベル) |
推奨スタック
- 社内利用 / 中規模 → vLLM PagedAttention + Prefix Caching
- エージェント中心 → SGLang RadixAttention
- 大規模 SaaS / 長文中心 → Hierarchical Caching を検討
- 分散推論 → CacheGen 系の進展を継続観察
まとめ
KV キャッシュ最適化は同一ハードウェアで何倍ものスループットを引き出せる「無料の伸びしろ」。社内 R&D ではまず PagedAttention + Prefix Caching の組み合わせから始め、エージェント用途では SGLang への移行を順次検討するパターンが定番。