KVキャッシュがLLMのようなTransformerモデルをどのように最適化するかを知りましょう。この技術がUltralytics YOLO26の推論レイテンシを削減し、効率を向上させる方法を学びましょう。
KVキャッシュ(キーバリューキャッシュ)は、主に大規模言語モデル (LLM)やその他のTransformerベースのアーキテクチャで使用される重要な最適化手法であり、推論レイテンシを加速し、計算コストを削減します。その核心において、KVキャッシュは、シーケンス内の以前のトークンに対してアテンションメカニズムによって生成されたキー行列と値行列を保存します。これらの中間計算を保存することで、モデルは新しいトークンを生成するたびに、会話の全履歴に対するアテンション状態を再計算することを回避します。このプロセスは、テキスト生成ワークフローを二次複雑度の操作から線形な操作へと変換し、チャットボットやAIエージェントとのリアルタイムインタラクションを可能にします。
標準的なTransformerモデルでは、次の単語を生成するには、文脈を理解するためにすべての前の単語に注意を払う必要があります。キャッシングなしでは、モデルは各ステップでシーケンス全体の数学的関係を再計算する必要があります。KVキャッシュは、メモリバンクとして機能することでこれを解決します。
KVキャッシュは、最新の生成AIをデプロイする上で不可欠なコンポーネントですが、その原理はコンピュータービジョン (CV)にも応用されます。
モデルが大規模になるにつれて、KVキャッシュのサイズがボトルネックとなり、ギガバイト単位のGPUメモリを消費する可能性があります。最近の進歩は、このストレージの最適化に焦点を当てています。
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のようなライブラリが、これらのキャッシュメカニズムが実装される基盤ブロックを提供します。
未来の機械学習で、新たな一歩を踏み出しましょう。