‘Decodificación anticipada’: un algoritmo de decodificación paralela para acelerar la inferencia LLM

Aunque los modelos de lenguajes grandes (LLM), como GPT-4 y LLaMA, están reinventando rápidamente las aplicaciones modernas, su inferencia es lenta y difícil de optimizar porque se basa en decodificación autorregresiva. El retraso de una solicitud LLM depende principalmente de la longitud de la respuesta de la solicitud o, de manera equivalente, del número de pasos de decodificación porque cada paso de decodificación autorregresiva produce solo un token a la vez. Desafortunadamente, la capacidad de procesamiento paralelo de las GPU actuales generalmente está infrautilizada porque no se aprovecha cada paso de decodificación. Esto presenta un problema para muchas aplicaciones prácticas de LLM, como chatbots y asistentes personales, que dependen de respuestas instantáneas y, por lo tanto, producen regularmente grandes secuencias con baja latencia.

La decodificación autorregresiva se puede acelerar con el uso de métodos de decodificación especulativa como Medusa y OSD, que utilizan una estrategia de “adivinar y verificar” en la que un modelo preliminar hace predicciones sobre varios tokens posibles en el futuro, y el LLM original. comprueba estas predicciones en paralelo. Estos métodos pueden reducir la latencia aprovechando situaciones en las que se requieren menos pasos de decodificación. Sin embargo, tienen algunas restricciones. Para empezar, la tasa de aceptación de tokens, o, equivalentemente, qué tan correctamente el modelo borrador puede anticipar los resultados del modelo principal, es el límite superior de la aceleración máxima que los enfoques especulativos basados ​​en decodificación pueden lograr. En segundo lugar, desarrollar un modelo preliminar confiable no es fácil; Por lo general, requiere más capacitación y ajustes cuidadosos para tener en cuenta las variaciones del tráfico a lo largo del tiempo.

Un nuevo estudio de LMSYS ORG presenta decodificación anticipadaa Nueva técnica de decodificación precisa desarrollada para abordar estas dificultades.. Aunque es computacionalmente prohibitivo decodificar muchos tokens posteriores en un solo paso, se ha observado que un LLM puede producir numerosos n-gramas ortogonales simultáneamente. Estos n-gramas podrían potencialmente encajar en partes futuras de la secuencia creada. El método tradicional de iteración de Jacobi está adaptado para la decodificación paralela, lo que permite considerar la decodificación autorregresiva como la solución de ecuaciones no lineales. Los n-gramas producidos se registran, se verifican y luego, si procede, se incorporan a la secuencia. La decodificación anticipada es particularmente notable porque:

  • No utiliza ningún modelo preliminar, lo que acelera la implementación.
  • Reduce el número total de pasos de decodificación en un factor de log (FLOP) para cada etapa.

Los investigadores demuestran que decodificación anticipada Reduce significativamente la latencia entre 1,5 y 2,3 veces sin casi ningún aumento en la carga computacional. Quizás lo más significativo es que permite compensar el procesamiento a cambio de una latencia reducida, aunque con beneficios cada vez menores.

Han creado su implementación para hacer que la decodificación anticipada funcione con huggingface/transformers. HuggingFace proporciona una función generada de forma nativa, pero los usuarios pueden aumentar significativamente su eficiencia con unas pocas líneas de código.

La iteración de Jacobi es una técnica probada para resolver sistemas no lineales. La inferencia LLM también se puede utilizar para la creación de tokens en paralelo sin necesidad de un modelo previamente entrenado. Dado que cada paso de la decodificación de Jacobi implica el cálculo directo de LLM en >1 token, es significativamente más costoso en términos de FLOP requeridos que cada paso de la decodificación autorregresiva. Los investigadores han observado varias dificultades que pueden surgir al intentar mejorar significativamente el rendimiento del reloj de pared de la decodificación Jacobi en aplicaciones del mundo real. Si bien puede decodificar muchos tokens en una serie de pasos, a menudo se equivoca en el orden. Incluso cuando se anticipan adecuadamente, los tokens a menudo se reemplazan en los ciclos siguientes. Como resultado, pocas iteraciones decodifican y colocan correctamente numerosos tokens simultáneamente. Debido a esto, se anula todo el objetivo de utilizar la decodificación paralela. Generalmente, no produce caídas en el rendimiento debido a las capacidades de procesamiento paralelo de las unidades de procesamiento de gráficos.

La decodificación anticipada puede sortear sus deficiencias aprovechando la capacidad de Jacobi Decoding para generar n-gramas paralelos. Cada nuevo token en un punto se decodifica utilizando los valores en esa posición en iteraciones anteriores, como se ve en la decodificación de Jacobi. Se forman muchos n-gramas debido a este proceso, que crea una línea de tiempo de tokens históricos en cada posición del token. Para utilizar esto, la decodificación anticipada recopilará y almacenará en caché estos n-gramas en función de sus trayectorias. La decodificación anticipada verifica simultáneamente los n-gramas prometedores del caché mientras realiza la decodificación paralela utilizando iteraciones de Jacobi para tokens futuros.

Cada fase de decodificación anticipada se divide en dos ramas paralelas (la rama anticipada y la rama de verificación) para mejorar la eficiencia. Para producir n-gramas a partir de la trayectoria de iteración de Jacobi, la rama de anticipación mantiene una ventana bidimensional de tamaño constante. Al mismo tiempo, la rama de verificación elige y verifica los candidatos para n-gramas que se muestran prometedores.

Dado que el ancho de banda de la memoria es el principal cuello de botella en la decodificación LLM, los investigadores combinan las ramas de anticipación y verificación en una sola pasada, aprovechando la capacidad de procesamiento paralelo de la GPU y ocultando los gastos generales asociados.

El equipo probó diferentes tamaños de LLaMA-2-Chat y CodeLLaMA en MT-bench, HumanEval y GSM8K para ver qué tan efectiva es su decodificación anticipada. La técnica de decodificación anticipada ofrece aceleración sin necesidad de ajustes ni modelos preliminares. Con precisión fp16, evalúan los modelos 7B, 13B y 33B en una sola GPU A100 y el modelo 70B en dos GPU A100 con paralelismo de canalización.

  • Discusión sobre MT-Bench LLaMA: En muchas configuraciones de modelos, la aceleración lograda mediante la decodificación anticipada es de alrededor de 1,5 veces.
  • CódigoLLaMA de HumanEval: La latencia de CodeLLaMA se reduce más de dos veces cuando se utiliza la decodificación anticipada en HumanEval. Esto se debe a que hay numerosos N-gramas fácilmente adivinables incluidos en el código.
  • Código de instrucciónLLaMA para GSM8K: La decodificación anticipada reduce la latencia en 1,8 gracias a la aplicación de CodeLLama-Instructor a los desafíos matemáticos de GSM8K.


Dhanshree Shenwai es ingeniero en informática y tiene una buena experiencia en empresas de tecnología financiera que cubren el ámbito financiero, tarjetas y pagos y banca con un gran interés en las aplicaciones de IA. Le entusiasma explorar nuevas tecnologías y avances en el mundo en evolución de hoy que facilita la vida de todos.