探索KV缓存如何优化Transformer 。了解该技术如何Ultralytics 推理延迟并提升其运行效率。
KV缓存(键值缓存)是一种关键的优化技术,主要应用于 大型语言模型(LLMs) 及其他Transformer架构中,用于加速 推理延迟 并降低 计算成本。其核心机制在于存储由 注意力机制 为序列中 先前标记生成的键值矩阵。通过保存这些中间计算结果,模型无需在每次生成新标记时重新计算整个对话历史的注意力 状态。该过程将 文本生成 工作流从二次复杂度操作 转变为线性操作,从而实现与聊天机器人及 AI代理 成为可能。
在标准 Transformer 模型中, 生成下一个词需要关注所有先前词汇以理解上下文。若无缓存机制, 模型将被迫在每个步骤重新计算整个序列的数学关系。键值缓存 通过充当记忆库来解决这一问题。
KV缓存是部署现代生成式人工智能的基础组件,但其原理也延伸至 计算机视觉(CV)。
随着模型规模的扩大,KV缓存的容量可能成为性能瓶颈,消耗高达数十亿字节的GPU 。近期技术进展主要集中于优化该存储机制。
区分KV缓存与其他缓存及优化术语很有帮助:
尽管KV缓存在自然语言处理领域最为知名,但状态维护的概念同样适用于高级视觉模型。在下面的示例中,我们通过Ultralytics YOLO26模拟了在视频追踪场景中传递状态(上下文)的思路。 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 提供了实现这些缓存机制的基础构建模块。