Attention Sinks
了解注意力槽(attention sinks)如何稳定 LLM 和 VLM 以进行无限序列生成。学习如何使用 Ultralytics YOLO26 优化内存并部署稳定的 AI。
Attention sinks 是在现代 large language models (LLMs) 和 vision-language models (VLMs) 架构中发现的一种关键现象,它能确保在持续生成长文本或数据时的稳定性。在 attention mechanism 中,神经网络会动态地为输入的各个部分分配“权重”。研究人员观察到,自回归模型会固有地将大量过剩的注意力分数倾倒在序列最开始的几个 token 上,而无论它们实际的语义含义是什么。这些初始 token 充当了“attention sink”,提供了一个数学锚点,防止模型的注意力分数崩溃。通过将这些 sink tokens 永久保留在模型的 KV cache 中,开发者可以实现无限序列生成,而不会降低精度或因内存限制而崩溃。
Link to this sectionAttention Sinks 如何稳定模型#
对 attention sinks 的需求源于 Transformers 中使用的 Softmax 操作。由于注意力分数之和必须始终为 1,模型在处理高度局部化的数据时需要一个地方来分配多余的注意力。Prompt 中的最早 token 会自然地吸收这些多余部分。
从历史上看,在生成非常长的序列时,工程师会使用窗口技术将旧的 token 从内存中移除。然而,丢弃最初的 sink tokens 会导致性能立即崩溃。现代实现(如 StreamingLLM)会显式地保留这些初始 token 以及最近的 token。这种高度优化的内存管理方法正被积极探索于 OpenAI vision developments 和 Google DeepMind research 中,并且在 PyTorch ecosystem 中得到原生支持。
Link to this section区分相关的注意力概念#
为了充分理解 AI 模型如何优化上下文,将 attention sinks 与其他内存和硬件策略进行对比会有所帮助:
- Attention Sinks 与 Sliding Window Attention 的对比: Sliding window attention 将模型的关注点限制在固定数量的最近 token 上以节省内存。然而,严格的滑动窗口会丢弃第一个 token,从而导致不稳定。Attention sinks 通过使用那些至关重要的第一个 token 来锚定窗口,从而改进了这一点。
- Attention Sinks 与 Flash Attention 的对比: Flash Attention 是一种硬件层面的优化,可加速 GPU 上的内存读写速度。相反,Attention sinks 是一种关于哪些 token 必须保留在内存中以维持逻辑稳定性的架构发现。
Link to this section实际应用#
Attention sinks 的发现已经在各行各业解锁了高效、持续的处理能力。
-
持续运行的 AI Agents 和聊天机器人: 通过保留 attention sinks,AI agent 或客户服务机器人可以进行数小时不间断的对话流。它会选择性地遗忘中间的 token,同时保留初始的 sink 和最近的上下文,从而防止内存不足错误,同时保持对话的连贯性。
-
实时视频理解: 在 smart surveillance 和持续监控中,保持稳定的上下文窗口至关重要。模型可以分析连续的视频流数天,其效率与边缘优化的视觉架构相媲美。
Link to this section实现高效的持续推理#
虽然 attention sinks 主要优化大型生成模型,但在 computer vision (CV) 中应用高效、具有内存意识的推理循环也是普遍重要的。当使用 Ultralytics YOLO26 处理连续视频流时,利用 Python 生成器可确保长时间内的内存稳定性,类似于管理局部上下文窗口。
from ultralytics import YOLO
# Load the recommended Ultralytics YOLO26 model for efficient, real-time edge processing
model = YOLO("yolo26n.pt")
# Process a continuous video stream efficiently without memory overflow
results = model.predict(source="rtsp://continuous_camera_stream", stream=True)
# Iterate through the generator to maintain a stable memory footprint over time
for frame_result in results:
print(f"Detected {len(frame_result.boxes)} objects in the current frame.")将这些高效、持续的 object detection 流水线扩展到企业级使用需要强大的管理工具。开发者可以利用 Ultralytics Platform 来简化 model deployment 和自动化的数据集管理,让团队能够轻松构建稳定、长期运行的视觉应用。






