KVキャッシュがLLMのようなトランスフォーマーモデルを最適化する仕組みを解説。Ultralytics の推論遅延を低減し、効率を向上させる方法を学びましょう。
KVキャッシュ(キーバリューキャッシュ)は、主に大規模言語モデル(LLM)で使用される重要な最適化技術です。 大規模言語モデル(LLM) およびその他のトランスフォーマーベースのアーキテクチャにおいて、 推論のレイテンシを低減し と 計算コストの削減に用いられる重要な最適化技術である。その中核では、KVキャッシュは 注意メカニズム によって生成されたキーと値の行列を保存します。これらの中間計算を保存することで、モデルは新しいトークンを生成するたびに会話の全履歴に対する注意状態を再計算する必要がなくなります。このプロセスは テキスト生成 ワークフローを 二次的な複雑さの操作から線形のものに変え、チャットボットや AIエージェントとの を可能にする。
標準的な Transformer モデルでは、 次の単語を生成するには、文脈を理解するためにそれまでの全ての単語に注意を払う必要がある。キャッシュがなければ、 モデルは各ステップでシーケンス全体の数学的関係を再計算しなければならない。KVキャッシュは 記憶装置として機能することでこの問題を解決する。
KVキャッシュは現代の生成AIを展開する上で基本的な構成要素であるが、その原理は コンピュータビジョン(CV)にも適用されます。
モデルが大きくなるにつれ、KVキャッシュのサイズがボトルネックとなり、ギガバイト単位のGPU 消費する可能性があります。最近の進歩は、このストレージの最適化に焦点を当てています。
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 などのライブラリが、こうしたキャッシュ機構が実装されている基礎的なブロックを提供しています。