[NLP] Estimación del consumo de memoria de GPU durante la formación LLM

razonamiento

Es relativamente fácil de calcular si es sólo por inferencia.

La mayoría de los parámetros del modelo actual son float32tipos y ocupan 4 bytes. Entonces, un método de cálculo aproximado es que cada mil millones de parámetros ocupan 4G de memoria de video (en realidad 10^9*4/1024/1024/1024=3.725G, debería registrarse como 4G por conveniencia).

Por ejemplo, la cantidad de parámetros de LLaMA es 7000559616, entonces la memoria de video requerida para cargar los parámetros del modelo con total precisión es:

7000559616 * 4 /1024/1024/1024 = 26,08G   

Si usa la mitad de precisión FP16/BF16para cargar, cada parámetro solo ocupa 2 bytes y la memoria de video requerida se reduce a la mitad, solo se necesitan 13.04G.

En la actualidad, int4 tiene la precisión más baja y es difícil garantizar el efecto más abajo. Por ejemplo, los resultados cuantitativos proporcionados por Baichuan se comparan de la siguiente manera:

 Tenga en cuenta que lo anterior solo carga el modelo en la memoria de video, y algunas variables temporales durante el cálculo del modelo también deben solicitar espacio, como cuando realiza una búsqueda por transmisión. Así que recuerde dejar algo de búfer cuando realmente razone; de ​​lo contrario, será fácil hacer OOM.

Si la memoria de video no es suficiente, solo puede usar la tecnología Memery Offload para mover parte del contenido de la memoria de video a la memoria interna, pero esto reducirá significativamente la velocidad de inferencia.

tipo d Memoria necesaria por cada mil millones de parámetros
flotador32 4G
fp16/bf16 2G
tu8 1G
int4 0,5G

 

Entrenamiento de dos modelos

Adam + fp16混合精度训练Tomando como ejemplo el más común en LLM , el análisis de su uso de memoria consta de las siguientes cuatro partes:

 

 

GPT-2 contiene parámetros de 1,5 B. Si se utiliza el formato fp16, solo se necesitan 1,5 G * 2 Byte = 3 GB de memoria de video, pero el estado del modelo en realidad necesita consumir 1,5 B * 16 = 24 GB.

Por ejemplo, si hay un modelo con un tamaño de parámetro de 1M, en un marco general de aprendizaje profundo (como PyTorch), generalmente se almacena en 32 bits. El almacenamiento de 32 bits significa que 1 parámetro se almacena con 32 bits. Entonces el espacio de almacenamiento requerido por este modelo con parámetros de 1M es: 1M * 32 bit = 32Mb = 1M * 4Byte = 4MB. Porque 1 byte = 8 bits. La tecnología de cuantificación actual tiene como objetivo reducir la cantidad de bits ocupados por la cantidad de parámetros: por ejemplo, si uso almacenamiento de 16 bits, entonces: el tamaño del espacio de almacenamiento requerido es: 1M * 16 bits = 16Mb = 2MB.

conclusión de la siguiente manera:

  • Independientemente de la activación, el límite superior de la capacidad del modelo 3090 es 24/16 = 1,5 B y el límite superior de la capacidad del modelo A100 es 80/16 = 5 B
    • Suponiendo que el tamaño del lote es constante en 1 durante el proceso de entrenamiento, es decir, para reducir la proporción de Activación en la memoria de video tanto como sea posible, de modo que nuestro valor de cálculo teórico esté más cerca del uso real de la memoria de video, entonces el límite superior 16Φde la capacidad del modelo de 24G 3090 es 1.5B (casi es el nivel de GPT-2), el límite superior de la capacidad del modelo del 80G A100 es 5B
  • Teniendo en cuenta la activación, el límite superior de la capacidad del modelo 3090 es 0,75 B y el límite superior de capacidad del A100 es 2,5 B.
    • La eficiencia del entrenamiento cuando el tamaño del lote es 1 es muy baja. Solo cuando el tamaño del lote es mayor que 1 se puede utilizar completamente la eficiencia de la GPU. En este momento, la activación no se puede ignorar. Según la experiencia, generalmente es necesario reservar la mitad del espacio de la memoria de video para la activación (como 12G para 3090 y 40G para A100). En este momento, el límite superior de la capacidad del modelo 3090 es 0,75 B, y el límite superior de la capacidad del modelo 3090 es 0,75 B. El límite de capacidad del A100 es 2,5 B. Los resultados de nuestras pruebas reales se acercan a este valor.
    • La activación consume mucha memoria de vídeo durante el entrenamiento. Un ejemplo específico, el modelo es GPT-2 de 1.5B, la longitud de la secuencia es 1K y el tamaño del lote es 32, luego el consumo de memoria es 60GB.
  • [1B, 5B] es el rango decisivo de la mayoría de las tarjetas GPU actualmente en el mercado
    • [0, 1B) La mayoría de las tarjetas del mercado se pueden entrenar directamente
    • [1B, 5B] La mayoría de las tarjetas activan el límite superior de la capacidad del modelo en un cierto valor en este rango, y el valor de activación específico está relacionado con el tamaño de la memoria de video.
    • (5B, ~) Actualmente no existe ninguna tarjeta para entrenamiento desnudo.

Estimación del consumo de memoria de GPU de LLM Training - Zhihu (zhihu.com)

[Aprendizaje profundo] Marco para el entrenamiento de modelos grandes-DeepSpeed

Supongo que te gusta

Origin blog.csdn.net/zwqjoy/article/details/132244654
Recomendado
Clasificación