Grouped Query Attention (GQA) es una variante del mecanismo de atención multi-head (Multi-Head Attention, MHA) utilizado en las arquitecturas Transformer. Mientras que MHA utiliza un conjunto independiente de 'key' y 'value' proyecciones para cada 'query head', GQA agrupa un número 'G' de 'query heads' para compartir un único conjunto de 'key' y 'value' proyecciones. Esto significa que, en lugar de tener 'N' pares de 'key/value heads' para 'N' 'query heads' (como en MHA) o un solo par para todas las 'query heads' (como en Multi-Query Attention, MQA), GQA utiliza 'N/G' pares de 'key/value heads'. Este enfoque intermedio busca un equilibrio entre la calidad del modelo (que puede degradarse con MQA) y la eficiencia computacional y de memoria de MHA, especialmente durante la inferencia.
GQA ha sido adoptado por modelos de lenguaje grandes (LLMs) de vanguardia para optimizar su rendimiento en producción. Un ejemplo prominente es Llama 2 de Meta, que utiliza GQA para mejorar la eficiencia de inferencia, permitiendo un mayor rendimiento y un menor consumo de memoria, especialmente en escenarios de 'long context'. Otros modelos y frameworks de inferencia, como vLLM y TGI (Text Generation Inference) de Hugging Face, también implementan GQA para aprovechar sus beneficios en la aceleración de la generación de texto y el escalado de servicios de LLM. La implementación de GQA es crucial para desplegar LLMs de gran tamaño de manera rentable y eficiente en entornos de producción.
Para un arquitecto de sistemas, GQA es una optimización crítica que impacta directamente la viabilidad económica y técnica del despliegue de LLMs. La reducción en el consumo de memoria del 'KV cache' que ofrece GQA es fundamental para manejar secuencias de entrada más largas y para servir a más usuarios concurrentemente en un mismo hardware (mayor 'batch size' o 'throughput'). Esto se traduce en menores costos operativos de infraestructura (GPUs) y una mayor capacidad de respuesta del servicio. El trade-off principal es encontrar el valor óptimo de 'G': un 'G' muy grande (acercándose a MQA) puede degradar ligeramente la calidad del modelo, mientras que un 'G' pequeño (acercándose a MHA) reduce los beneficios de eficiencia. La decisión de adoptar GQA y cómo configurarlo debe sopesar la latencia, el throughput, el costo de infraestructura y la tolerancia a una posible mínima degradación de la calidad del modelo para casos de uso específicos.