* Restrições de memória em GPUs commodity (T4s ou RTX 4080) com VRAM limitado (16 GB), tornando impossível treinar modelos de linguagem grandes com mais de 96 GB de memória necessária.
* Modelos de linguagem moderadamente grandes, como o Lama 2 (7 bilhões de parâmetros), ultrapassam a memória disponível.
Para superar esses desafios, as soluções incluem:
* Utilização de tipos de dados de precisão baixa (float16 em vez de float32)
* Quantização (discretizar valores de ponto flutuante contínuos em bins finitos)
* Otimizadores eficientes em memória (por exemplo, momentum e vetores de variância)
* Adaptação de baixo posto (LORA): ajuste fino de camadas específicas (por exemplo, camadas de atenção) e adição de matrizes de baixo posto ao lado de pesos pre-treinados congelados
* Acumulação de gradientes para superar limitações de tamanho de lote pequeno
Além disso, o workshop destaca a importância de encontrar um ponto ótimo para o tamanho do lote. Além disso, o workshop apresenta técnicas para reduzir o pé de memória, incluindo:
* Meia precisão
* Quantização
* Adaptação de baixo posto
* Acumulação de gradientes
* Checkpoint de gradientes
* Páginação
* Gerenciamento de estado do otimizador
Para demonstrar essas técnicas, o workshop inclui um tutorial prático sobre como treinar um modelo de geração de código usando o conjunto de dados Alpaca e a plataforma Ludwig. Além disso, o workshop destaca a importância de ter um conjunto de dados de boa qualidade e uma distribuição adequada.
Finalmente, o workshop apresenta a plataforma Ludwig como uma ferramenta para treinar modelos de linguagem grandes de forma eficiente e escalável.