2026年11月15日(日) 記事を探す決算カレンダー広告掲載このサイトについて
トップ › 仕組み
仕組み

KVキャッシュとは 1語に800キロバイト、GPUのメモリの約3割を占める途中結果

KVキャッシュは、AIが読んだ文章の途中結果をGPUのメモリに置く仕組みです。130億パラメータのモデルでは1語あたり800キロバイトになり、DeepSeekは設計を変えてこれを93.3%減らしました。

ポイント
  • KVキャッシュは、AIが文章の各語について計算した「キー」と「バリュー」の値を、次の語の計算のために残しておくメモリです。
  • カリフォルニア大学バークレー校などのvLLMの論文によると、130億パラメータのOPTで1語あたり800キロバイト、1件で最大1.6ギガバイトになります。
  • 同じ論文は、既存の仕組みでは確保したKVキャッシュの領域のうち20.4〜38.2%しか使われていなかったとしています。
  • 中国のDeepSeekは、モデルの設計を変えて、KVキャッシュを従来のモデル比で93.3%減らしました。

KVキャッシュとは、文章を生成するAIモデルが、すでに読んだ語ごとの計算結果をメモリに保存しておく仕組みのことです。KはKey(キー)、VはValue(バリュー)の頭文字です。AIの推論で、GPUに積むメモリ(HBM)の容量がなぜ足りなくなるのかは、この仕組みから説明できます。

なぜ途中結果を残すのか

いまの言語モデルは、次の1語を決めるたびに、それまでの全部の語との関係を計算します。その計算には、各語から作ったキーとバリューの値を使います。毎回作り直すと、文章が長くなるほど計算が膨らみます。そこで、一度作った値をメモリに残し、新しい語の分だけを足していきます。

大きさは、層の数、内部の値の幅、語の数、同時に処理する件数のかけ算で決まります。モデルの重みと違い、要求ごとに増えたり消えたりします。

どれだけ場所を取るか

vLLMの論文は、カリフォルニア大学バークレー校などの研究者が2023年9月に公開しました。数字は次のとおりです。

vLLMの論文が示したKVキャッシュの大きさ
項目数字
OPT 13Bの1語あたり800KB
1件の最大(2048語)1.6GB
A100 40GBでモデルの重みが占める割合約65%
同じく要求ごとの状態が占める割合約30%
既存の仕組みで実際に使われた割合20.4〜38.2%

無駄の原因は、最大の長さを見込んで連続した領域を先に確保していたことです。vLLMは、OSのメモリ管理をまねて、KVキャッシュを小さな区画に分けて必要な分だけ割り当てる方式(PagedAttention)を示しました。同じ待ち時間で、スループットが2〜4倍になったとしています。

モデルの側で小さくする

DeepSeekは2024年5月公開のDeepSeek-V2の論文で、キーとバリューを圧縮して持つ方式を使いました。総パラメータは2360億で、1語ごとに使うのは210億です。以前のDeepSeek 67Bに比べ、KVキャッシュを93.3%減らし、生成の最大のスループットを5.76倍にしたとしています。

KVキャッシュが小さければ、同じGPUで同時にさばく件数を増やせ、長い文章も扱えます。逆に、文脈を長くしたい、同時の利用者を増やしたいという要求は、HBMの容量の需要として半導体メーカーに返ってきます。HBMはSKハイニックス、サムスン電子、マイクロンの3社が作っています。

関連する用語

  • HBM:GPUの隣に積む広帯域のメモリです。KVキャッシュの置き場です。
  • 長い文脈:一度に読ませる文章の長さです。長いほどKVキャッシュが大きくなります。
  • 量子化:値を少ないビットで持つ方法です。KVキャッシュにも使われます。

この記事は公開資料をもとに作成しています。売買をすすめるものではありません。誤りを見つけたら訂正します(編集方針)。

関連する記事