了解 PagedAttention 如何优化大型语言模型(LLM)的内存管理及键值缓存效率。探索其对吞吐量的影响,并对比其与Ultralytics 的性能表现。
PagedAttention 是一种高效能的内存管理算法,旨在优化大型语言模型(LLMs)的推理速度和 吞吐量。该技术借鉴了 传统操作系统中的虚拟内存和分页概念,解决了文本生成过程中 键值缓存(通常称为 KV 缓存)带来的巨大内存消耗问题。 通过将 缓存所需的连续内存块分割为更小的、非连续的“页面”,PagedAttention 有效地消除了内部和外部内存碎片化。这使得 AI 服务器能够同时批量处理 更多请求,从而最大限度地提高GPU 。
虽然这两种技术都能优化神经网络的性能,但它们针对的瓶颈各不相同。 Flash Attention是一种计算层面的优化方案, 通过最大限度减少GPU 中的低效内存读写操作, 从而加速注意力机制本身。相比之下,PagedAttention 是一种内存 分配策略。它完全专注于上下文窗口内存的 结构和存储方式,从而能够 实现动态扩展,而无需预先分配大量低效的内存块。
PagedAttention 所带来的内存效率提升,彻底改变了大规模生成式模型在 生产环境中的部署方式。
虽然 PagedAttention 主要应用于自然语言处理领域,但其底层的严格内存 优化原理在 计算机视觉(CV)中同样至关重要。在将模型部署到 硬件资源受限的边缘设备时,避免内存膨胀至关重要。 Ultralytics 通过采用端到端、NMS 的架构, 原生实现了 实时推理效率, 从而无需进行繁重的缓存管理。
对于希望无缝处理 物体检测管道的内存和导出需求的开发者而言, Ultralytics 提供了自动部署工具,可对模型进行打包, 以实现最佳的硬件执行效果。
PagedAttention 在服务框架的底层运行,用 经过优化的Cuda 替换了标准的注意力函数。以下是一个概念性示例,演示了如何在 PyTorch中定义标准注意力机制的概念示例,vLLM 等系统会在模型部署过程中自动拦截 并利用分页技术对其进行优化。
import torch
import torch.nn.functional as F
# Simulated Key, Query, and Value tensors for a standard attention block
batch_size, num_heads, sequence_length, head_dim = 1, 8, 1024, 64
query = torch.randn(batch_size, num_heads, sequence_length, head_dim)
key = torch.randn(batch_size, num_heads, sequence_length, head_dim)
value = torch.randn(batch_size, num_heads, sequence_length, head_dim)
# Standard attention computation (often replaced by PagedAttention kernels in production LLM servers)
attention_output = F.scaled_dot_product_attention(query, key, value)
print(f"Computed attention shape: {attention_output.shape}")
通过运用先进的内存分配策略,人工智能行业不断突破技术边界, 确保庞大的基础模型能够在全球范围内高效扩展并被广泛使用。
开启您的机器学习未来之旅