# KVキャッシュ
## 定義
Transformer の自己回帰生成において、各トークンの key/value 射影を保存し再計算を避けるデータ構造。dot-product attention では各トークンが過去のトークンにしか注意を向けないため、一度計算した key/value 射影を保存しておけば後続トークンの生成時に再計算せずに済む。これにより $n$ トークン生成の計算量は FFW で $O(n)$、attention で $O(n^2)$ に抑えられる(KV キャッシュを使わない素朴実装はそれぞれ $O(n^2)$、$O(n^3)$)。(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]])
## サイズとメモリの非対称性
1 トークンあたりの KV キャッシュサイズは $2 \cdot \text{bytes per float} \cdot H \cdot K \cdot L$($H$: ヘッド次元、$K$: KV ヘッド数、$L$: 層数)で決まり、系列長 $T$ に比例して線形に増える。LLaMA 2-13B では 8192 トークン 1 系列で 6.7GB(bf16)に達し、わずか 4 系列分でパラメータサイズ(26GB)を超える。パラメータはバッチ全体で使い回せるためバッチが増えてもロードコストは一定だが、KV キャッシュはリクエストごとに個別のため、バッチサイズに比例してメモリ負荷が増える非対称性がある。(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]])
## 演算強度への影響
Generation 時の attention の演算強度は $ST/(S+T)$($S$: キャッシュ長、$T$: クエリ長)で表され、$T=1$ のときこれは $\approx 1$ に潰れる。KV キャッシュは巨大な読み込みに対しごく少量の FLOPs しか使わないため、attention は generation 時ほぼ常に memory bandwidth-bound になる。この点は[[演算強度]]の一般論とあわせて理解すると、KV キャッシュが「常に compute-bound になりえない」構造的な理由を説明する。(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]])
## 削減・管理の手法
- [[Grouped-Query Attention|GQA/GMQA]]: KV ヘッド数を減らし複数の Q ヘッドと共有する
- ローカル attention 層の混在: attention の窓を制限しキャッシュ上限を抑える
- 層間での KV 共有: サイズは減るが HBM からの読み直しコストが生じうる
- 量子化: int8/int4/fp8 等でメモリ帯域を節約する
- [[PagedAttention]]: ページテーブル風管理でパディングをほぼ排除する
- [[プレフィックスキャッシュ]]: 共通プレフィックスの KV キャッシュを再利用する
(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]])
## 分散シャーディング
複製を避けるため、まず head 次元で Megatron シャーディングし($K$ way が上限)、それ以上はバッチ次元でシャーディングする。activation をモデルシャーディングからバッチシャーディングへ切り替えるため、attention 層ごとに 2 回の AllToAll が必要になる。(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]])
## 未解決の問い
- MoE モデルでは KV キャッシュサイズは dense モデルと変わらないとされるが、expert ルーティングを跨いだキャッシュ共有・再利用の余地はあるか。
## 未編纂の観察
- [削減手法] LLM Inference Handbook はKVキャッシュオフロード(GPU→CPU/ストレージ階層)を量子化・PagedAttention・プレフィックスキャッシュと並ぶ削減・管理手法として位置づけ、How to Scale Your Model の分類(GQA/ローカルattention/層間共有/量子化)を補完する(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]], [[@2025__Modular__LLM Inference Handbook - Chapter 32 KV cache offloading]])
## 関連
- 概念: [[演算強度]] / [[Grouped-Query Attention]] / [[PagedAttention]] / [[プレフィックスキャッシュ]] / [[Prefill-Decode分離]]
- ソース: [[@2025__Modular__LLM Inference Handbook - Chapter 32 KV cache offloading]]
## 出典
- [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]](KV キャッシュの定義、サイズ公式、演算強度への影響、削減手法とシャーディング)
- [[@2025__Modular__LLM Inference Handbook - Chapter 32 KV cache offloading]](KVキャッシュオフロードの利点・トレードオフ、フレームワーク実装比較)