Articulo de referencia

Atención

PagedAttention 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 E...

PagedAttention 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 [ 1 ] , junto con el motor de servicio vLLM . El método almacena la caché de clave-valor utilizada durante la decodificación autorregresiva en bloques de tamaño fijo que pueden asignarse a memoria física no contigua, tomando prestadas ideas de la memoria virtual , la paginación y el diseño de sistemas operativos [ 2 ] [ 3 ] .

Fondo

En la inferencia de transformadores , la caché clave-valor crece con la longitud de la secuencia y el número de solicitudes concurrentes . Kwon et al. argumentaron que los sistemas de servicio anteriores generalmente reservaban regiones de caché contiguas por adelantado, lo que causaba 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 podía caer hasta un 20,4 %. [ 2 ]

Descripción

PagedAttention particiona la caché 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 de memoria física de la GPU. Como resultado, los bloques lógicos vecinos no necesitan ser contiguos en la memoria física, y se pueden asignar nuevos bloques bajo demanda a medida que avanza la generación. [ 2 ]

El diseño también facilita compartir el estado de la caché entre rutas de decodificación relacionadas. En vLLM , los bloques físicos pueden contarse por referencia y compartirse entre solicitudes o ramas, y se utiliza la 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, la búsqueda en haz y las indicaciones con prefijos compartidos. [ 2 ]

Formulación matemática

Para un token de consultai{\displaystyle i}En la autoatención causal, la salida de atención estándar se puede escribir como aij=exp(qikj/d)t=1iexp(qikt/d),oi=j=1iaijvj{\displaystyle 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}} dóndeqi{\displaystyle \mathbf {q} _ {i}},kj{\displaystyle \mathbf {k} _ {j}}, yvj{\displaystyle \mathbf {v} _ {j}}son los vectores de consulta, clave y valor, yd{\displaystyle d}es la dimensión de atención. [ 2 ]

Si la caché se particiona en bloques de tamañoB{\displaystyle B}, los bloques de clave y valor se pueden escribir como Kj=(k(j1)B+1,,kjB),Vj=(v(j1)B+1,,vjB){\displaystyle \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 realiza entonces el cálculo por bloques: Aij=exp(qiKj/d)t=1i/Bexp(qiKt/d),oi=j=1i/BVjAij{\displaystyle \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 }} dóndeAij{\displaystyle \mathbf {A} _ {ij}}es el vector de puntuaciones de atención para elj{\displaystyle j}-ésimo bloque KV. En la formulación dada por Kwon et al. , esto preserva el cálculo de atención causal al tiempo que permite que los bloques de clave y valor residan en memoria física no contigua. [ 2 ]

Rendimiento y uso

El artículo de vLLM informó que, en las cargas de trabajo evaluadas, el uso de PagedAttention y el diseño de gestión de memoria asociado mejoraron el rendimiento de servicio entre 2 y 4 veces con respecto a las líneas base comparadas, incluidas FasterTransformer y Orca, al tiempo que se conservaron las salidas del modelo. En experimentos en OPT-13B con el trazado Alpaca, 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 haces mediante el uso compartido de bloques KV. [ 2 ]

Una encuesta de 2024 sobre sistemas de servicio LLM describió PagedAttention como una norma de la industria en los marcos de servicio LLM, citando el soporte en TGI, vLLM y TensorRT-LLM. [ 3 ]

Limitaciones y alternativas

Trabajos posteriores han descrito las ventajas y desventajas de este enfoque. El artículo de 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 mantiene la caché contigua en la memoria virtual mientras se basa en la paginación bajo demanda para la asignación física. [ 4 ]

vAtención

A diferencia de PagedAttention, vAttention no introduce una regla de atención diferente; conserva el cálculo de atención estándar. Atención(qi,K,V)=softmax(qiKsdoalmi)V.{\displaystyle \operatorname {Atención} (q_{i},K,V)=\operatorname {softmax} \left({\frac {q_{i}K^{\top }}{\mathrm {escala} }}\right)V.} En la notación de Prabhu et al. , los tensores de clave y valor para una solicitud vista hasta ahora son: K,VRL×(H×D){\displaystyle K,V\in \mathbb {R} ^{L'\times (H\times D)}}, dóndeL{\displaystyle L'}es la longitud del contexto vista hasta ahora,H{\displaystyle H}es el número de cabezales KV en un trabajador, yD{\displaystyle D}es la dimensión de cada cabezal KV. [ 4 ]

En los sistemas anteriores a PagedAttention, la caché K (o caché V) en cada capa de un trabajador se asigna típicamente como un tensor 4D de forma [B,L,H,D],{\displaystyle [B,L,H,D],} dóndeB{\displaystyle B}es el tamaño del lote yL{\displaystyle L}es la longitud máxima de contexto admitida por el modelo. [ 4 ]

vAttention conserva esta vista de memoria virtual contigua mientras aplaza 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 vAttention reserva 2norte{\displaystyle 2N} búferes de memoria virtual en un trabajador, dondenorte{\displaystyle N}es el número de capas gestionadas por ese trabajador. [ 4 ]

El tamaño máximo de un búfer de memoria virtual es BS=B×S,{\displaystyle BS=B\times S,} dóndeS{\displaystyle 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×H×D×PAG,{\displaystyle S=L\times H\times D\times P,} dóndePAG{\displaystyle P}es el número de bytes necesarios para almacenar un elemento. [ 4 ]

En esta formulación, vAttention mantiene la caché KV contigua en la memoria virtual y se basa en 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. [ 4 ]

Véase también

Referencias

  1. Kwon, Woosuk; Li, Zhuohan; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody Hao; Gonzalez, Joseph E.; Zhang, Hao; Stoica, Ion (12 de septiembre de 2023). "Gestión eficiente de la memoria para el servicio de modelos de lenguaje grandes con PagedAttention". arXiv : 2309.06180 [ cs.LG ].
  2. 1 2 3 4 5 6 7 Kwon, Woosuk; Li, Zhuohan; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody Hao; Gonzalez, Joseph E.; Zhang, Hao; Stoica, Ion (2023). "Gestión eficiente de memoria para el servicio de modelos de lenguaje grandes con PagedAttention". Actas del 29.º Simposio sobre Principios de Sistemas Operativos . Asociación para la Maquinaria de Computación. págs. 611–626 . arXiv : 2309.06180 . doi : 10.1145/3600006.3613165 . 
  3. 1 2 Li, Baolin; Jiang, Yankai; Gadepally, Vijay; Tiwari, Devesh (17 de julio de 2024). "LLM Inference Serving: Survey of Recent Advances and Opportunities". arXiv : 2407.12391 [ cs.DC ].
  4. 1 2 3 4 5 6 Prabhu, Ramya; Nayak, Ajay; Mohan, Jayashree; Ramjee, Ramachandran; Panwar, Ashish (2025). "vAttention: Dynamic Memory Management for Serving LLMs without PagedAttention". Actas de la 30.ª Conferencia Internacional ACM sobre Soporte Arquitectónico para Lenguajes de Programación y Sistemas Operativos, Volumen 1. Association for Computing Machinery. págs. 1133–1150 . doi : 10.1145/3669940.3707256 .