KV キャッシュの最適化
KV キャッシュには、トランスフォーマーがすでに計算したキーと値が保存されるため、新しいトークンごとに作業をやり直すことはありませんが、そのキャッシュはギガバイトにまで膨れ上がる可能性があります。
概要
KV cache optimization shrinks and manages that memory so models serve longer contexts to more users at once.
ディープダイブ
トランスフォーマーでは、新しいトークンはそれぞれ、アテンションのキー (K) と値 (V) を介して以前のすべてのトークンに対応します。すべてのステップでシーケンス全体の K と V を再計算することは 2 次的で無駄が多いため、モデルはそれらをキャッシュします (KV キャッシュ)。欠点はサイズです。キャッシュはシーケンスの長さ、バッチ サイズ、レイヤー、ヘッドに応じて直線的に増加するため、長いコンテキストのリクエストはモデルの重み自体よりも多くの GPU メモリを消費する可能性があります。最適化では、いくつかの角度からこれに取り組みます。ページ メモリ (vLLM の PagedAttendance) は、キャッシュを非連続ブロックに保存して断片化を排除し、共有を可能にします。量子化では、K と V を 8 ビットまたは 4 ビットで保存します。また、Grouped-Query Attendant (GQA) や Multi-Query Attendance (MQA) などのアーキテクチャの変更により、多くのクエリ ヘッドが共有するキー/値ヘッドの数が減り、ソースのキャッシュ サイズが大幅に削減されます。
技術的な洞察
PagedAttendance はオペレーティング システムから仮想メモリ ページングを借用します。キャッシュはルックアップ テーブルを通じてマップされた固定サイズのブロック内に存在するため、リクエストは必要なブロックのみを使用し、同一のプレフィックス (共有システム プロンプトなど) が同じブロックを指すことができます。 DeepSeek モデルで使用されるマルチヘッド潜在アテンション (MLA) は、K と V を小さな共有潜在ベクトルに圧縮し、精度を維持しながらメモリを大幅に削減します。
戦略的影響
費用と予算
アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。
より明確な判決
技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。
品質管理
より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。
KV キャッシュ最適化の将来
コンテキスト ウィンドウが数十万または数百万のトークンに拡張されると、KV キャッシュがサービス提供の主なコストになります。積極的なキャッシュ圧縮とエビクション (注目度の低いトークンの削除)、デフォルトとしてのクロスリクエスト プレフィックス共有、CPU または NVMe へのコールド キャッシュのオフロード、および MLA や GQA などのアーキテクチャが標準になることが予想されます。キャッシュ管理は、階層とスマート プリフェッチを備えた完全なメモリ階層にますます似てきます。
現実世界の実装
メモリの断片化を起こさずに KV ブロックをパックすることで、多数の同時チャット セッションを処理する vLLM の PagedAttending
Llama モデルのグループ化されたクエリ アテンションにより、KV キャッシュ サイズが削減され、より長いコンテキストが GPU メモリに収まるようになります。
KV キャッシュを 8 ビット (KV8) に量子化し、長い文書の要約時にキャッシュ メモリを約半分にします
数千の API リクエストにわたって共有システム プロンプトの KV ブロックを再利用するプレフィックス キャッシュ
リスクとガードレール
1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。
インフラストラクチャとメンテナンスのコストは過小評価されがちです。
システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。
実装ロードマップ
実装前にレイテンシ、品質、コストの目標を定義します。
現実的な負荷とデータ条件でのベンチマーク。
エラー、ドリフト、ユーザーへの影響を計測器で監視します。
スケーリングの前に、ロールバックとインシデント対応のパスを準備します。
探検を続けましょう
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 Optimization 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 Optimization?
KV キャッシュには、トランスフォーマーがすでに計算したキーと値が保存されるため、新しいトークンごとに作業をやり直すことはありませんが、そのキャッシュはギガバイトにまで膨れ上がる可能性があります。 KV キャッシュの最適化は、そのメモリを縮小して管理するため、モデルはより多くのユーザーに一度に長いコンテキストを提供します。
KV キャッシュには何が保存されますか?またその理由は何ですか?
以前のトークンのキーと値をキャッシュすると、新しいトークンごとにアテンションの計算をやり直す必要がなくなり、時間を節約できます。
KV キャッシュがメモリの問題になるのはなぜですか?
キャッシュ サイズはコンテキストの長さと同時実行性に応じて変化するため、長いリクエストでは膨大な量の GPU メモリが使用される可能性があります。
PagedAttendant はどのようなオペレーティング システムの概念を借用していますか?
PagedAttendance は、OS ページングと同様に、テーブルを通じてマップされた不連続な固定サイズのブロックにキャッシュを保存します。
グループ化クエリとマルチクエリ アテンションはどのようにして KV キャッシュ サイズを削減しますか?
複数のクエリ ヘッド間でキー/値ヘッドを共有すると、保存する K ベクトルと V ベクトルがはるかに少なくなります。
KV キャッシュでのプレフィックス共有の利点の 1 つは何ですか?
共有システム プロンプトは同一の KV エントリを生成するため、複数のリクエストが重複することなく同じブロックを指すことができます。