YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

KVキャッシュ

KVキャッシュがLLMのようなTransformerモデルをどのように最適化するかを知りましょう。この技術がUltralytics YOLO26の推論レイテンシを削減し、効率を向上させる方法を学びましょう。

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

メカニズムと利点

標準的なTransformerモデルでは、次の単語を生成するには、文脈を理解するためにすべての前の単語に注意を払う必要があります。キャッシングなしでは、モデルは各ステップでシーケンス全体の数学的関係を再計算する必要があります。KVキャッシュは、メモリバンクとして機能することでこれを解決します。

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

実際のアプリケーション

KVキャッシュは、最新の生成AIをデプロイする上で不可欠なコンポーネントですが、その原理はコンピュータービジョン (CV)にも応用されます。

  1. 生成型チャットボット: ChatGPTClaudeのようなサービスは、KVキャッシングに大きく依存しています。ユーザーが追加の質問をしたとき、モデルはチャット履歴全体を最初から読み直すことはありません。代わりに、新しい入力を前のターンのキャッシュされた状態に追加し、ほぼ瞬時の応答を可能にします。
  2. ビデオ理解: ビデオ理解タスクでは、モデルはフレームを順次処理します。テキストトークンと同様に、過去のフレームからの視覚的特徴はキャッシュされ、モデルがビデオ履歴全体を再処理することなく物体をtrackしたり行動を認識したりするのに役立ちます。これは、時間的コンテキストが重要となる行動認識において特に重要です。

効率的なメモリ管理

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

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

関連概念の区別

KVキャッシュを他のキャッシングおよび最適化用語と区別することは、その理解を深める上で役立ちます。

  • KVキャッシュ vs. プロンプトキャッシング: KVキャッシュは通常、単一の生成ストリーム中に使用される動的でトークンごとのメモリを指します。プロンプトキャッシングは、複数の独立した推論呼び出しで再利用するために、固定された入力命令の処理済み状態を格納することを特に指します。
  • KVキャッシュ vs. エンベディング: エンベディングは、入力データ(テキストや画像)の意味的意味を捉えるベクトル表現です。KVキャッシュは、これらのエンベディングからアテンション層内で派生したアクティベーション(キーと値)を、特にシーケンス生成の目的で格納します。
  • KVキャッシュ vs. モデルウェイト: モデルウェイトは、ニューラルネットワークの静的で学習されたパラメータです。KVキャッシュは、特定の入力シーケンスのフォワードパス中に生成される動的で一時的なデータで構成されます。

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

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

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 Platformを利用できます。アテンションのより深いメカニズムに関心のある方には、PyTorchのようなライブラリが、これらのキャッシュメカニズムが実装される基盤ブロックを提供します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。