Yolo 深圳
深セン
今すぐ参加
用語集

KVキャッシュ

KVキャッシュがLLMのようなトランスフォーマーモデルを最適化する仕組みを解説。Ultralytics の推論遅延を低減し、効率を向上させる方法を学びましょう。

KVキャッシュ(キーバリューキャッシュ)は、主に大規模言語モデル(LLM)で使用される重要な最適化技術です。 大規模言語モデル(LLM) およびその他のトランスフォーマーベースのアーキテクチャにおいて、 推論のレイテンシを低減し と 計算コストの削減に用いられる重要な最適化技術である。その中核では、KVキャッシュは 注意メカニズム によって生成されたキーと値の行列を保存します。これらの中間計算を保存することで、モデルは新しいトークンを生成するたびに会話の全履歴に対する注意状態を再計算する必要がなくなります。このプロセスは テキスト生成 ワークフローを 二次的な複雑さの操作から線形のものに変え、チャットボットや AIエージェントとの を可能にする。

メカニズムと利点

標準的な Transformer モデルでは、 次の単語を生成するには、文脈を理解するためにそれまでの全ての単語に注意を払う必要がある。キャッシュがなければ、 モデルは各ステップでシーケンス全体の数学的関係を再計算しなければならない。KVキャッシュは 記憶装置として機能することでこの問題を解決する。

  • 速度向上:事前に計算されたキーと値をメモリから取得することで、システムは推論エンジンの処理速度を大幅に高速化します。 推論エンジンの処理を大幅に高速化します。これは、 リアルタイム推論 において不可欠です。
  • リソース効率性:メモリ使用量(VRAM)は増加するものの、トークンあたりの演算量(FLOPs)を大幅に削減します。このトレードオフは、モデル量子化などの技術によって管理されることが一般的です。 モデル量子化 やページングといった技術によって管理されることが多く、 これはオペレーティングシステムがRAMを管理する手法に類似している。
  • 拡張コンテキスト:キーバリューキャッシュの効率的な管理により、モデルはより大きな コンテキストウィンドウを処理できるようになり、長い文書を処理したり、長期間にわたって一貫性のある会話を維持したりすることが可能になります。

実際のアプリケーション

KVキャッシュは現代の生成AIを展開する上で基本的な構成要素であるが、その原理は コンピュータビジョン(CV)にも適用されます。

  1. 生成型チャットボット: ChatGPTClaude はKVキャッシュに大きく依存している。ユーザーが フォローアップ質問をすると、モデルはチャット履歴全体を最初から読み直すことはない。代わりに、 新しい入力を前回のターンでキャッシュされた状態に追加することで、ほぼ瞬時の応答を可能にしている。
  2. 動画理解: 動画理解 タスクでは、 モデルはフレームを順次処理する。テキストトークンと同様に、過去のフレームからの視覚特徴をキャッシュすることで、 モデルは動画履歴全体を再処理せずにtrack 動作認識が可能となる。これは特に 動作認識 において 時間的文脈が極めて重要である場合に特に有効である。

効率的なメモリ管理

モデルが大きくなるにつれ、KVキャッシュのサイズがボトルネックとなり、ギガバイト単位のGPU 消費する可能性があります。最近の進歩は、このストレージの最適化に焦点を当てています。

  • ページドアテンション:オペレーティングシステムの仮想メモリに着想を得た PagedAttention (vLLMにより導入)により、KV キャッシュを非連続メモリブロックに格納可能。これにより断片化が軽減され、 モデル提供時のバッチサイズ拡大が可能となる モデルサービング
  • KVキャッシュ量子化:スペースを節約するため、開発者はしばしば 混合精度 またはint8 量子化を適用することが多い。これによりメモリ使用量が削減され、 エッジAI RAMが限られたデバイスでも 高性能モデルを実行可能にします。
  • プロンプトキャッシュ:関連技術であり、静的システムプロンプト(例:「あなたは便利なコーディングアシスタントです」)のキーバリュー状態を一度計算し、多くの異なるユーザーセッションで再利用する。これはプロンプトエンジニアリングを最適化するための中核機能である。 大規模なプロンプトエンジニアリング ワークフローを 大規模に最適化する中核機能である。

関連概念の区別

KVキャッシュを他のキャッシュや最適化の用語と区別することは有益です:

  • KVキャッシュ対プロンプトキャッシュ KVキャッシュは通常、単一の生成ストリーム中に使用される動的なトークン単位のメモリを指す プロンプトキャッシュは特に、固定された入力命令の処理済み状態を保存し、複数の独立した推論呼び出し間で再利用することを指す。
  • キーバリューキャッシュ対埋め込み埋め込みとは、入力データ(テキストや画像)の意味的意味を捉えたベクトル表現である。キーバリューキャッシュは、特にシーケンス生成を目的として、注意層内でこれらの埋め込みから導出された活性化(キーと値)を格納する。
  • KVキャッシュ対モデル重み: モデル重みは、ニューラルネットワークの静的で学習済みパラメータである。 KVキャッシュは、特定の入力シーケンスの順方向伝播中に生成される動的で一時的なデータで構成される。

例:ビジョンモデルにおけるコンテキスト

NLP分野で最も有名なKVキャッシュだが、状態を維持する概念は高度なビジョンモデルにも適用される。 以下の例では、ビデオ追跡シナリオにおいて状態(コンテキスト)を渡すという概念をシミュレートする。 Ultralytics を用いて、ビデオ追跡シナリオにおける状態(コンテキスト)の受け渡しという概念をシミュレートします。ここでは、トラッカーがフレーム間でオブジェクトの識別を維持しますが、これは概念的に、キャッシュがトークン間でコンテキストを維持する仕組みと類似しています。

from ultralytics import YOLO

# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")

# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)

# Print the ID of the tracked objects
if results[0].boxes.id is not None:
    print(f"Tracked IDs: {results[0].boxes.id.numpy()}")

データセットの管理と最適化されたモデルのデプロイを目指す開発者は、 Ultralytics を利用できます。これは、データアノテーションから効率的な モデルデプロイメントを効率化するパイプラインを簡素化します。アテンションのより深い仕組みに関心のある方にとっては、 PyTorch などのライブラリが、こうしたキャッシュ機構が実装されている基礎的なブロックを提供しています。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加