Sobes.tech
Senior

¿Cómo reducir el tamaño de la caché KV (GQA, MQA, ventana deslizante)?

sobes.tech AI

Respuesta de la IA

La caché KV (Key-Value) en el contexto de modelos con GQA (Grouped Query Attention), MQA (Multi-Query Attention) y ventana deslizante se utiliza para almacenar claves y valores de atención intermedios, con el fin de acelerar la generación de texto. Para reducir el tamaño de la caché KV, se pueden aplicar los siguientes enfoques:

  • Ventana deslizante: almacenar solo los últimos N tokens en la caché, en lugar de toda la historia. Esto limita el tamaño de la caché y reduce el consumo de memoria.
  • MQA en lugar de GQA: MQA usa una sola clave y valor para todas las cabezas de atención, lo que reduce significativamente el tamaño de la caché en comparación con GQA, donde se almacena una clave y un valor separados para cada cabeza.
  • Cuantización de la caché KV: almacenar claves y valores en forma comprimida, por ejemplo, con menor precisión (float16, int8), para reducir el volumen de memoria.
  • Eliminación de elementos no relevantes: limpiar o comprimir periódicamente la caché, eliminando elementos obsoletos o menos importantes.

Ejemplo de uso de la ventana deslizante:

window_size = 512  # número de tokens en la caché
kv_cache = kv_cache[-window_size:]

De esta forma, combinando estos métodos, se puede reducir eficazmente el tamaño de la KV-cache sin una pérdida significativa en la calidad de la generación.