KV Cache(KVキャッシュ)KV Cache
KV Cache は、自己回帰生成中に過去トークンの Key・Value を保存して再利用する仕組みです。1トークン生成あたりの計算量が O(N^2) から O(N) に削減され、推論速度を劇的に高めます。
詳細解説
KV Cache(KVキャッシュ、ケーブイキャッシュ)は、自己回帰型 Transformer の推論において、デコード過程で過去トークンに対する Key(K)行列と Value(V)行列を計算結果として保存し、次トークン生成時に再利用するキャッシュ機構です。Self-Attention は新たに生成する1トークンの Query と過去全トークンの K・V との内積を必要としますが、過去トークンの K・V は次トークン生成でも変化しないため、毎回再計算する必要はありません。これにより、N トークン目の生成あたりの計算量が O(N^2) から O(N) に減り、長文生成で生成速度が10倍以上に達します。一方で、KV Cache は層数 × ヘッド数 × ヘッド次元 × 系列長 × 2(K と V) × バッチサイズ × 精度 のサイズを占有し、Llama 3 70B で系列長8K・バッチ32の場合に数十GBに達することもあり、GPU メモリのボトルネックになります。この問題への対策として、(1) ヘッドの K・V を共有する GQA・MQA、(2) ページング管理する PagedAttention(vLLM)、(3) FP8/Int4 への KV キャッシュ量子化、(4) 古いトークンを破棄する StreamingLLM/H2O、などが活発に研究されています。LLM サービングのコスト・スループット最適化の中心課題です。
実装例 / 使い方
- 01Llama 3 70B で KV Cache を有効化すると生成速度が10倍以上になります
- 02長コンテキストでは KV Cache が GPU メモリの大半を占めます
- 03PagedAttention(vLLM)が KV Cache を仮想ページ管理で効率化します
関連する用語
Self-Attention(自己注意機構)
SASelf-Attention は、入力系列の各トークンが同じ系列内の他のトークンとの関連度を計算する仕組みです。Query・Key・Value の3行列に射影し...
Flash Attention(高速アテンション)
FAFlash Attention は、GPU の SRAM とタイリングを活用してアテンション行列をメモリに具体化せず計算する I/O 最適化アルゴリズムです。メ...
Continuous Batching(連続バッチング)
CBContinuous Batching は、LLM サービングでリクエストごとに完了したスロットを即座に新リクエストで埋めるバッチ手法です。静的バッチに比べてス...
Grouped Query Attention(GQA)
GQAGQA は、複数の Query ヘッドが Key・Value ヘッドのグループを共有する Attention 変種です。MHA の品質と MQA のメモリ効率の...
Speculative Decoding(投機的デコーディング)
SpecDecSpeculative Decoding は、小型のドラフトモデルで複数トークンを先読み生成し、本体モデルで一括検証することで推論を高速化する手法です。出力分布...
KV Cache(KVキャッシュ)を、実際に活用する
用語の意味は分かった。次は実装。EXBANK の無料診断で、貴社で具体的にどう活用できるかをご提案します。
営業時間 平日10-18時 / 通常24時間以内に返信
