[PNL] Estimativa do consumo de memória GPU durante o treinamento LLM

raciocínio

É relativamente fácil calcular se for apenas para inferência.

A maioria dos parâmetros do modelo atual são float32tipos, ocupando 4 bytes. Portanto, um método de cálculo aproximado é que cada 1 bilhão de parâmetros ocupa 4G de memória de vídeo (na verdade 10^9*4/1024/1024/1024=3.725G, deveria ser gravado como 4G por conveniência).

Por exemplo, a quantidade de parâmetros do LLaMA é 7000559616, então a memória de vídeo necessária para carregar os parâmetros do modelo com total precisão é:

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

Se você usar meia precisão FP16/BF16para carregar, cada parâmetro ocupará apenas 2 bytes e a memória de vídeo necessária será reduzida à metade, apenas 13,04 G serão necessários.

Atualmente, int4 é a precisão mais baixa e é difícil garantir o efeito mais abaixo. Por exemplo, os resultados quantitativos fornecidos por Baichuan são comparados da seguinte forma:

 Observe que o procedimento acima apenas carrega o modelo na memória de vídeo, e algumas variáveis ​​temporárias durante o cálculo do modelo também precisam ser aplicadas ao espaço, como quando você pesquisa por feixe. Portanto, lembre-se de deixar algum buffer ao realmente raciocinar, caso contrário, será fácil fazer OOM.

Se a memória de vídeo não for suficiente, você só poderá usar a tecnologia Memery Offload para mover parte do conteúdo da memória de vídeo para a memória interna, mas isso reduzirá significativamente a velocidade de inferência.

tipo d Memória necessária para cada 1 bilhão de parâmetros
float32 4G
fp16/bf16 2G
você8 1G
int4 0,5G

 

Treinamento de dois modelos

Adam + fp16混合精度训练Tomando como exemplo o mais comum no LLM , a análise de seu uso de memória tem as seguintes quatro partes:

 

 

GPT-2 contém parâmetros de 1,5 B. Se o formato fp16 for usado, apenas 1,5 G*2Byte=3GB de memória de vídeo será necessária, mas o estado do modelo realmente precisa consumir 1,5B*16=24GB.

Por exemplo, existe um modelo com tamanho de parâmetro de 1 M. Em uma estrutura geral de aprendizado profundo (como PyTorch), ele geralmente é armazenado em 32 bits. Armazenamento de 32 bits significa que 1 parâmetro é armazenado com 32 bits. Então o espaço de armazenamento exigido por este modelo com parâmetros de 1M é: 1M * 32 bits = 32Mb = 1M * 4Byte = 4MB. Porque 1 Byte = 8 bits. A tecnologia de quantização atual visa reduzir o número de bits ocupados pela quantidade do parâmetro: por exemplo, se eu usar armazenamento de 16 bits, então: o tamanho do espaço de armazenamento necessário é: 1M * 16 bits = 16Mb = 2MB.

conclusão conforme abaixo:

  • Independentemente da ativação, o limite superior da capacidade do modelo do 3090 é 24/16=1,5B, e o limite superior da capacidade do modelo do A100 é 80/16=5B
    • Supondo que o tamanho do lote seja constante em 1 durante o processo de treinamento, ou seja, para reduzir ao máximo a proporção de Ativação na memória de vídeo, para que nosso valor de cálculo teórico fique mais próximo do uso real da memória de vídeo, então o limite superior 16Φde a capacidade do modelo 24G 3090 é 1,5B (quase o nível do GPT-2), o limite superior da capacidade do modelo 80G A100 é 5B
  • Considerando a ativação, o limite superior da capacidade do modelo 3090 é 0,75B, e o limite superior da capacidade do A100 é 2,5B
    • A eficiência do treinamento quando o tamanho do lote é 1 é muito baixa. Somente quando o tamanho do lote é maior que 1 a eficiência da GPU pode ser totalmente utilizada. Neste momento, a ativação não pode ser ignorada. De acordo com a experiência, geralmente é necessário reservar metade do espaço da memória de vídeo para ativação (como 12G para 3090 e 40G para A100).Neste momento, o limite superior da capacidade do modelo 3090 é de 0,75B, e o limite superior da capacidade do modelo 3090 é de 0,75B, e o limite superior da capacidade do modelo 3090 é de 0,75B. O limite de capacidade do A100 é 2,5 B. Nossos resultados de testes reais próximos a esse valor
    • A ativação consome muita memória de vídeo durante o treinamento. Um exemplo específico, o modelo é GPT-2 de 1,5B, o comprimento da sequência é 1K e o tamanho do lote é 32, então o consumo de memória é 60GB.
  • [1B, 5B] é o divisor de águas da maioria das placas GPU atualmente no mercado
    • [0, 1B) A maioria das cartas no mercado pode ser diretamente treinada
    • [1B, 5B] A maioria das placas aciona o limite superior da capacidade do modelo em um determinado valor nesta faixa, e o valor de acionamento específico está relacionado ao tamanho da memória de vídeo
    • (5B, ~) Atualmente não há cartão para treino pelado

Estimativa do consumo de memória da GPU do treinamento LLM - Zhihu (zhihu.com)

[Deep Learning] Estrutura para treinamento de modelos grandes - DeepSpeed

Acho que você gosta

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