Los investigadores de Nvidia han introducido una nueva técnica que reduce drásticamente la cantidad de memoria que los modelos de lenguajes grandes necesitan para rastrear el historial de conversaciones (hasta 20 veces) sin modificar el modelo en sí. El método, llamado codificación de transformación de caché KV (KVTC)aplica información de formatos de compresión de medios como JPEG para reducir el caché de valores clave detrás de los sistemas de inteligencia artificial de múltiples turnos, lo que reduce las demandas de memoria de la GPU y acelera el tiempo hasta el primer token hasta 8 veces.

Para las aplicaciones empresariales de IA que dependen de agentes y contextos largos, esto se traduce en costos reducidos de memoria de GPU, una mejor reutilización inmediata y una reducción de hasta 8 veces en la latencia al evitar la necesidad de volver a calcular los valores de caché KV perdidos.

Servir modelos de lenguaje grandes a escala requiere administrar una gran cantidad de datos, especialmente para múltiples conversaciones y largas sesiones de codificación. Cada vez que un usuario agrega un mensaje, el sistema depende de la memoria almacenada para evitar volver a calcular todo el historial de conversaciones desde cero.

Sin embargo, este consumo de memoria crece rápidamente, creando un serio cuello de botella en términos de latencia y costos de infraestructura.

Por qué la caché KV se convierte en un cuello de botella a escala

Para impulsar aplicaciones de IA de bucles múltiples, como asistentes de codificación o aplicaciones de chat, los modelos de lenguaje de gran tamaño se basan en un motor conocido como caché de valor clave (KV). Este caché almacena las representaciones numéricas ocultas de cada token anterior en una conversación. Debido a que el modelo recuerda la conversación anterior, no necesita reprocesar de forma redundante todo el historial de chat cada vez que el usuario envía un nuevo mensaje.

Sin embargo, para aplicaciones de IA con tareas de contexto largas, este caché puede alcanzar fácilmente varios gigabytes. A medida que los modelos crecen y generan cadenas de razonamiento cada vez más largas, la caché KV se convierte en un cuello de botella crítico para el rendimiento y la latencia del sistema.

Esto crea un desafío difícil para los entornos de producción. Debido a que los LLM tienen una gran limitación de memoria durante la inferencia, atender a varios usuarios simultáneamente está limitado por el agotamiento de la memoria de la GPU en lugar del tiempo de cálculo. “La gestión eficaz de la caché KV se vuelve fundamental, ya que las cachés inactivas deben eliminarse rápidamente de la memoria de la GPU para dar cabida a otros usuarios y restaurarse rápidamente para reanudar las conversaciones”, dijo a VentureBeat Adrian Lancucki, ingeniero senior de aprendizaje profundo de Nvidia. “Estos costos de infraestructura ahora se reflejan en los precios comerciales (por ejemplo, como ‘almacenamiento en caché inmediato’) con cargos adicionales por el almacenamiento en caché”.

Incluso las soluciones comprometidas, como la descarga de caché a un almacenamiento de nivel inferior, como la memoria de la CPU o los SSD, introducen importantes gastos generales de transferencia de datos que pueden saturar el ancho de banda de la red y crear cuellos de botella.

Una solución común es comprimir la caché KV para que ocupe menos memoria. Sin embargo, las soluciones existentes a menudo no logran resolver el problema de manera integral. Las herramientas diseñadas para comprimir cachés para la transmisión de red logran índices de compresión bajos. Otros métodos de compresión requieren cálculos que consumen muchos recursos en tiempo real para cada solicitud de usuario. Mientras tanto, técnicas populares como cuantificación o la escasez puede introducir caídas de latencia y precisión o requerir cambios permanentes en los pesos del modelo, lo que limita su practicidad.

En su artículo, los investigadores de Nvidia señalan que los enfoques existentes “rara vez explotan la fuerte estructura de bajo rango de los tensores KV”. Esto significa que a pesar de su enorme número de dimensiones y gigabytes de tamaño, la información subyacente real en la caché KV está altamente correlacionada y puede representarse con precisión utilizando muchas menos variables. Explorar esta característica es el objetivo de KVTC.

Tomar prestados trucos de códecs multimedia

A un alto nivel, KVTC aborda el cuello de botella de la memoria de la IA tomando prestado un concepto probado de los medios clásicos: la codificación por transformación, la metodología que impulsa formatos familiares de compresión de imágenes y videos como JPEG. El marco reduce la huella de la caché a través de un proceso rápido de varios pasos realizado entre las fases de inferencia para evitar ralentizaciones en la generación real de tokens. “Este enfoque de ‘compresión de medios’ es ventajoso para la implementación empresarial porque no es intrusivo: no requiere cambios en los pesos o códigos del modelo y opera cerca de la capa de transporte”, dijo Lancucki.

Primero, KVTC usa análisis de componentes principales (PCA) para alinear las características de datos de caché de KV en función de su importancia. PCA es una técnica estadística A menudo se utiliza en el aprendizaje automático. hacer que los modelos sean más eficientes aislando las características más críticas de los datos y eliminando redundancias. Esta parte del proceso se realiza solo una vez durante una fase de calibración inicial para cada modelo. Debido a que la matriz de alineación PCA se calcula fuera de línea y se reutiliza, no ralentiza el proceso de compresión en el momento de la inferencia para las indicaciones de los usuarios individuales.

Luego, el sistema utiliza un algoritmo de programación dinámica para presupuestar automáticamente cuánta memoria necesita realmente cada dimensión de datos específica. Los componentes principales más críticos obtienen una alta precisión, mientras que los componentes finales menos importantes reciben menos bits o reciben cero bits y se descartan por completo.

Finalmente, la canalización toma estos datos cuantificados y optimizados y los comprime en una matriz de bytes, ejecutándolos a través de un codificador de entropía llamado DEFLATE. Debido a que este paso se ejecuta en paralelo directamente en la GPU utilizando la biblioteca nvCOMP de Nvidia, funciona a velocidades muy altas.

Para descomprimir los datos cuando el usuario regresa, KVTC simplemente ejecuta los cálculos a la inversa. Para acelerar el proceso, hace el trabajo pesado de descomprimirlo en pedazos, capa por capa. Esto permite que el modelo de IA comience a calcular la siguiente respuesta temprano, utilizando el primer bloque sin comprimir, mientras que los bloques posteriores se descomprimen en segundo plano.

Compresión 20x, penalización de precisión de menos del 1%

Los investigadores de Nvidia probaron KVTC en una lista diversa de modelos que van desde 1.5B a 70B parámetros, incluida la familia Llama 3, Mistral NeMo y los modelos Qwen 2.5 destilados R1 con alto razonamiento. Evaluaron estos modelos en una variedad de puntos de referencia, incluidos desafíos complejos de matemáticas y codificación como MATH-500 y LiveCodeBench, así como tareas intensivas de recuperación de contexto largo como “Needle In A Haystack” y recuperación de valores clave.

Compararon KVTC con varias líneas de base populares: métodos de eliminación de tokens (por ejemplo, H2O y TOVA), técnicas de cuantificación pesada (por ejemplo, KIVI y GEAR) y xKV (una técnica de compresión inmediata basada en descomposición de valores singulares).

Con una relación de compresión efectiva de 20x, KVTC mantuvo consistentemente el rendimiento con una penalización de precisión de menos de un punto porcentual en comparación con los modelos originales sin comprimir en la mayoría de las tareas. Cuando los investigadores llevaron el sistema a límites de compresión extremos de hasta 32x y 64x, KVTC se mantuvo notablemente bien.

Por otro lado, las líneas de base populares como KIVI y GEAR comenzaron a sufrir una enorme degradación de la precisión con una relación de compresión de solo 5x, especialmente en tareas de contexto prolongado. Los métodos estándar de desalojo de caché, como H2O y TOVA, han demostrado ser lamentablemente inadecuados como compresores genéricos, y se descomponen efectivamente cuando se les pide que recuperen información contextual profunda.

Considere implementar un modelo de razonamiento más pequeño como Qwen 2.5 1.5B para un asistente de codificación. Normalmente, este modelo requiere 29 KB de memoria para cada token. Utilizando una configuración de compresión de 8x, KVTC redujo este espacio a aproximadamente 3,2 KB por token, mientras sufrió una caída insignificante de 0,3 puntos porcentuales en la precisión de la codificación.

Para los arquitectos empresariales, la decisión de cuándo implementar esta técnica depende en gran medida del caso de uso. “KVTC está optimizado para escenarios de múltiples giros y contextos prolongados”, dijo Lancuki. Señaló los asistentes de codificación, los flujos de trabajo iterativos de razonamiento de agentes (especialmente cuando se esperan resultados de herramientas de alta latencia) y el RAG iterativo como aplicaciones ideales. “Sin embargo, los usuarios deben ignorar KVTC para conversaciones breves”, añadió, porque la ventana deslizante sin comprimir de los tokens más nuevos domina la secuencia en interacciones más cortas, lo que evita tasas de compresión significativas.

KVTC es altamente portátil y pronto se integrará una implementación optimizada con KV Block Manager (KVBM) dentro del marco de Dynamo, lo que lo hará compatible con motores de inferencia de código abierto populares como vLLM.

Lo más importante para la experiencia del usuario es que KVTC reduce significativamente el tiempo hasta el primer token (TTFT), el retraso entre el envío de un mensaje y el modelo que genera el primer token de respuesta. En un mensaje de 8000 tokens, un modelo básico 12B que se ejecuta en una GPU Nvidia H100 tarda unos 3 segundos en volver a calcular el historial desde cero. Mientras tanto, un sistema puede descomprimir el caché KVTC en solo 380 milisegundos, lo que proporciona una reducción de hasta 8 veces en el tiempo necesario para generar el primer token.

Debido a que KVTC no cambia la forma en que el modelo presta atención a los tokens, es teóricamente compatible con métodos de eliminación de tokens como Sparsificación de memoria dinámica (DMS), otra técnica de compresión avanzada. DMS es un método de eliminación de tokens autorregresivo que optimiza la memoria identificando y descartando por completo los tokens menos importantes de la ventana contextual.

“En principio, KVTC es complementario a DMS”, afirmó Lancucki. “Mientras DMS descarga tokens individuales a lo largo del eje temporal, KVTC comprime los datos en cada posición por separado”. Sin embargo, advirtió que si bien apuntan a diferentes dimensiones, “aún no se ha probado qué tasas de compresión se pueden lograr con KVTC en cachés dispersas”.

A medida que los modelos continúen escalando de forma nativa a ventanas de contexto de tokens de varios millones, la necesidad de una gestión sólida de la memoria no hará más que aumentar. “Dadas las similitudes estructurales y los patrones recurrentes en las cachés KV en múltiples arquitecturas de modelos, es probable que surja una capa de compresión estandarizada y dedicada”, dijo Lancucki. Con el respaldo de los avances de hardware, la infraestructura de inteligencia artificial pronto podría tratar la compresión de caché KV como una capa invisible y estandarizada, de manera muy similar a como lo es la compresión de video para la transmisión por secuencias en la actualidad.

Fuente