Yolo Vision Shenzhen
Shenzhen
Iscriviti ora
Glossario

Attenzione a più pagine

Scopri come PagedAttention ottimizza la gestione della memoria dei modelli di linguaggio di grandi dimensioni (LLM) e l'efficienza della cache KV. Esplora il suo impatto sulla velocità di elaborazione e confrontalo con le prestazioni Ultralytics .

PagedAttention è un algoritmo di gestione della memoria altamente efficiente progettato per ottimizzare la velocità di inferenza e la produttività dei modelli linguistici di grandi dimensioni (LLM). Ispirata ai concetti di memoria virtuale e paging dei sistemi operativi tradizionali, questa tecnica risolve il massiccio consumo di memoria associato alla cache chiave-valore (spesso denominata cache KV) durante la generazione di testo. Suddividendo i blocchi di memoria continui richiesti dalla cache in "pagine" più piccole e non contigue, PagedAttention elimina efficacemente la frammentazione della memoria sia interna che esterna. Ciò consente ai server di IA di elaborare in batch un numero significativamente maggiore di richieste contemporaneamente, massimizzando GPU .

Attenzione a pagine vs. attenzione istantanea

Sebbene entrambe le tecniche ottimizzino le prestazioni delle reti neurali, agiscono su diversi colli di bottiglia. Flash Attention è un'ottimizzazione a livello di calcolo che accelera il meccanismo di attenzione stesso riducendo al minimo le operazioni di lettura e scrittura lente nella GPU . Al contrario, PagedAttention è una strategia di allocazione della memoria. Si concentra esclusivamente su come la memoria per la finestra di contesto è strutturata e memorizzata, consentendo un ridimensionamento dinamico senza pre-allocare blocchi di memoria grandi e dispendiosi.

Applicazioni nel mondo reale

L'efficienza di memoria resa possibile da PagedAttention ha rivoluzionato il modo in cui i modelli generativi su larga scala vengono implementati in produzione.

  1. Fornitura di API ad alta produttività: I sistemi di produzione che gestiscono modelli simili a GPT-4 utilizzano PagedAttention tramite framework come vLLM. Condividendo blocchi di memoria tra diverse richieste degli utenti, i provider possono servire fino a quattro volte più utenti sullo stesso hardware, riducendo drasticamente il costo di gestione dei servizi di IA basati su cloud.
  2. Strategie di decodifica complesse: Quando un modello di IA genera più risposte potenziali contemporaneamente (come nella ricerca a fascio o nel campionamento parallelo), PagedAttention consente a queste sequenze parallele di condividere in modo sicuro le stesse pagine di memoria di base. Ciò impedisce al sistema di duplicare memoria ridondante, rendendo le attività di ragionamento complesse significativamente più veloci.

Efficienza della memoria nella visione artificiale

Sebbene PagedAttention sia utilizzato principalmente nell'elaborazione del linguaggio naturale, il principio alla base della rigorosa ottimizzazione della memoria è altrettanto fondamentale nella visione artificiale (CV). Quando si implementano modelli su dispositivi edge con risorse hardware limitate, è essenziale evitare un eccessivo ingombro di memoria. Ultralytics raggiunge l'efficienza dell'inferenza in tempo reale in modo nativo, eludendo la necessità di una complessa gestione della cache grazie all'utilizzo di un'architettura end-to-end NMS.

Per gli sviluppatori che desiderano gestire in modo trasparente i requisiti di memoria ed esportazione delle pipeline di rilevamento degli oggetti, la Ultralytics offre strumenti di distribuzione automatizzata che ottimizzano i modelli per un'esecuzione hardware ottimale.

Esempio di codice

PagedAttention opera a livello di codice nei framework di servizio, sostituendo le funzioni di attenzione standard con Cuda ottimizzati. Di seguito è riportato un esempio concettuale che illustra come si potrebbe definire l'attenzione standard in PyTorch, che sistemi come vLLM intercettano automaticamente e ottimizzano utilizzando il paging durante la distribuzione del modello.

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

Grazie all'utilizzo di strategie avanzate di allocazione della memoria, il settore dell'intelligenza artificiale continua a superare i limiti del possibile, garantendo che i modelli di base su larga scala possano essere scalati e resi accessibili in modo efficiente in tutto il mondo.

Costruiamo insieme il futuro dell'intelligenza artificiale!

Inizia il tuo viaggio con il futuro del machine learning