Revolucionando la inferencia de modelos de lenguaje grandes: decodificación especulativa y cuantización de baja precisión

Revolucionando la inferencia de modelos de lenguaje grandes: decodificación especulativa y cuantización de baja precisión

Con el rápido avance de la inteligencia artificial (IA), los modelos de lenguaje grandes (LLMs) se han convertido en un pilar del procesamiento del lenguaje natural (NLP). Estos modelos demuestran capacidades notables en generación y comprensión del lenguaje, siendo fundamentales para aplicaciones como la traducción automática, los sistemas conversacionales y la generación de texto. Sin embargo, a medida que el tamaño de estos modelos continúa creciendo, su eficiencia de inferencia y el consumo de recursos siguen siendo cuellos de botella significativos para el despliegue a gran escala.

En los últimos años, los investigadores han propuesto diversas técnicas de optimización para mejorar la eficiencia de la inferencia de LLMs. En nuestro trabajo anterior, logramos una aceleración de 1.5x en la inferencia aprovechando la compresión dinámica de KV-cache basada en el framework de very large language model (vLLM), sentando una base sólida para optimizar el rendimiento de LLMs.

Este artículo profundiza en dos estrategias de optimización adicionales: la decodificación especulativa y la cuantización de baja precisión. Estos enfoques buscan maximizar las capacidades computacionales del hardware convencional, reducir los costos de inferencia y mejorar la velocidad. Al emplear estas técnicas, buscamos proporcionar nuevas perspectivas y soluciones prácticas para mejorar la eficiencia de inferencia de LLMs, abordando los desafíos del despliegue escalable de IA.

Decodificación especulativa

Principios técnicos

La decodificación especulativa es una técnica que acelera la inferencia al introducir un modelo más pequeño para generar múltiples tokens candidatos, que luego son validados por el modelo más grande, permitiendo la decodificación en paralelo para mejorar la velocidad. La viabilidad de este enfoque se basa en dos factores clave:

Cuello de botella de memoria
En el hardware GPU moderno, el ancho de banda de acceso a memoria suele ser más lento que la velocidad computacional requerida para la inferencia, lo que hace que el proceso esté significativamente limitado por la memoria. El tráfico de memoria GPU durante la etapa de inferencia de los modelos de lenguaje grandes está determinado principalmente por el tamaño del modelo, mientras que las GPUs suelen tener capacidad computacional sobrante. Aprovechando este excedente mediante la inferencia paralela con un modelo pequeño, se puede mejorar la eficiencia general.

Precisión de predicción del modelo pequeño
Los modelos actuales de generación de lenguaje más comunes son típicamente modelos autorregresivos basados en la arquitectura Transformer. Los modelos pequeños muestran una alta precisión al predecir patrones de lenguaje comunes (por ejemplo, colocaciones idiomáticas o expresiones estándar). Cuando el modelo pequeño predice con éxito el siguiente token, el modelo grande puede reutilizar directamente este resultado, reduciendo significativamente el costo computacional.

Método de implementación

El método de decodificación especulativa consta principalmente de los siguientes pasos:

  • Generación de candidatos en múltiples rondas

    • Usar un modelo pequeño especialmente entrenado para inferencia rápida, generando múltiples tokens candidatos de alta calidad para cada posición.
    • Adoptar de manera innovadora un mecanismo de ajuste dinámico de umbral de probabilidad para controlar adaptativamente el número de candidatos.
    • Introducir un mecanismo de caché sensible al contexto para mejorar la precisión de predicción del modelo pequeño durante la generación continua de texto.
  • Estrategia de verificación eficiente

    • Diseñar un mecanismo de verificación por lotes para agrupar múltiples tokens candidatos y enviarlos al modelo grande para un único proceso de puntuación.
    • Implementar una estrategia de terminación temprana para devolver resultados rápidamente cuando se encuentra una coincidencia de alta confianza.
    • Habilitar el procesamiento asíncrono de los resultados de verificación para reducir el tiempo de espera inactiva de la GPU.
  • Sistema de planificación inteligente

    • Equilibrar dinámicamente la asignación de recursos computacionales entre la predicción del modelo pequeño y la verificación del modelo grande.
    • Usar predicción adaptativa basada en estadísticas históricas para optimizar las estrategias de generación de tokens candidatos.
    • Implementar partición y planificación de tareas a nivel fino para maximizar la utilización del hardware.

Fig.1. Decodificación especulativa con longitud de borrador dinámica

Fig.1. Decodificación especulativa con longitud de borrador dinámica

Resultados experimentales

Basándonos en el framework de inferencia vLLM líder en la industria, realizamos una personalización y desarrollo profundos, logrando mejoras significativas en el rendimiento. Realizamos experimentos utilizando el modelo LLaMA-3.1-70B-Instruct en una GPU H20 y probamos escenarios con longitudes de contexto variables. Además, comparamos el rendimiento con vLLM sin decodificación especulativa, centrándonos en el rendimiento (throughput) bajo diferentes tamaños de lote. Los resultados experimentales se muestran en la Figura 2.

  • Mejoras de rendimiento

    • Logramos una aceleración general de inferencia de 1.4x manteniendo la calidad de salida.
    • Totalmente compatible con la funcionalidad existente de vLLM, pudiendo integrarse sin problemas en los sistemas actuales.
    • Soporta modelos de lenguaje de diversas escalas, con mejoras particularmente significativas para modelos a gran escala.

Fig.2. Diagrama de relación de aceleración de decodificación especulativa.

Fig.2. Diagrama de relación de aceleración de decodificación especulativa.

  • Ventajas técnicas

    • Estrategia de muestreo dinámico basada en probabilidades para la redacción y verificación eficiente de tokens.
    • El mecanismo de planificación inteligente estable garantiza efectos de aceleración consistentes.
    • Rentable con baja sobrecarga de recursos.

Cuantización de baja precisión

Principios técnicos

  • Visión general de la cuantización

La cuantización es una técnica ampliamente adoptada que reduce los costos computacionales y de memoria de los modelos de lenguaje grandes (LLMs) al convertir los pesos y activaciones del modelo de representaciones de alta resolución a representaciones de menor resolución. Específicamente, muchos métodos implican cuantizar tensores FP16 en tensores enteros de baja resolución, como se muestra a continuación:

cuantización de tensores FP16 en tensor entero de baja resolución

  • Cuantización post-entrenamiento (PTQ)

PTQ cuantiza modelos preentrenados sin necesidad de reentrenamiento, evitando así los altos costos de reentrenamiento. Sin embargo, aplicar métodos de cuantización tradicionales a LLMs introduce desafíos únicos:

    • Los LLMs exhiben una mayor frecuencia de valores atípicos (outliers) en pesos y activaciones, así como rangos de distribución más amplios, en comparación con modelos más pequeños.
    • Por lo tanto, la cuantización efectiva de LLMs requiere técnicas de optimización especializadas para minimizar la pérdida de precisión mientras se mantiene la eficiencia.

Método de implementación

  • Optimización de valores atípicos

La presencia de valores atípicos en los pesos y activaciones de los modelos de lenguaje grandes presenta un desafío significativo durante el proceso de cuantización. Los métodos tradicionales típicamente manejan los valores atípicos mediante recorte o escalado simple, lo que puede funcionar bien para modelos más pequeños, pero a menudo afecta significativamente el rendimiento de los LLMs.

Nuestro enfoque mejora el proceso de manejo de valores atípicos mediante un análisis detallado y estrategias de optimización. No solo refina el cálculo de los valores atípicos, sino que también optimiza las estructuras de datos asociadas, asegurando que el modelo retenga capacidad computacional eficiente mientras minimiza la pérdida de precisión. Por ejemplo, adoptamos una estrategia de distribución de rango dinámico más flexible para procesar valores atípicos de manera jerárquica, capturando las características del modelo con mayor precisión.

  • Operadores mejorados y fusión de capas

Diseñamos una serie de operadores mejorados que pueden procesar estructuras de datos cuantizadas de manera más eficiente. Por ejemplo, mediante técnicas de fusión de capas, combinamos múltiples operadores consecutivos en un solo operador durante el cómputo hacia adelante para reducir la sobrecarga computacional y la transferencia de datos intermedios.

Además, para operaciones comunes como la multiplicación de matrices combinada con funciones de activación, diseñamos operadores eficientes de baja resolución para acelerar la inferencia del modelo. Esta mejora no solo reduce significativamente las demandas de ancho de banda a nivel de hardware, sino que también aumenta aún más la eficiencia computacional general.

  • Esquema único de cuantización FP8

Mientras que los métodos de cuantización principales en la industria generalmente utilizan la conversión de FP16 a INT8, este enfoque puede no ser adecuado para escenarios que requieren una precisión más baja. Nuestro esquema de cuantización FP8 introduce un factor de escala adaptativo para reducir aún más la resolución manteniendo la expresividad numérica del modelo. En la implementación, ajustamos la proporción del exponente y la mantisa en FP8 para adaptarnos mejor a las características de distribución de los LLMs, asegurando que el modelo mantenga la precisión incluso con resoluciones muy bajas.

  • Cuantización de KVCache

En escenarios que soportan inferencia a gran escala, la eficiencia de almacenamiento y acceso de KVCache es crucial. Los métodos tradicionales a menudo aplican técnicas de cuantización estándar sin optimizar para las características específicas de las estructuras de almacenamiento de KVCache.

Proponemos una técnica especializada de cuantización de KVCache que minimiza los requisitos de recursos computacionales aplicando estrategias de cuantización específicas a consultas y pares clave-valor. Específicamente, optimizamos las actualizaciones dinámicas y la densidad de almacenamiento de KVCache, combinando métodos de cuantización por partes y almacenamiento de matrices dispersas para mejorar significativamente la utilización de la caché durante el proceso de inferencia.

  • Optimización del proceso de inferencia

Los pesos del modelo en FP16 se cuantizan al formato FP8 para la inferencia. Los tokens de entrada pasan a través de la capa de embeddings y el módulo Transformer, que incluye mecanismos de atención y redes feed-forward.

Usando FP8 TensorCore y KVCache optimizado, el sistema almacena y actualiza eficientemente los pares clave-valor.

Las transformaciones lineales y la capa Softmax generan la distribución de probabilidad de salida, produciendo el token de salida final.

Este enfoque aprovecha la eficiencia computacional de FP8 TensorCore para ofrecer una inferencia más rápida a costos computacionales más bajos. En la Figura 3, los pesos del modelo, originalmente en formato FP16, se cuantizan a FP8 para la inferencia, reduciendo significativamente la sobrecarga de acceso a datos y mejorando la velocidad. Durante el proceso de inferencia de LLM, operaciones como la proyección QKV, la atención flash y las capas feed-forward realizan multiplicaciones de matrices en formato FP8. Estos cálculos se aceleran utilizando Tensor Cores, lo que lleva a un aumento sustancial en la velocidad de inferencia. Para mitigar la pérdida de precisión, se utiliza una pequeña cantidad de datos adicionales para PTQ, asegurando que la precisión de inferencia del modelo permanezca intacta. En escenarios de texto largo, la sobrecarga asociada con el acceso a datos KV puede ralentizar la velocidad de inferencia. Para abordar esto, los datos KV también se cuantizan a FP8, optimizando aún más el rendimiento de inferencia del modelo.

Fig.3. Una visión general del pipeline de cuantización de precisión FP8.

Fig.3. Una visión general del pipeline de cuantización de precisión FP8.

Resultados experimentales

  • La Figura 4 muestra la relación de aceleración después de aplicar cuantización de baja precisión a Llama3-8B-BF16, con diferentes longitudes de entrada-salida (10000-1000, 5000-500, 2000-200) y tamaños de lote (Batch Size). Cuanto más larga es la longitud de entrada-salida, más significativo es el efecto de aceleración, especialmente durante la inferencia con lotes grandes. En una sola GPU 4090 ejecutando Llama3-8B-FP8-KV8, con ttft (time-to-first-token) limitado a menos de 2 segundos, el tamaño de lote es alrededor de 4, y la relación de aceleración es de 1.4x.

Fig.4. Relación de aceleración por cuantización FP8.

Fig.4. Relación de aceleración por cuantización FP8.

  • Nuestro método reduce significativamente el impacto de los valores atípicos al manejar longitudes de entrada-salida más grandes y mejora la eficiencia computacional y de transferencia mediante optimizaciones como la fusión de capas. Los métodos tradicionales de PTQ en la industria a menudo tienen dificultades para manejar longitudes de entrada-salida grandes en modelos a gran escala, pero nuestra solución está específicamente diseñada para abordar este problema, asegurando un rendimiento estable del modelo.
  • Los experimentos muestran que en una GPU 4090, nuestro método demuestra una aceleración superior al procesar longitudes de entrada-salida grandes y tamaños de lote medianos, manteniendo una latencia de inferencia (ttft) por debajo de 2 segundos, cumpliendo con los requisitos de inferencia en tiempo real.

Evaluación de calidad

Para probar diferentes APIs de modelos (como openrouter.ai) en el conjunto de prueba mmlu_pro (5 disparos) usando la herramienta lm-evaluation-harness, siga estos pasos para la inferencia con la configuración predeterminada de la herramienta. Los resultados se muestran en la Figura 5.

Fig.5. Comparación de tasas de coincidencia exacta entre Meta-Liama-3.1-8B-Instruct-FP8 y Meta-Liama-3.1-8B-Instruct.

Fig.5. Comparación de tasas de coincidencia exacta entre Meta-Liama-3.1-8B-Instruct-FP8 y Meta-Liama-3.1-8B-Instruct.

Conclusión

Este artículo presenta la decodificación especulativa y la cuantización de baja precisión como técnicas complementarias destinadas a mejorar la eficiencia de la inferencia de modelos de lenguaje grandes (LLMs). La decodificación especulativa acelera el proceso de inferencia al aprovechar un modelo más pequeño para generar tokens candidatos, que luego son validados por el modelo más grande en paralelo, obteniendo una aceleración de 1.4x.

En contraste, la cuantización de baja precisión reduce las cargas computacionales y de memoria al transformar los pesos del modelo en representaciones de menor resolución, manteniendo al mismo tiempo el rendimiento del modelo. En conjunto, estas metodologías proporcionan nuevas perspectivas y soluciones prácticas para lograr una inferencia de alta eficiencia, complementando técnicas existentes como la compresión dinámica de KV-cache.

Publicado originalmente en Novita AI

Novita AI es una plataforma en la nube de IA que ofrece a los desarrolladores una forma sencilla de implementar modelos de IA mediante nuestra API simple, además de proporcionar la GPU en la nube asequible y confiable para construir y escalar.

Lecturas recomendadas

  1. Compresión dinámica de KV Cache basada en el framework vLLM
  2. Cómo seleccionar la mejor GPU para inferencia de LLMs: perspectivas de benchmarking
  3. Cómo KV Sparsity logra una aceleración de 1.5x para vLLM