PagedAttention
了解 PagedAttention 如何优化 LLM 内存管理和 KV 缓存效率。探索其对吞吐量的影响,以及它与 Ultralytics YOLO26 性能的比较。
PagedAttention 是一种高效的内存管理算法,旨在优化大型语言模型 (LLMs)的推理速度和吞吐量。受传统操作系统中虚拟内存和分页概念的启发,这项技术解决了文本生成期间与键值缓存(通常称为KV cache)相关的巨大内存消耗问题。PagedAttention 将缓存所需的连续内存块拆分为更小的非连续“页面”,从而有效消除内部和外部内存碎片。这使 AI 服务器能够同时批处理显著更多的请求,最大限度地提高 GPU 利用率。
PagedAttention 与 Flash Attention 的对比#
虽然这两种技术都能优化神经网络性能,但它们针对的是不同的瓶颈。Flash Attention 是一种计算层面的优化,通过减少 GPU 层级之间缓慢的内存读写来加速注意力机制本身。相比之下,PagedAttention 是一种内存分配策略。它专注于上下文窗口的内存结构和存储方式,从而支持动态扩展,而无需预先分配大量浪费的内存块。
实际应用#
PagedAttention 带来的内存效率提升,已经改变了大规模生成式模型在生产环境中的部署方式。
-
高吞吐量 API 服务:使用 vLLM 等框架为类似于 GPT-4 的模型提供生产服务的系统,会利用 PagedAttention。通过在不同用户请求之间共享内存块,服务提供商可以在相同硬件上服务多达四倍的用户,从而大幅降低运行云端 AI 服务的成本。
-
复杂解码策略:当 AI 模型同时生成多个可能的响应时(例如在束搜索或并行采样中),PagedAttention 允许这些并行序列安全地共享相同的基础内存页面。这可以防止系统复制冗余内存,使复杂推理任务的速度显著提升。
计算机视觉中的内存效率#
虽然 PagedAttention 主要用于自然语言处理,但严格优化内存这一基本原则在计算机视觉 (CV)中同样至关重要。在内存受限的边缘设备上部署模型时,避免内存膨胀必不可少。Ultralytics YOLO26 原生实现了实时推理效率,通过采用端到端、无 NMS 的架构,绕过了对繁重缓存管理的需求。
对于希望无缝处理目标检测流程中的内存和导出要求的开发者,Ultralytics Platform 提供了自动化部署工具,可将模型打包以便在硬件上实现最佳执行效果。
代码示例#
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}")借助先进的内存分配策略,AI 行业不断突破可能性的边界,确保大规模基础模型能够在全球范围内高效扩展和访问。









