raciocínio
É relativamente fácil calcular se for apenas para inferência.
A maioria dos parâmetros do modelo atual são float32
tipos, 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/BF16
para 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
- 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
- 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