AIToday
大規模言語モデルQiita 機械学習掲載日時: 2026年10月13日 22:00

KVキャッシュが長文脈でLLMを重くする仕組み

LINEで送る
KVキャッシュが長文脈でLLMを重くする仕組み

3つのポイント

  1. 何が起きたか

    LLM は次のトークンを1つずつ予測し、過去トークンの Key と Value のベクトルを毎回計算し直す代わりに、KV キャッシュとして保存・再利用する。

  2. なぜ重要か

    保存したデータを使えば再構築の手間は省けるが、テキストが長くなり同時リクエストが増えるほどデータが膨らむ。これが LLM が重くなる主な理由とされる。

誰に効くかKV キャッシュは推論時の計算を大幅に削減する一方、メモリ消費がボトルネックになる。GQA / MQA、量子化、PagedAttention、スライディングウィンドウ、MLA、API のプロンプトキャッシュなどはすべてこのメモリ問題への対策として位置づけられる。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

LLM のニュースで「KV キャッシュ」「prefill / decode」といった用語によく出会い、小さな数値で一度その機械の中身を頭に描きたい読者に向けて書かれている。土台から積み上げていく。各トークンは数値のリスト(埋め込み)になり、Attention が関連する語の情報を混ぜ込み、FFN が各語を個別に処理する。この2つのブロックが32〜100回積み重なる。Query、Key、Value は図書館の検索にたとえて導入される。Query は検索語、Key は各本のタイトル、Value は本の中身で、同じ一つの例文が計算全体を通して使われる。

メモリコストは具体的な形をとる。解説は KV キャッシュのサイズを 2(K と V)×層数×KV ヘッド数×ヘッド次元×要素あたりのバイト数×トークン数×同時リクエスト数と示し、Llama 3.1 8B(32層、8 KV ヘッド、次元128、最大128K トークン)を FP16 で計算する。トークンあたり 128 KiB、8K トークンで 1 GiB、128K トークンで 16 GiB となり、これは FP16 のモデル本体とほぼ同じだと指摘し、同時リクエスト10件ではその10倍になる。

続いて、ニュースで見かける対策をこの式にひもづける。GQA / MQA(Query ヘッド間で K と V を共有)、キャッシュを FP16 から FP8 / INT4 に量子化、vLLM の PagedAttention、古いトークンを捨てるスライディングウィンドウ、K と V を圧縮する DeepSeek の MLA だ。Claude と OpenAI の API のプロンプトキャッシュは、この同じキャッシュをリクエスト間で再利用するものと説明され、先頭の同一プレフィックスがあってこそ再利用が可能になる理由だとしている。

よくある質問
KV キャッシュが実際に節約するものは何か。
過去トークンの Key と Value ベクトル、およびそれらを生み出す層の計算を節約する。解説によれば、注意機構そのもの——新しいトークンの Query を過去のすべての Key と比較する処理——は省略できない。
KV キャッシュはどれくらい大きくなるか。
Llama 3.1 8B を FP16 で同時リクエスト1件で動かす場合、解説はトークンあたり 128 KiB、8K トークンで 1 GiB、128K トークンで 16 GiB と示す。これは FP16 のモデル本体とほぼ同じで、同時リクエスト10件ではその10倍になる。
prefill と decode の違いは何か。
prefill はプロンプト全体を一度に計算し、すべてのトークンの Key と Value ベクトルをキャッシュに入れる。decode は各ステップで新しい1トークン分の Key と Value だけを計算し、キャッシュに追加する。
Qiita 機械学習元記事を読む
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

次の記事へAIエージェントに応急対応モードを設定