了解 KV Cache 如何优化像 LLM 这样的 Transformer 模型。学习这项技术如何减少 Ultralytics YOLO26 的推理延迟并提高效率。
KV Cache(键值缓存)是一种关键的优化技术,主要用于 大型语言模型 (LLM) 和其他基于 Transformer 的架构,以加速 推理延迟 并降低计算成本。其核心是,KV 缓存存储了 注意力机制 为序列中先前 token 生成的 Key 和 Value 矩阵。通过保存这些中间计算结果,模型避免了每次生成新 token 时重新计算整个对话历史的注意力状态。这个过程将 文本生成 工作流从二次复杂度操作转变为线性复杂度操作,使与聊天机器人和 AI 代理 的实时交互成为可能。
在标准的 Transformer 模型中,生成下一个词需要关注所有之前的词以理解上下文。如果没有缓存,模型需要在每一步重新计算整个序列的数学关系。KV 缓存通过充当内存库来解决这个问题。
KV 缓存是部署现代生成式 AI 的一个基本组成部分,但其原理也延伸到了 计算机视觉 (CV) 领域。
随着模型规模的增大,KV 缓存的大小可能成为瓶颈,消耗数 GB 的 GPU 内存。最近的进展集中在优化这种存储方式。
将 KV Cache 与其他缓存和优化术语区分开来是有帮助的:
尽管 KV 缓存最常用于 NLP 领域,但维护状态的概念也适用于高级视觉模型。在下面的示例中,我们使用 Ultralytics YOLO26 模拟了在视频 track 场景中传递状态(上下文)的概念。在这里,track 器在帧之间保持对象的身份,概念上类似于缓存如何在 token 之间维护上下文。
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 这样的库提供了实现这些缓存机制的基础模块。
开启您的机器学习未来之旅