言語AIガイド

KVキャッシュ

KV キャッシュには、トランスフォーマーが以前のトークンに対してすでに計算したキー ベクトルと値ベクトルが格納されているため、生成する新しい単語ごとにそれらを再計算する必要はありません。

2分の読書最終更新日

概要

It is the single biggest reason text generation is fast — and the main thing eating your GPU memory during long conversations.

ディープダイブ

トランスフォーマーは一度に 1 トークンずつテキストを生成し、各新しいトークンのアテンション レイヤーを以前のすべてのトークンと比較する必要があります。アテンション メカニズムは、各トークンをクエリ、キー、および値のベクトルに変換します。キャッシュを使用しない場合、トークン番号 1,000 を生成すると、各ステップで以前の 999 個のトークンすべてのキーと値を再計算することになり、二次的な無駄な作業になります。 KV キャッシュは、最初に計算された後にそれらのキーと値のベクトルを保存して再利用するため、新しい各ステップでは 1 つの最新トークンのベクトルのみを計算し、保存されたキャッシュを処理します。これにより、トークンごとのコストがシーケンス長によるスケーリングからほぼ一定まで縮小されます。トレードオフはメモリです。キャッシュはコンテキストの長さ、レイヤの数、およびアテンション ヘッドに応じて直線的に増加し、多くの場合、長いコンテキストのサービスでは主要なメモリ消費者になります。

技術的な洞察

「プレフィル」フェーズでは、モデルはプロンプト全体を処理し、キャッシュを埋めます。 「デコード」中に、ステップごとに 1 つのトークンの K/V を追加し、再参加します。キャッシュ サイズは、選択した精度で、2 (K および V) × レイヤー × ヘッド × head_dim × sequence_length × バッチとしてスケールされます。これを抑えるために、最新のモデルはグループ化クエリまたはマルチクエリ アテンションを使用してヘッド間でキー/値を共有し、vLLM のようなサービス システムは PagedAttendance を使用して非連続ブロックにキャッシュを割り当て、断片化と無駄を削減します。

戦略的影響

速度とスケール

言語ワークフローは、一貫性を犠牲にすることなく、より高速に移行できます。

アクセスと到達範囲

言語やコミュニケーション スタイルを超えてアクセスが拡張されます。

より明確な判決

自動化が繰り返しを処理する間、チームは判断により多くの時間を費やすことができます。

KV キャッシュの将来

コンテキスト ウィンドウが数十万のトークンに拡張されると、KV キャッシュが中心的なボトルネックになるため、8 ビットまたは 4 ビットへのキャッシュ量子化、重要度の低いトークンをドロップするエビクション ポリシー、クロスリクエスト プレフィックス共有、CPU またはディスクへのオフロードなど、革新が激しく行われています。マルチヘッドの潜在的な注意などのアーキテクチャの変更により、キャッシュ自体が圧縮されます。非常に長いコンテキストを安価かつ高スループットで提供することを目的とした、アテンションのバリアントとメモリ システムの継続的な共同設計が期待されます。

現実世界の実装

会話履歴を毎ターン再処理するのではなく、会話履歴からキャッシュされたキー/値を再利用することで、チャットボットの返信を高速化します。

長いシステム プロンプトのキャッシュを多くのユーザー間で共有するプレフィックス キャッシュにより、コストと遅延が削減されます。

vLLM の PagedAttend は、KV キャッシュをブロック単位で管理し、1 つの GPU で多くの同時リクエストを効率的に処理します。

限られた GPU メモリに長いコンテキストを収めるために、KV キャッシュを量子化して精度を下げます。

リスクとガードレール

幻覚のような事実が、レポート、サポート フロー、または研究結果に静かに組み込まれる可能性があります。

迅速な対応により、同様のリクエスト間で一貫性のない結果が生じる可能性があります。

アクセス制御が弱いと、機密テキスト データが漏洩する可能性があります。

実装ロードマップ

1

展開する前に、出力形式、トーン、品質基準を定義します。

2

正確さが重要な場合は常に、信頼できる情報源を使って地上対応を行ってください。

3

一か八かの成果物については人間によるレビュー チェックポイントを維持します。

4

失敗パターンを追跡し、プロンプトやワークフローを定期的に再トレーニングします。

探検を続けましょう

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the KV Cache quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

クイズを開始する

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

次のガイド

KV キャッシュの最適化

よくある質問

What is KV Cache?

KV キャッシュには、トランスフォーマーが以前のトークンに対してすでに計算したキー ベクトルと値ベクトルが格納されているため、生成する新しい単語ごとにそれらを再計算する必要はありません。これがテキスト生成が速い唯一の最大の理由であり、長時間の会話中に GPU メモリを消費する主な理由です。

KV キャッシュには何が保存されますか?

KV キャッシュには以前のトークンからのキー ベクトルと値ベクトルが保持されるため、再計算する代わりにそれらを再利用できます。

KV キャッシュは主にどのような問題を解決しますか?

キャッシュがなければ、新しいトークンごとに以前のトークンごとに K/V を再計算する必要があり、これは無駄です。キャッシュにより、トークンごとのコストがほぼ一定になります。

KV キャッシュの主な欠点は何ですか?

キャッシュはシーケンスの長さ、レイヤー、ヘッドとともに増加し、長いコンテキストの処理では GPU メモリの主要な消費者になることがよくあります。

アテンション ヘッド間でキーと値を共有することで KV キャッシュ サイズを削減する手法はどれですか?

グループ化されたクエリとマルチクエリ アテンションにより、複数のクエリ ヘッドが共有するキー/値のセットが少なくなり、キャッシュが大幅に縮小されます。

KV キャッシュに関連したトランスフォーマー推論の 2 つのフェーズは何ですか?

Prefill は、プロンプトの K/V をキャッシュに埋めます。 decode は、ステップごとに 1 つの新しいトークンの K/V を追加し、キャッシュ上で再実行します。