深圳Yolo 视觉
深圳
立即加入
词汇表

分页关注

了解 PagedAttention 如何优化大型语言模型(LLM)的内存管理及键值缓存效率。探索其对吞吐量的影响,并对比其与Ultralytics 的性能表现。

PagedAttention 是一种高效能的内存管理算法,旨在优化大型语言模型(LLMs)的推理速度和 吞吐量。该技术借鉴了 传统操作系统中的虚拟内存和分页概念,解决了文本生成过程中 键值缓存(通常称为 KV 缓存)带来的巨大内存消耗问题。 通过将 缓存所需的连续内存块分割为更小的、非连续的“页面”,PagedAttention 有效地消除了内部和外部内存碎片化。这使得 AI 服务器能够同时批量处理 更多请求,从而最大限度地提高GPU 。

分页注意力与闪现注意力

虽然这两种技术都能优化神经网络的性能,但它们针对的瓶颈各不相同。 Flash Attention是一种计算层面的优化方案, 通过最大限度减少GPU 中的低效内存读写操作, 从而加速注意力机制本身。相比之下,PagedAttention 是一种内存 分配策略。它完全专注于上下文窗口内存的 结构和存储方式,从而能够 实现动态扩展,而无需预先分配大量低效的内存块。

实际应用

PagedAttention 所带来的内存效率提升,彻底改变了大规模生成式模型在 生产环境中的部署方式。

  1. 高吞吐量 API 服务:提供类似GPT-4模型服务的生产系统通过 vLLM 等框架采用分页注意力机制。通过在不同用户请求间共享内存块,服务提供商可在 同一硬件上服务多达四倍的用户,从而大幅降低云端 AI 服务的运行成本。
  2. 复杂的解码策略:当人工智能模型同时生成多个潜在响应(例如在束搜索或并行采样中), 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}")

通过运用先进的内存分配策略,人工智能行业不断突破技术边界, 确保庞大的基础模型能够在全球范围内高效扩展并被广泛使用。

让我们携手共创人工智能的未来!

开启您的机器学习未来之旅