Cálculo de memória GPU para servir LLMs
Quantas GPUs são necessárias para servir o modelo Llama 70B? Para responder a isso, é necessário saber a quantidade de memória GPU exigida pelo modelo de linguagem.
Artigo original por Sam Stoelinga
Quantas GPUs são necessárias para servir o modelo Llama 70B? Para responder a isso, é necessário saber a quantidade de memória GPU exigida pelo modelo de linguagem.
A fórmula básica é:
\[ M = \frac {(P \times 4B)} {(32/Q)} \times 1.2 \]
Símbolos e Descrições:
- M: Memória de GPU em Gigabytes.
- P: Número de parâmetros no modelo (por exemplo, um modelo 7B tem 7 bilhões de parâmetros).
- 4B: 4 bytes, representando os bytes usados por cada parâmetro.
- 32: Existem 32 bits em 4 bytes.
- Q: Número de bits usados para carregar o modelo (por exemplo, 16 bits, 8 bits ou 4 bits).
- 1.2: Representa uma sobrecarga de 20% para carregar elementos adicionais na memória da GPU.
Exemplo de Cálculo de Memória para o Llama 70B
Vamos aplicar a fórmula ao modelo Llama 70B, carregado com 16 bits e 70 bilhões de parâmetros:
\[ \frac {70 \times 4 bytes} {(32 / 16)} \times 1.2 = 168 GB \]
Isso exige bastante memória. Uma única GPU A100 de 80 GB não seria suficiente, mas duas A100 de 80 GB devem ser capazes de servir o modelo Llama 2 70B no modo de 16 bits.
Como Reduzir a Memória de GPU Necessária para o Llama 2 70B?
A quantização é uma técnica para reduzir a memória utilizada. Ela faz isso reduzindo a precisão dos parâmetros do modelo de ponto flutuante para representações de bits mais baixos, como inteiros de 8 bits. Isso reduz significativamente a necessidade de memória e computação, permitindo uma implantação mais eficiente do modelo, especialmente em dispositivos com recursos limitados. No entanto, a quantização requer gerenciamento cuidadoso para manter o desempenho do modelo, pois reduzir a precisão pode impactar a acurácia dos resultados.
Geralmente, a quantização para 8 bits oferece desempenho semelhante ao uso de 16 bits. No entanto, a quantização para 4 bits pode ter um impacto notável no desempenho do modelo.
Vamos a outro exemplo usando a quantização de 4 bits para o Llama 2 70B:
\[ \frac {70 \times 4 bytes} {(32 / 4)} \times 1.2 = 42 GB \]
Isso pode ser executado em 2 GPUs L4 de 24 GB.
Ferramentas e Recursos Relevantes
Link para o artigo original: Substratus