Yolo Vision Shenzhen
Shenzhen
Junte-se agora
Glossário

PagedAttention

Saiba como o PagedAttention otimiza a gestão da memória dos LLM e a eficiência do cache KV. Explore o seu impacto no rendimento e compare-o com o desempenho Ultralytics .

O PagedAttention é um algoritmo de gestão de memória altamente eficiente, concebido para otimizar a velocidade de inferência e o rendimento de modelos de linguagem de grande dimensão (LLMs). Inspirada nos conceitos de memória virtual e paginação dos sistemas operativos tradicionais, esta técnica resolve o enorme consumo de memória associado ao cache chave-valor (frequentemente referido como cache KV) durante a geração de texto. Ao dividir os blocos de memória contínuos necessários para o cache em «páginas» menores e não contíguas, o PagedAttention elimina eficazmente a fragmentação de memória interna e externa. Isto permite que os servidores de IA processem em lote um número significativamente maior de pedidos simultaneamente, maximizando GPU .

Atenção por páginas vs. Atenção instantânea

Embora ambas as técnicas otimizem o desempenho das redes neurais, elas visam diferentes pontos de estrangulamento. O Flash Attention é uma otimização ao nível da computação que acelera o próprio mecanismo de atenção ao minimizar leituras e gravações lentas de memória em toda GPU . Em contrapartida, o PagedAttention é uma estratégia de alocação de memória. Centra-se exclusivamente na forma como a memória para a janela de contexto é estruturada e armazenada, permitindo um dimensionamento dinâmico sem a pré-alocação de blocos de memória grandes e ineficientes.

Aplicações no Mundo Real

A eficiência de memória proporcionada pelo PagedAttention transformou a forma como os modelos generativos de grande escala são implementados em produção.

  1. Serviço de API de alto rendimento: Os sistemas de produção que servem modelos semelhantes ao GPT-4 utilizam PagedAttention através de frameworks como o vLLM. Ao partilhar blocos de memória entre diferentes pedidos de utilizadores, os fornecedores podem servir até quatro vezes mais utilizadores no mesmo hardware, reduzindo drasticamente o custo de execução de serviços de IA baseados na nuvem.
  2. Estratégias complexas de descodificação: Quando um modelo de IA gera várias respostas potenciais ao mesmo tempo (como na pesquisa por feixe ou na amostragem paralela), o PagedAttention permite que essas sequências paralelas partilhem com segurança as mesmas páginas de memória fundamentais. Isto evita que o sistema duplique memória redundante, tornando as tarefas de raciocínio complexas significativamente mais rápidas.

Eficiência da memória na visão computacional

Embora o PagedAttention seja utilizado principalmente no processamento de linguagem natural, o princípio subjacente da otimização rigorosa da memória é igualmente crucial na visão computacional (CV). Ao implementar modelos em dispositivos periféricos com recursos de hardware limitados, é essencial evitar o excesso de memória. Ultralytics alcança eficiência de inferência em tempo real de forma nativa, contornando a necessidade de uma gestão pesada da cache através da utilização de uma arquitetura de ponta a ponta, NMS.

Para os programadores que pretendem gerir de forma integrada os requisitos de memória e exportação dos fluxos de trabalho de deteção de objetos, a Ultralytics oferece ferramentas de implementação automatizadas que empacotam modelos para uma execução ideal em hardware.

Exemplo de código

O PagedAttention opera em segundo plano nas estruturas de serviço, substituindo as funções de atenção padrão por Cuda otimizados. Segue-se um exemplo conceptual que demonstra como se pode definir a atenção padrão no PyTorch, que sistemas como o vLLM interceptam automaticamente e otimizam utilizando paginação durante a implementação do modelo.

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}")

Ao tirar partido de estratégias avançadas de alocação de memória, o setor da IA continua a expandir os limites do que é possível, garantindo que os modelos fundamentais de grande escala possam ser dimensionados e acedidos de forma eficiente em todo o mundo.

Vamos construir juntos o futuro da IA!

Comece sua jornada com o futuro do aprendizado de máquina