推論最適化・実行基盤

KVキャッシュとは|文脈を128,000トークンにすると、80GBに1人しか入らない

KVキャッシュとは何かどれだけの量を覚えるのか文脈を長くすると何が起きるのか

1トークンあたり512KBを覚えておく必要がありました。文脈が32,000トークンなら、1人分で15.63GBです。

80GBのメモリに何人分入るかを数えると、1,000トークンで131人、128,000トークンで1人でした。

この記事の要点

  • 1トークンあたり512KB
  • 文脈32,000トークンなら1人15.63GB
  • 80GBに入るのは131人から1人
  • 頭の数を減らす手法でこの量が下がる

文脈を128,000トークンにすると、80GBに1人しか入らない

1トークンあたりの量から数え上げました。文脈の長さが、そのまま同時に扱える人数を決めます。

KVキャッシュがどれだけの場所を取るのかを、実際に数えました。条件は層32・頭32・頭あたり128次元・16bitで持つ場合です。

1トークンあたりの量は、この条件から決まります。層の数 × 2 × 頭の数 × 次元 × 精度という掛け算です。

javascript
const LAYERS = 32, HEADS = 32, HEAD_DIM = 128, BYTES = 2;
const perToken = LAYERS * 2 * HEADS * HEAD_DIM * BYTES;   // 鍵と値で2倍
// perToken = 524,288 バイト = 512 KB
text
1トークンあたり 512 KB を覚えておく必要がある

文脈の長さ    1人あたり    8人同時    32人同時
     1,000トークン     0.49 GB     3.9 GB     15.6 GB
     4,000トークン     1.95 GB    15.6 GB     62.5 GB
     8,000トークン     3.91 GB    31.3 GB    125.0 GB
    32,000トークン    15.63 GB   125.0 GB    500.0 GB
   128,000トークン    62.50 GB   500.0 GB   2000.0 GB

上の表を見てください。文脈が32,000トークンだと、1人分で15.63GBになります。

何人分入るか

text
文脈の長さ    入る人数
     1,000トークン      131人
     4,000トークン       32人
     8,000トークン       16人
    32,000トークン        4人
   128,000トークン        1人

文脈を1,000トークンから128,000トークンに伸ばすと、131人から1人になります。128倍の文脈で、人数は128分の1です。

この関係は素直な比例です。文脈を2倍にすれば、入る人数は半分になります。

何を意味するか

同時に扱える人数は、そのまま1台あたりで捌ける量です。人数が減れば、同じ利用者数を支えるのに必要な台数が増えます。

つまり文脈を長くする設計は、そのまま費用の設計です。渡す文書を増やすかどうかを決めるときに、この表が判断材料になります。

文脈を2倍にすると、入る人数は半分になる。

単位: 人1,000トークン131人4,000トークン32人8,000トークン16人32,000トークン4人128,000トークン1人層32・頭32・頭あたり128次元・16bit、80GBから重み16GBを引いた条件での数え上げ。
図1 ── 文脈の長さと同時に扱える人数
出典Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」2026-08-18 確認
Multi-query attention (MQA), which only uses a single key-value head, drastically speeds up decoder inference.
原文Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 この内容の有効期限2027-02-18

KVキャッシュとは、途中の計算を覚えておく仕組み

1トークン出すたびに、それまでの全トークンとの関係を使います。毎回計算し直さないために覚えておきます。

KVキャッシュは、処理の途中で作った値を覚えておく仕組みです。鍵と値という2種類の値を保持します。

なぜ覚えるのか

文章を1トークンずつ出していくとき、毎回それまでの全トークンとの関係を使います。100トークン目を出すには、1から99トークン目の情報が要ります。

覚えておかないと、1トークン出すたびに全部を計算し直すことになります。長さの二乗で増えます。覚えておけば、増えた1トークンぶんだけで済みます。

会話が進むと増える

覚える量は会話が進むほど増えます。前の節の表でいえば、行が下に進んでいく形です。

  1. 始まった時点。指示と最初の問いのぶんだけ
  2. 答えを出している間。1トークンごとに増える
  3. 次の問いが来る。前のやり取りも残っている
  4. 会話が終わる。ここで初めて解放される

4番目が効きます。会話が続いている間はずっと占有します。処理していない待ち時間も含めてです。

量そのものを減らす

掛け算の項目を減らせば、量も減ります。鍵と値を持つ頭の数を減らす手法が知られています。

極端な形として、鍵と値の頭を1つだけ使う多問い注意は、復号側の推論を大きく速めると報告されています。

余談 この計測での注意

使った条件は頭の数と鍵と値の頭の数が同じ場合です。最近のモデルの多くは、鍵と値の頭を減らす仕組みを入れているので、実際の量はこれより小さくなります。ここで見せているのは、文脈の長さと人数が反比例するという関係です。詰め方そのものは継続バッチングの記事で扱っています。

出典Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」2026-08-18 確認
a generalization of multi-query attention which uses an intermediate
原文Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 この内容の有効期限2027-02-18

自分のモデルの条件で数え直す

1トークンあたりの量はモデルごとに違います。掛け算の項目を確かめれば、自分の環境で同じ表が作れます。

KVキャッシュの量は使うモデルによって変わります。前の節の512KBは、特定の条件での値です。

掛け算の項目

  1. 層の数。層ごとに別々に覚える
  2. 鍵と値で2倍。ここは固定
  3. 鍵と値の頭の数。頭の数と違うことがある
  4. 頭あたりの次元。掛け合わせると1層あたりの幅になる

3番目に注意してください。頭の数と、鍵と値の頭の数は別です。ここが違うモデルでは、前の節の値より小さくなります。

中間の数を選ぶ

鍵と値の頭を1つまで減らすと量は最小になりますが、品質が落ちます。そこで中間の数を使う形が提案されています。

この方式は多問い注意の一般化であり、中間の数の鍵と値の頭を使うものだと説明されています。頭の数と1の間のどこかを選びます。

結果として追加学習した方式は、多頭の注意に近い品質を、多問い注意に匹敵する速さで達成すると報告されています。中間を選ぶことで、量と品質の両方を取る形です。

使い方

自分のモデルの数値を入れて、前の節と同じ表を作ってください。実際に扱う文脈の長さで、何人分入るかが出ます。

その人数が、1台で同時に応じられる利用者数です。渡す文書を増やす判断も、この数字と一緒に考えることになります。

掛け算の項目を確かめれば、自分の環境で数え直せる。

充足 2 / 4鍵と値の頭の数を確かめている頭の数と違うモデルが多く、その場合は量が小さくなる実際に扱う文脈の長さで計算している文脈を2倍にすると、同時に扱える人数は半分になる会話が終わるまで占有することを見ていない処理していない待ち時間も含めて、ずっと場所を取り続ける文脈の長さを費用と切り離して決めている1,000トークンで131人、128,000トークンで1人。台数がそのまま変わる層32・頭32・頭あたり128次元・16bitでの数え上げにもとづく。1トークンあたりは512KBだった。
図2 ── 覚える量を見積もるときの点検項目
出典Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」2026-08-18 確認
uptrained GQA achieves quality close to multi-head attention with comparable speed to MQA
原文Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 この内容の有効期限2027-02-18

よくある質問

なぜ覚えておく必要があるのですか
1トークン出すたびに、それまでの全トークンとの関係を使うためです。毎回計算し直すと二乗で増えます。
どれくらいの量になりますか
層32・頭32・頭あたり128次元・16bitという条件では、1トークンあたり512KBでした。
文脈を長くすると何が起きますか
同時に扱える人数がそのまま減ります。この計測では1,000トークンで131人、128,000トークンで1人でした。
減らす方法はありますか
鍵と値を持つ頭の数を減らす手法があります。多頭に近い品質のまま、覚える量を下げられると報告されています。

まとめ

  • 途中の計算を覚えておく仕組み
  • 1トークンあたり512KB
  • 文脈を長くすると同時に扱える人数が減る
  • 頭の数を減らす手法で量そのものを下げる

今日から始められること

  1. 使っているモデルの層数と頭の数を確かめる
  2. 1トークンあたりの量を計算する
  3. 実際に扱う文脈の長さを掛ける
  4. 同時に何人分入るかを出す

実務で組んだKVキャッシュのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る