Conoce FlexGen un motor de generación de alto rendimiento para ejecutar grandes modelos de lenguaje (LLM) con memoria limitada de GPU.
Conoce FlexGen, un motor de generación de alto rendimiento para LLM con GPU de memoria limitada.
Recientemente, los modelos de lenguaje grandes (LLMs, por sus siglas en inglés) han mostrado un rendimiento impresionante en diversas tareas. La inferencia generativa de LLMs tiene poderes nunca antes vistos, pero también enfrenta dificultades particulares. Estos modelos pueden incluir miles de millones o billones de parámetros, lo que significa que su ejecución requiere una enorme memoria y potencia de cálculo. Por ejemplo, GPT-175B solo necesita 325GB de memoria de GPU para cargar sus pesos de modelo. Se necesitarían al menos cinco GPUs A100 (80GB) y técnicas de paralelismo sofisticadas para poder ajustar este modelo en las GPUs. Por lo tanto, reducir los recursos necesarios para la inferencia de LLMs ha generado recientemente mucho interés.
Los LLMs se utilizan para diversas operaciones “internas”, como pruebas de referencia, extracción de información, manipulación de datos, procesamiento de formularios y casos de uso interactivos como chatbots. En este estudio, se centran en una situación que denominan inferencia generativa orientada al rendimiento. El hecho de que estas tareas a menudo requieran realizar inferencia de LLM en lotes a través de un gran número de tokens, como todos los documentos en el corpus de una empresa, y sean menos susceptibles al retraso en la generación de tokens, es una característica importante de estos trabajos. Debido a esto, existen posibilidades de reducir las necesidades de recursos en ciertas cargas de trabajo mediante el intercambio de la latencia por un mejor rendimiento.
Se han utilizado tres enfoques para reducir los recursos necesarios para la inferencia de LLMs: compresión del modelo para reducir la huella de memoria general, inferencia colaborativa para distribuir el costo de la inferencia mediante la descentralización y descarga para aprovechar mejor la memoria de la CPU y el disco. Aunque existen límites claros, estas estrategias han reducido considerablemente las necesidades de recursos para el uso de LLMs. La investigación en los dos primeros métodos a menudo necesita ayuda para ejecutar modelos a escala de 175B en una única GPU de uso general, ya que asume que el modelo cabe en la memoria de la GPU. Por otro lado, debido a la programación de E/S ineficiente y la ubicación de tensores, los sistemas de descarga de última generación en la tercera categoría no pueden alcanzar un rendimiento aceptable en una única GPU.
- Este artículo de IA presenta una novedosa clase de objetivos sin simulación para el aprendizaje de modelos generativos estocásticos en tiempo continuo entre distribuciones generales de origen y destino.
- Un Enfoque Práctico para la Ingeniería de Características en Aprendizaje Automático
- Construyendo una aplicación web completa en los servicios de AWS
Con una única GPU de uso general, su principal objetivo es construir mecanismos de descarga efectivos para una inferencia generativa de alto rendimiento. Pueden cargar parcialmente un LLM y ejecutar la computación de manera fragmentada mediante su descarga en almacenamiento secundario para operar un LLM con memoria GPU limitada. La jerarquía de memoria se divide en tres niveles en un sistema típico. Los niveles inferiores son más lentos pero más abundantes, mientras que los niveles superiores son más rápidos pero más escasos. Los tamaños de lote pequeños pueden causar cuellos de botella en estos sistemas. Pueden comprometer la latencia en escenarios orientados al rendimiento utilizando un tamaño de lote grande y distribuyendo las operaciones de E/S costosas en varias jerarquías de memoria a lo largo de un gran lote de entradas superpuesto con el procesamiento.
Aunque pueden comprometer el retraso, lograr una inferencia generativa de alto rendimiento con memoria GPU limitada es difícil. La primera dificultad es idear un plan de descarga exitoso. El plan debe indicar qué tensores se deben descargar, dónde deben descargarse en la estructura de memoria de tres niveles y cuándo durante la inferencia. Se utilizan tres tipos de tensores en la inferencia generativa: pesos, activaciones y almacenamiento en caché de clave-valor (KV).
Existen varias formas de calcular debido a la estructura del algoritmo por lotes, token por token y capa por capa. Estas opciones se combinan para crear un espacio de diseño complicado. Los sistemas de inferencia basados en la descarga actualmente en uso heredan metodologías basadas en el entrenamiento que realizan E/S excesivas y logran un rendimiento muy por debajo de las restricciones teóricas del hardware, lo que los convierte en áreas deficientes para la inferencia. La creación de algoritmos de compresión eficientes presenta el segundo problema. Los pesos y las activaciones de los LLMs han mostrado resultados prometedores en compresión en publicaciones anteriores. Sin embargo, cuando se combinan la compresión y la descarga para la inferencia generativa de alto rendimiento, se requieren estrategias adicionales de compresión impulsadas por los costos de E/S y la reducción de memoria de los pesos y el almacenamiento en caché KV.
Investigadores de UCB, Stanford, CMU, Meta, Yandex, ETH y HSE presentan conjuntamente FlexGen, un marco de descarga para la inferencia de alto rendimiento de LLMs, para superar estos problemas. FlexGen programa eficazmente las actividades de E/S, las técnicas de compresión potenciales y el paralelismo de canalización distribuida al combinar la memoria de la GPU, la CPU y el disco. Estas son las contribuciones que realizaron:
- Describen explícitamente un espacio de búsqueda de opciones potenciales de descarga al considerar la programación de cálculo, la ubicación de tensores y la delegación de cálculo. Demuestran que su espacio de búsqueda captura un orden de cálculo con una complejidad de E/S dentro de un rango de 2 de optimalidad. A continuación, crean un algoritmo de búsqueda basado en programación lineal para maximizar el rendimiento dentro del espacio de búsqueda.
- Demuestran que, sin necesidad de volver a entrenar ni calibrar, es posible reducir los pesos y el almacenamiento en caché KV de LLMs como el OPT-175B a 4 bits con una pérdida de precisión mínima o nula. Esto se logra mediante una cuantificación detallada por grupos, adecuada para reducir los costos de E/S y el uso de memoria durante la descarga.
- Demuestran la eficiencia de FlexGen ejecutando OPT-175B en GPUs NVIDIA T4 (16GB). FlexGen a menudo permite un tamaño de lote mayor que los dos algoritmos de inferencia basados en descarga de última generación, DeepSpeed Zero-Inference y Hugging Face Accelerate. Como resultado, FlexGen puede lograr rendimientos sustancialmente mayores.
Visita el Paper y Github. Todo el crédito de esta investigación va para los investigadores de este proyecto. Además, no olvides unirte a nuestro SubReddit de ML de más de 16k seguidores, nuestro Canal de Discord y nuestro Boletín de Noticias por Correo Electrónico, donde compartimos las últimas noticias de investigación en IA, proyectos interesantes de IA y más.
Desbloqueando los secretos del aprendizaje profundo con la plataforma de explicabilidad Tensorleap
La publicación Meet FlexGen: Un motor de generación de alto rendimiento para ejecutar modelos de lenguaje grandes (LLMs) con memoria limitada de GPU apareció primero en MarkTechPost.
We will continue to update Zepes; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Listas de Python vs. Arrays de NumPy Un análisis detallado sobre la organización en memoria y los beneficios en rendimiento
- 3 Trucos Poderosos Para Trabajar Con Datos de Fecha y Hora en Python
- Una nueva investigación de IA presenta GPT4RoI un modelo de visión y lenguaje basado en la sintonización de instrucciones de un Gran Modelo de Lenguaje (LLM) en pares de región-texto.
- Los investigadores de la Universidad de Pennsylvania presentaron un enfoque alternativo de IA para diseñar y programar computadoras de depósito basadas en RNN.
- Red Neuronal Recurrente con Puertas desde Cero en Julia
- 8 Razones por las que no renuncié a mi sueño de ser un científico de datos y por qué tú tampoco deberías hacerlo
- CarperAI presenta OpenELM una biblioteca de código abierto diseñada para permitir la búsqueda evolutiva con modelos de lenguaje tanto en código como en lenguaje natural.