La tecnología de compresión vuelve a innovar y permite que los modelos grandes encajen en teléfonos móviles

Fuente de la imagen: Generada por IA ilimitada

Los modelos de lenguajes grandes (LLM), especialmente los modelos Transformer generativos preentrenados (GPT), han mostrado un rendimiento excelente en muchas tareas de lenguaje complejas. Este avance ha generado el deseo de ejecutar estos LLM de forma nativa en dispositivos móviles para proteger la privacidad del usuario. Sin embargo, incluso los LLM pequeños son demasiado grandes para ejecutarse en estos dispositivos.

Por ejemplo, el pequeño LLaMA tiene parámetros de 7B y su versión FP16 tiene un tamaño de 14GB, mientras que los dispositivos móviles solo tienen 18GB de DRAM. Por lo tanto, comprimir LLM mediante la optimización del tiempo de entrenamiento (como la dispersión, la cuantificación o la agrupación de pesos) es un paso clave para la implementación de LLM en el dispositivo. Sin embargo, la optimización del tiempo de entrenamiento de LLM es muy costosa debido al tamaño del modelo y la sobrecarga de recursos computacionales. DKM, uno de los algoritmos SOTA para agrupación de pesos, requiere un tiempo de entrenamiento excesivo para la agrupación de pesos variables debido a la necesidad de analizar las interacciones entre todos los pesos y todas las opciones de agrupación posibles.

Por lo tanto, muchas técnicas de compresión LLM existentes, como GTPQ y AWQ, se basan en la optimización posterior al entrenamiento. En este artículo, los investigadores proponen técnicas de optimización de la memoria para lograr agrupamiento ponderado en tiempo de entrenamiento y su aplicación en DKM, también conocido como eDKM.

Las técnicas utilizadas en este artículo incluyen la orquestación de tensores entre dispositivos y la unicización y fragmentación de matrices de peso. Al utilizar eDKM para ajustar el modelo LLaMA 7B y comprimirlo a 3 bits por factor de peso, los investigadores lograron una reducción de aproximadamente 130 veces en la huella de memoria de la pila de decodificadores, que es mejor que la tecnología de compresión de 3 bits existente.

Mejorar la eficiencia de la memoria de DKM

Como se muestra en la Figura 1, la poda, la cuantificación y la normalización son técnicas populares de optimización del peso. Estos métodos optimizan el peso original W y obtienen el peso.

, para optimizar la latencia de inferencia, la precisión o el tamaño del modelo. Entre estas tecnologías, los investigadores de este artículo se centran principalmente en la agrupación ponderada, especialmente el algoritmo de agrupación ponderada DKM.

La agrupación de pesos es una discretización de pesos no lineal en la que la matriz de pesos se comprime en una tabla de búsqueda y una lista de índices de baja precisión de la tabla de búsqueda que los aceleradores de inferencia modernos pueden procesar. DKM realiza agrupaciones de pesos diferenciables analizando la interacción entre los pesos (indicados por W) y los puntos centrales (indicados por C), y hace un equilibrio entre la relación de compresión y la precisión.

Por lo tanto, el uso de DKM para la compresión LLM produce resultados de alta calidad. Sin embargo, el mapa de atención generado durante el proceso de cálculo de DKM es grande y la complejidad de la memoria del paso hacia adelante/hacia atrás es O (|W||C|) (es decir, la matriz en la Figura 1), lo cual es particularmente difícil para LLM compresión. . Por ejemplo, un modelo LLaMA 7B que solo calcula mapas de atención para agrupaciones de peso de 4 bits requiere al menos 224 GB de memoria.

*Figura 1: Descripción general del sistema de optimización de peso. En DKM, el sistema crea internamente un mapa de atención que se puede agrupar por pesos diferenciables. *

Por lo tanto, los investigadores necesitan usar la memoria de la CPU para manejar requisitos de memoria tan grandes, es decir, primero almacenar información en la memoria de la CPU y luego copiarla nuevamente a la GPU cuando sea necesario. Sin embargo, esto generará una gran cantidad de tráfico entre la GPU y la CPU (lo que ralentizará el entrenamiento) y requerirá una enorme capacidad de memoria de la CPU. Esto significa que es fundamental reducir la cantidad de transacciones entre la CPU y la GPU y minimizar el tráfico por transacción. Para abordar estos problemas, los investigadores introdujeron dos nuevas tecnologías de optimización de memoria en PyTorch.

  • Orquestación de tensores entre dispositivos: realice un seguimiento de los tensores copiados entre dispositivos para evitar copias redundantes, lo que reduce el uso de memoria y acelera el entrenamiento.
  • Unicización de peso y procesamiento de fragmentación: aproveche el hecho de que el peso de 16 bits tiene solo 216 valores únicos para reducir la representación del mapa de atención (que se muestra en la Figura 1) y dividirlo aún más en múltiples modelos de aprendizaje.

Orquestación de tensores entre dispositivos

PyTorch utiliza un almacén de datos para representar tensores, que está vinculado al diseño de datos reales y a los metadatos, que se utilizan para guardar la forma, el tipo, etc. del tensor. Esta arquitectura tensorial permite a PyTorch reutilizar el almacenamiento de datos tanto como sea posible y reducir efectivamente el uso de memoria. Sin embargo, cuando un tensor se mueve a otro dispositivo (como de GPU a CPU), el almacenamiento de datos no se puede reutilizar y es necesario crear un nuevo tensor.

La Tabla 1 ilustra el uso de memoria de los tensores cuando se mueven entre dispositivos PyTorch. El tensor x0 asignado en la línea 0 consume 4 MB en la GPU. Cuando su vista cambia en la línea 1, no se requiere memoria GPU adicional ya que el almacén de datos subyacente se puede reutilizar (es decir, x0 y x1 son en realidad iguales). Sin embargo, cuando x0 y x1 se mueven a la CPU como en las líneas 2 y 3, aunque y0 e y1 pueden compartir el mismo almacenamiento de datos en la CPU, el consumo de memoria de la CPU se convierte en 8 MB, lo que resulta en redundancia de memoria de la CPU y aumenta la GPU. tráfico a la CPU.

*Tabla 1: El ajuste fino de LLM puede requerir el uso de memoria de la CPU para descargar la huella de memoria en la GPU. La falta de gestión de tensores entre dispositivos puede generar copias redundantes entre dispositivos (especialmente cuando el gráfico computacional es complejo), lo que es particularmente perjudicial para la optimización del tiempo de entrenamiento de LLM. Por ejemplo, aunque x0 y x1 son el mismo tensor con vistas diferentes, los tensores resultantes y0 e y1 no comparten almacenamiento de datos cuando se copian en la CPU, mientras que en la GPU x0 y x1 sí lo hacen. *

Para abordar esta ineficiencia, los investigadores colocaron una capa de orquestación en la Figura 2(b), donde el negro representa el almacenamiento de datos y los metadatos reales, y el gris representa solo los metadatos. La Figura 2(a) muestra el ejemplo de la Tabla 1, donde x1 comparte el diseño de datos con x0, pero y0 e y1 tienen almacenamiento de datos duplicado en la CPU. Como se muestra en la Figura 2 (b), al insertar una capa de orquestación, los investigadores evitan esta redundancia y reducen el tráfico de GPU a CPU. Los investigadores utilizaron el save-tensor-hook en PyTorch para implementar dicho esquema de intercambio, verificando si se ha copiado el mismo almacén de datos.

Sin embargo, utilizar un esquema de este tipo para comprobar si existe el mismo tensor en el dispositivo de destino es caro. En el ejemplo de la Figura 2(b), el investigador no copió x1 a la CPU, sino que simplemente devolvió una referencia a y0 y la operación de visualización entre x1 e y0.

*Figura 2: Cuando se aplica la orquestación de tensor entre dispositivos a la situación de la Tabla 1, se puede evitar la duplicación en el lado de la CPU, ahorrando así memoria y tráfico. *

Navegar por el gráfico computacional agrega ciclos computacionales adicionales y guardar copias innecesarias puede compensar esta sobrecarga. Los investigadores descubrieron que una búsqueda dentro de 4 saltos era suficiente para detectar todos los casos elegibles en el gráfico computacional de la implementación DKM original.

Unicización y fragmentación de peso

En la mayoría del entrenamiento LLM, los pesos generalmente usan almacenamiento de 16 bits (como BF16 o FP16), lo que significa que aunque hay miles de millones de parámetros en LLM, solo hay 216 coeficientes únicos debido al ancho de bits. Esto brinda la oportunidad de comprimir significativamente el mapa de atención entre pesos y puntos centrales, como se muestra en la Figura 3.

Figura 3: Unicización y fragmentación de pesos

Resultados experimentales

Precisión del LLM

Este artículo compara eDKM con otros esquemas de compresión basados en cuantificación, incluidos: RTN, SmoothQuant, GPTQ, AWQ y LLM-QAT. Para eDKM, los investigadores también realizaron una compresión de 8 bits en la capa de incrustación. Finalmente se llegó a las siguientes conclusiones:

  • eDKM permite que el modelo LLaMA 7B comprimido de 3 bits supere a todos los demás esquemas de compresión de 3 bits.
  • eDKM tiene la mejor precisión en el punto de referencia ARC-e en configuraciones de 3 y 4 bits.
  • El rendimiento de eDKM es muy competitivo en los puntos de referencia PIQA y MMLU utilizando el modelo de compresión de 4 bits.

Experimento de ablación

En experimentos de ablación, los investigadores midieron la compensación entre la huella de memoria y la velocidad de compresión de 3 bits hacia adelante y hacia atrás utilizando una capa de atención en la pila de decodificadores LLaMA 7B como ejemplo. La orquestación de tensores entre dispositivos por sí sola reduce el uso de memoria 2,9 veces con muy poca sobrecarga de tiempo de ejecución, mientras que los módulos de fragmentación y unicización ahorran 23,5 veces y 16,4 veces respectivamente. Cuando se combinan todas las tecnologías, eDKM genera ahorros de aproximadamente 130 veces. Aunque estos pasos requieren una sobrecarga adicional de cálculo y comunicación, la sobrecarga del tiempo de ejecución es insignificante ya que el tráfico entre la GPU y la CPU se reduce significativamente.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)