Atención paginadaProyectos de artículos

Artículos preliminares
Anonymous
 Atención paginada

Post by Anonymous »

'''PaggedAttention''' es un algoritmo de atención para el servicio eficiente de modelos de lenguaje grandes (LLM). Fue presentado en 2023 por Woosuk Kwon y sus colegas en el artículo ''Efficient Memory Management for Large Language Model Serving with PagedAttention'',
== Antecedentes ==
En la inferencia de Transformer (Transformer (arquitectura de aprendizaje profundo)), la caché clave-valor (Almacenamiento en caché de Transformer (aprendizaje profundo) #KV) crece con la longitud de la secuencia y el número de solicitudes simultáneas (Computación concurrente). Kwon ''et al.'' argumentó que los sistemas de servicio anteriores normalmente reservaban regiones de caché contiguas por adelantado, lo que provocaba espacio reservado, fragmentación interna y fragmentación externa. En sus experimentos, el artículo informó que la utilización efectiva de la memoria de los sistemas anteriores podría caer hasta un 20,4%.

== Descripción ==
PagedAttention divide el caché (Caché (informática)) de cada secuencia en bloques KV de tamaño fijo. La caché de una solicitud se representa como una secuencia de bloques lógicos, mientras que una tabla de bloques asigna esos bloques lógicos a bloques físicos de memoria de GPU. Como resultado, los bloques lógicos vecinos no necesitan ser contiguos en la memoria física y se pueden asignar nuevos bloques según demanda a medida que avanza la generación.

El diseño también facilita compartir el estado de la caché entre rutas de decodificación relacionadas. En vLLM, los bloques físicos se pueden contar por referencia y compartir entre solicitudes o ramas, y se utiliza copia en escritura con granularidad de bloque cuando se debe modificar un bloque compartido. El artículo original aplicó este diseño al muestreo paralelo, búsqueda de haces y mensajes con prefijos compartidos.

== Formulación matemática ==
Para un token de consulta i en autoatención causal, el resultado de atención estándar se puede escribir como

a_{ij}=\frac{\exp(\mathbf{q}_i^\top \mathbf{k}_j/\sqrt{d})}{\sum_{t=1}^{i}\exp(\mathbf{q}_i^\top \mathbf{k}_t/\sqrt{d})},\;
\mathbf{o}_i=\sum_{j=1}^{i} a_{ij}\mathbf{v}_j

donde \mathbf{q}_i, \mathbf{k}_j y \mathbf{v}_j son los vectores de consulta, clave y valor, y d es la dimensión de atención.

Si el caché está dividido en bloques de tamaño B, los bloques de clave y valor pueden escribirse como

\mathbf{K}_j=(\mathbf{k}_{(j-1)B+1},\ldots,\mathbf{k}_{jB}),\;
\mathbf{V}_j=(\mathbf{v}_{(j-1)B+1},\ldots,\mathbf{v}_{jB})

PagedAttention luego realiza el cálculo en bloques:

\mathbf{A}_{ij}=
\frac{\exp(\mathbf{q}_i^\top \mathbf{K}_j/\sqrt{d})}
{\sum_{t=1}^{\lceil i/B \rceil}\exp(\mathbf{q}_i^\top \mathbf{K}_t/\sqrt{d})},\;
\mathbf{o}_i=\sum_{j=1}^{\lceil i/B \rceil}\mathbf{V}_j\mathbf{A}_{ij}^{\top}

donde \mathbf{A}_{ij} es el vector de puntuaciones de atención para el j-ésimo bloque KV. En la formulación dada por Kwon ''et al.'', esto preserva el cálculo de la atención causal al tiempo que permite que los bloques de clave y valor residan en una memoria física no contigua.

== Rendimiento y uso ==
El artículo de vLLM informó que, en sus cargas de trabajo evaluadas, el uso de PagedAttention y el diseño de administración de memoria asociado mejoraron el rendimiento del servicio entre 2 y 4 veces con respecto a las líneas de base comparadas, incluidos FasterTransformer y Orca, al tiempo que preserva los resultados del modelo. En experimentos en OPT-13B con Alpaca trace, el artículo también informó ahorros de memoria del 6,1 al 9,8 % para el muestreo paralelo y del 37,6 al 55,2 % para la búsqueda de haz mediante el uso compartido de bloques KV.

Una encuesta de 2024 sobre sistemas de servicio de LLM describió que PagedAttention se había convertido en una norma de la industria en los marcos de servicio de LLM, citando soporte en TGI, vLLM y TensorRT-LLM.

== Limitaciones y alternativas ==
Trabajos posteriores han descrito las compensaciones en el enfoque. El artículo ''vAttention'' de 2025 argumentó que PagedAttention requiere que los núcleos de atención se reescriban para admitir la paginación y aumenta la complejidad del software, los problemas de portabilidad, la redundancia y la sobrecarga de ejecución, proponiendo en su lugar un administrador de memoria que mantenga el caché contiguo en la memoria virtual mientras depende de la paginación bajo demanda para la asignación física.
=== vAtención ===
A diferencia de PagedAttention, vAttention no introduce una regla de atención diferente; conserva el cálculo de atención estándar

\operatorname{Atención}(q_i,K,V)=\operatorname{softmax}\left(\frac{q_iK^\top}{\mathrm{scale\right)V.

En la notación de Prabhu ''et al.'', los tensores clave y de valor para una solicitud vistos hasta ahora son
K,V \in \mathbb{R}^{L' \times (H \times D)},
donde L' es la longitud del contexto vista hasta ahora, H es el número de cabezas KV de un trabajador y D es la dimensión de cada cabeza KV.

En sistemas anteriores a PagedAttention, el caché K (o caché V) en cada capa de un trabajador generalmente se asigna como un tensor de forma 4D

[B, L, H, D],

donde B es el tamaño del lote y L es la longitud máxima del contexto admitida por el modelo.

vAttention conserva esta vista de memoria virtual contigua y al mismo tiempo difiere la asignación de memoria física al tiempo de ejecución. Un marco de servicio mantiene tensores K y V separados para cada capa, por lo que vReservas de atención

2N

buffers de memoria virtual en un trabajador, donde N es el número de capas administradas por ese trabajador.

El tamaño máximo de un buffer de memoria virtual es

BS = B \veces S,

donde S es el tamaño máximo de la caché K (o caché V) por capa de una sola solicitud en un trabajador. El documento define

S = L \times H \times D \times P,

donde P es el número de bytes necesarios para almacenar un elemento.

En esta formulación, vAttention mantiene la caché KV contigua en la memoria virtual y depende de la paginación bajo demanda para la asignación física, en lugar de modificar el núcleo de atención para operar sobre bloques de caché KV no contiguos.

== Ver también ==
* Mecanismo de atención
* Búsqueda por haz
* Políticas de reemplazo de caché
* Lista de algoritmos de inteligencia artificial

Algoritmos
Inteligencia artificial
Modelos de lenguaje grandes

More details: https://en.wikipedia.org/wiki/PagedAttention

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post