Técnicas dispersas para acelerar 100 veces la inferencia de modelos grandes de lenguaje. Explora los secretos detrás de las técnicas LLM-Pruner, duplicando la velocidad de inferencia para obtener resultados más rápidos.
Introducción
Es bien sabido que hay tres factores principales que afectan el rendimiento de los Modelos de Lenguaje Grande (LLM) en GPUs: (1) la potencia computacional de la GPU, (2) la entrada/salida (I/O) de la GPU y (3) el tamaño de la memoria de la GPU. Vale la pena señalar que para los LLM actuales, el factor (2) es el principal cuello de botella durante la etapa de inferencia.
Este blog se centra en la viabilidad de acelerar la inferencia de LLM en tarjetas gráficas de consumo mediante poda o dispersión, basándose en los últimos artículos de investigación y prácticas de ingeniería.
En primer lugar, refiriéndonos al análisis de las métricas de latencia de inferencia de LLM en [1], se obtienen las siguientes tres conclusiones:
- En las etapas de prompting y generación de tokens del LLM, la etapa de generación de tokens consume mucho más tiempo debido a la latencia de I/O provocada por la carga de los parámetros del modelo.
- En la inferencia de LLM, tanto los módulos de Atención como MLP son cuellos de botella, siendo el módulo MLP responsable de aproximadamente dos tercios de la latencia de I/O.
- La proporción de All Reduce (comunicación entre GPUs) es relativamente baja, lo que indica que la principal dirección de optimización se encuentra dentro de la propia arquitectura del transformer.
Para datos detallados, consulte la siguiente figura:
Para mejorar la eficiencia de la inferencia, se han explorado diversas técnicas, incluyendo cuantización, decodificación de inferencia, destilación y dispersión. Este blog se centra en la dispersión y ofrece una introducción detallada.
Introducción a la Dispersión
La poda de modelos, también conocida como dispersión de modelos, se diferencia de la cuantización de modelos en que, en lugar de comprimir cada parámetro de peso, los métodos de dispersión intentan “eliminar” directamente ciertos parámetros de peso. El principio de la poda de modelos es reducir el número de parámetros y la carga computacional del modelo eliminando pesos “no importantes”, al tiempo que se intenta mantener la precisión del modelo.
El artículo [17] introduce por primera vez el método de poda de pesos: todos los pesos por debajo de un cierto umbral se podan, seguido de un ajuste fino hasta que la precisión alcanza el nivel deseado. Los autores de este artículo realizaron experimentos en LeNet, AlexNet y VGGNet para verificar la efectividad de la poda.
Otra conclusión sobre las regularizaciones L1 y L2 sugiere que la regularización L1 funciona mejor sin ajuste fino, mientras que la regularización L2 funciona mejor con ajuste fino. Además, las capas más tempranas en la red son más sensibles a la poda, lo que hace preferible un enfoque de poda iterativo. Además, basándose en experimentos, los autores proponen la hipótesis del Lottery Ticket.
La hipótesis del Lottery Ticket establece que para una red preentrenada, existe una subred que puede alcanzar una precisión similar a la red original sin exceder las rondas de entrenamiento de la red original. Esta subred es similar a ganar un boleto de lotería.
Para restaurar la precisión del modelo, normalmente es necesario volver a entrenar el modelo después de la poda. El proceso típico de tres etapas para la poda de modelos consiste en los pasos de entrenamiento, poda y ajuste fino, con cambios en la conectividad de la red antes y después de la poda, como se muestra en la siguiente figura.
Mientras tanto, según los objetos que pueden ser dispersados en los modelos de aprendizaje profundo, la dispersión en redes neuronales profundas incluye principalmente dispersión de pesos, dispersión de activaciones y dispersión de gradientes.
Lo anterior es una breve introducción a la dispersión. A continuación, compartiremos en tres partes la proposición clave “Cómo acelera LLM la inferencia mediante la dispersión”. La primera parte, “Cómo se podan los modelos grandes”, se discutirá. La segunda parte cubrirá “Cómo acelerar la inferencia usando dispersión de activaciones”, y la tercera parte profundizará en “El impacto de los compiladores de dispersión en la inferencia de LLM”.
En esta guía completa, exploraremos la primera parte, “Técnicas de LLM-Pruner: Duplicando la velocidad de inferencia”, escrita por Zachary del equipo de novita.ai.
Cómo se podan los LLM
Los LLM a menudo tienen escalas de varios cientos de miles de millones de parámetros, lo que hace que los métodos convencionales de reentrenamiento o poda iterativa sean poco prácticos. Por lo tanto, métodos como la poda iterativa y la hipótesis del Lottery Ticket [2,3] solo pueden aplicarse a modelos de menor escala.
La poda se puede aplicar de manera efectiva a tareas de visión y modelos de lenguaje de menor escala. Sin embargo, los métodos de poda óptimos requieren un reentrenamiento extenso del modelo para recuperar la pérdida de precisión causada por la eliminación de los elementos podados. Por lo tanto, cuando se trata de modelos de la escala de GPT, el costo también se vuelve prohibitivamente alto. Si bien existen algunos métodos de poda de un solo paso que comprimen modelos sin necesidad de reentrenamiento, su costo computacional es demasiado alto para aplicarse a modelos con miles de millones de parámetros.
Recientemente, ha habido avances en las técnicas de poda para LLM, que se discutirán a su vez en este blog.
SparseGPT
SparseGPT [12] es la primera técnica de poda precisa de un solo paso en el escenario de LLM que puede operar eficazmente en modelos con escalas de 100 a 1000 mil millones de parámetros. El principio de funcionamiento de SparseGPT simplifica el problema de poda en una instancia de regresión dispersa a gran escala. Se basa en nuevos solucionadores aproximados de regresión dispersa para resolver problemas de compresión jerárquica, y su eficiencia es suficiente para ejecutarse en el modelo GPT más grande (175 mil millones de parámetros) usando una sola GPU en cuestión de horas. Además, SparseGPT logra una alta precisión sin requerir ningún ajuste fino, y la pérdida de precisión después de la poda puede ser insignificante. Por ejemplo, cuando se ejecuta en los modelos generativos de lenguaje públicos más grandes (OPT-175B y BLOOM-176B), SparseGPT alcanza un 50-60% de dispersión en pruebas de un solo paso, con una pérdida mínima de precisión medida por perplejidad o precisión en pruebas de cero disparos.
Para el código de ingeniería, consulte el proyecto: https://github.com/IST-DASLab/sparsegpt
La Figura 1 presenta los resultados experimentales, destacando dos puntos clave: en primer lugar, como se muestra en la Figura 1 (izquierda), SparseGPT es capaz de podar hasta un 60% de dispersión uniforme por capa en las variantes de 175B de la familia OPT, con una pérdida mínima de precisión. En contraste, la única línea base de un solo paso conocida que funciona a esta escala — Poda por Magnitud — mantiene la precisión solo hasta un 10% de dispersión y colapsa por completo más allá del 30% de dispersión.
En segundo lugar, como se ilustra en la Figura 2 (derecha), SparseGPT también puede imponer con precisión una dispersión en patrones semiestructurados 2:4 y 4:8, más restrictivos pero amigables con el hardware. Si bien estos patrones a menudo conllevan una pérdida de precisión adicional en comparación con las líneas base densas, particularmente para modelos más pequeños, las aceleraciones computacionales se pueden inferir directamente de estos patrones dispersos. Además, la dispersión inducida por la técnica puede combinarse bien con la compresión adicional obtenida mediante cuantización.
LLM-Pruner
LLM-Pruner [13] es un método de poda estructurada que elimina selectivamente estructuras de acoplamiento no esenciales basándose en información de gradiente, maximizando la dispersión mientras retiene la mayor parte de la funcionalidad del LLM. LLM-Pruner, a través de LoRA, restaura eficientemente el rendimiento de los modelos podados con solo 3 horas y 50K datos.
LLM-Pruner es el primer marco diseñado específicamente para la poda estructurada de LLM, con las ventajas resumidas de la siguiente manera: (i) Compresión independiente de la tarea, donde los modelos de lenguaje comprimidos retienen su capacidad como solucionadores multitarea. (ii) Demanda reducida de corpus de entrenamiento original, ya que la compresión requiere solo 50,000 muestras disponibles públicamente, lo que reduce significativamente el presupuesto para adquirir datos de entrenamiento. (iii) Compresión rápida, con el proceso de compresión completado en tres horas. (iv) Marco de poda estructurada automática, donde todas las dependencias estructurales se agrupan sin necesidad de ningún diseño manual.
Para evaluar la efectividad de LLM-Pruner, se realizaron experimentos exhaustivos en tres modelos de lenguaje a gran escala: LLaMA-7B, Vicuna-7B y ChatGLM-6B. Los modelos comprimidos se evaluaron utilizando nueve conjuntos de datos para evaluar la calidad de generación y el rendimiento de clasificación de cero disparos de los modelos podados.
Haciendo referencia a la tabla a continuación, podar LLaMA-7B en un 20% usando LLM-Pruner con 2.59 millones de muestras resultó en una disminución mínima en el rendimiento del modelo, pero un notable aumento del 18% en la velocidad de inferencia.

Resultados de LLM-Pruner con 2.59M muestras
Wanda
Wanda [14], un método de poda basado en pesos y activaciones, es un enfoque novedoso, simple y efectivo destinado a inducir dispersión en LLM preentrenados. Inspirado en observaciones recientes de características de gran valor en LLM, Wanda poda los pesos multiplicando cada salida con la activación de entrada correspondiente por el valor cuantizado mínimo. Notablemente, Wanda no requiere reentrenamiento ni actualización de pesos, y los LLM podados se pueden usar tal cual. La evaluación de Wanda en LLaMA y LLaMA-2 valida su superioridad sobre las líneas base establecidas de poda por magnitud, demostrando competitividad en comparación con métodos recientes que implican actualizaciones densas de pesos.
Para el código de ingeniería, consulte el proyecto: https://github.com/locuslab/wanda
Perplejidad de WikiText de modelos LLaMA y LLaMA-2 podados. Wanda se desempeña de manera competitiva frente al mejor método anterior SparseGPT, sin introducir ninguna actualización de peso.
Haciendo referencia a la figura anterior, Wanda y SparseGPT demuestran un rendimiento comparable en la poda de modelos.
Desventajas de los Métodos de Poda Convencionales
- Soporte de hardware: Lograr una aceleración en tiempo de reloj mediante dispersión no estructurada es difícil debido a las conocidas dificultades con el hardware moderno. Por ejemplo, desarrollos recientes como SparseGPT han logrado un 60% de dispersión no estructurada mediante poda de un solo paso, pero no han resultado en efectos de aceleración significativos en tiempo de reloj.
- Desafíos de implementación: Cumplir con requisitos específicos mediante la dispersión de modelos en contextos como el Aprendizaje en Contexto (In-Context Learning) presenta desafíos. Si bien muchos trabajos han demostrado la efectividad de la poda específica de tareas, mantener diferentes modelos para cada tarea entra en conflicto con el posicionamiento del propio LLM, lo que plantea obstáculos de implementación.
Conclusión
En resumen, métodos innovadores de poda como SparseGPT, LLM-Pruner y Wanda ofrecen nuevas perspectivas y medios técnicos para podar modelos grandes mientras se mantiene un alto rendimiento. Sin embargo, aún se necesita más investigación y exploración para abordar los desafíos en el soporte de hardware y las aplicaciones prácticas. En la próxima publicación del blog, exploraremos la segunda parte: “Cómo acelerar la inferencia usando dispersión de activaciones”.
Artículos de referencia
[1] Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time
[4] The Hardware Lottery
[6] Rethinking the Role of Scale for In-Context Learning: An Interpretability-based Case Study at 66 Billion Scale
[12] SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot
[13] LLM-Pruner: On the Structural Pruning of Large Language Models
[14] A Simple and Effective Pruning Approach for Large Language Models
[17] Learning both Weights and Connections for Efficient Neural Networks
novita.ai proporciona API de Stable Diffusion y cientos de APIs de generación de imágenes de IA rápidas y económicas para 10,000 modelos.🎯 Generación más rápida en solo 2 segundos, Pago por Uso, desde $0.0015 por cada imagen estándar, puedes agregar tus propios modelos y evitar el mantenimiento de GPU. Comparte extensiones de código abierto gratuitamente.
Lectura recomendada
