Recursos/Treinamento de modelo/O que acontece durante o treinamento

Método

Ajuste fino completo

O ajuste fino completo atualiza cada peso no modelo. Ele tem mais espaço para alterar o comportamento, mas precisa de muitas vezes o próprio tamanho do modelo em memória da GPU e é o mais propenso a corroer as habilidades que o modelo base possuía.

Capítulo 65 min de leitura5 referências

O que é

O ajuste fino completo continua o treinamento de todo o modelo nos seus exemplos: cada peso em cada camada pode mudar. É a forma mais direta de ajuste fino e mecanicamente igual às etapas finais de como o modelo foi construído. A alternativa é o ajuste fino eficiente em parâmetros (PEFT), como o LoRA, que congela os pesos originais e treina um pequeno complemento em seu lugar.

Para onde vai a memória

A execução de um modelo precisa apenas de seus pesos. O treinamento de cada peso precisa, para cada um, do próprio peso, de seu gradiente e do estado do otimizador. Com o AdamW na configuração usual de precisão mista, isso significa um peso de 16 bits e um gradiente de 16 bits para as passagens forward e backward, além de uma cópia mestre de 32 bits do peso e das duas médias móveis de 32 bits do Adam, mantidas para atualizações estáveis. A contabilidade do artigo do ZeRO coloca isso em 16 bytes por peso; outras configurações que mantêm os gradientes em 32 bits chegam a cerca de 18.

Memória por peso treinável
per trainable weight · AdamW · mixed precision
  16-bit weight              2 bytes
  16-bit gradient            2 bytes
  32-bit master weight       4 bytes
  32-bit Adam momentum       4 bytes
  32-bit Adam variance       4 bytes
  ───────────────────────────────────
                            16 bytes   + activations

7B model:  7 × 10⁹ × 16 bytes ≈ 112 GB
Ajuste fino completo16 bits + Adam≈ 112 GBLoRABase de 16 bits, congelada≈ 15 GBQLoRABase de 4 bits, congelada≈ 4–5 GBAdam + cópia em fp32pesos congeladospesos treináveisgradientesestado do otimizador
Memória de GPU aproximada para o ajuste fino de um modelo de 7 bilhões de parâmetros, antes das ativações. O ajuste fino completo com Adam requer cerca de 16 bytes para cada peso: os pesos, seus gradientes, uma cópia mestre em precisão total e duas estatísticas do otimizador. O LoRA mantém a base congelada, de modo que os gradientes e o estado do otimizador existem apenas para o pequeno adaptador (aqui, cerca de 40 milhões de pesos).
Um modelo de 7 bilhões de parâmetros, de três maneiras
  1. Apenas a execução em 16 bits: 7 bilhões × 2 bytes ≈ 14 GB.
  2. Ajuste fino completo com AdamW: 7 bilhões × 16 bytes ≈ 112 GB, antes das ativações. Isso é mais do que uma única GPU de 80 GB suporta, portanto, o trabalho é dividido entre várias GPUs com técnicas como ZeRO ou FSDP, que dividem o estado do otimizador, os gradientes e os pesos entre elas.
  3. LoRA no rank 16 em todas as camadas lineares de um modelo de 7B no estilo Llama: cerca de 40 milhões de pesos treináveis, 0,6% do modelo. Seu estado de treinamento é de cerca de 40 milhões × 16 bytes ≈ 0,6 GB, além da base congelada de 14 GB: aproximadamente 15 GB.
  4. QLoRA: a base congelada mantida em 4 bits ocupa cerca de 3,5 GB, de modo que o total fica em torno de 4–5 GB mais ativações, ao alcance de uma única GPU de consumo.
  5. As ativações são adicionadas em todos os casos e crescem com o tamanho do lote e o comprimento da sequência. O gradient checkpointing troca processamento extra por menos memória de ativação.

O que ele proporciona

O ajuste fino completo pode alterar o modelo em qualquer direção, não apenas dentro do pequeno subespaço que um adaptador pode alcançar. Um estudo comparando os dois descobriu que o ajuste fino completo aprende mudanças com 10 a 100 vezes o rank das configurações típicas do LoRA, e que ele aprendeu mais em grandes conjuntos de treinamento de código e matemática de cerca de 100.000 exemplos. Para o caso de negócios comum, de algumas centenas a alguns milhares de exemplos de chat que ensinam tom, formato e fraseado de domínio, o LoRA aplicado a todas as camadas geralmente se iguala ao ajuste fino completo.

O que ele custa: esquecimento

O esquecimento catastrófico é a tendência de uma rede treinada em algo novo perder o que aprendeu antes. Como o ajuste fino completo pode mover cada peso, ele tem mais espaço para sobrescrever habilidades gerais: um modelo de suporte que responde perfeitamente às perguntas do seu produto, mas que se tornou pior em seguir instruções não relacionadas. Um estudo empírico de ajuste contínuo de instruções observou o esquecimento em modelos de 1B a 7B de parâmetros, e descobriu-se que os modelos com ajuste fino usando LoRA, que mantém a base congelada, esquecem menos.

  • Menos épocas e uma taxa de aprendizado menor, para que os pesos se desloquem menos de onde começaram.
  • Misture dados gerais, como uma parcela de exemplos amplos de seguimento de instruções junto aos seus.
  • Avalie além da sua tarefa. Inclua algumas perguntas gerais na avaliação para que uma regressão seja evidenciada.
  • Prefira um adaptador, a menos que um ganho com o ajuste fino completo tenha sido efetivamente medido.

Ajuste fino completo e LoRA lado a lado

AspectoAjuste fino completoAdaptador LoRA
Pesos treináveisTodos elesNormalmente 0,1–1%
Memória para treinarCerca de 16 bytes por peso, mais ativaçõesA base congelada (2 bytes por peso, ou cerca de 0,5 em 4 bits) mais um pequeno adaptador
Resultado salvoUma cópia completa do modelo, por ex., cerca de 14 GB para 7B em 16 bitsUm arquivo de adaptador, frequentemente de dezenas a centenas de MB
Taxa de aprendizado típicaEm torno de 1e-5Aproximadamente 10× maior
Risco de esquecimentoMaiorMenor
Melhor paraGrandes conjuntos de dados que ensinam novas habilidades substanciaisTom, formato e fraseado do domínio; várias variantes de uma base

Erros comuns

  • Escolher o ajuste fino completo porque parece mais minucioso. Em pequenos conjuntos de dados, geralmente custa muito mais sem nenhum ganho mensurável.
  • Orçar a memória da GPU a partir do tamanho de download do modelo. O treinamento de cada peso precisa de cerca de oito vezes os pesos de 16 bits, mais as ativações.
  • Treinar muitas épocas com uma alta taxa de aprendizado e testar apenas a tarefa alvo, para depois descobrir que as habilidades gerais se degradaram.
  • Esquecer que cada ajuste fino completo é um modelo de tamanho normal para armazenar e servir.

Referências e leitura complementar

Fontes externas abrem em uma nova aba.

  1. 01ZeRO: Memory Optimizations Toward Training Trillion Parameter ModelsRajbhandari et al., 2019 · arXiv · arxiv.orgA origem da contabilidade de 16 bytes por parâmetro e do sharding usado para distribuí-la entre as GPUs.
  2. 02GPU memory usageHugging Face Transformers docs · huggingface.coUm detalhamento de pesos, estados do otimizador, gradientes e ativações durante o treinamento.
  3. 03LoRA Learns Less and Forgets LessBiderman et al., 2024 · arXiv · arxiv.orgUma comparação cuidadosa entre o ajuste fino completo e o LoRA em código e matemática: o que cada um aprende e o que cada um esquece.
  4. 04An Empirical Study of Catastrophic Forgetting in Large Language Models During Continual Fine-tuningLuo et al., 2023 · arXiv · arxiv.org
  5. 05LoRA vs. full fine-tuningTogether AI docs · docs.together.aiOs conselhos práticos de um provedor sobre quando passar de um adaptador para o ajuste fino completo.

Transforme semanas de trabalho especializado em minutos

Veja como o Scalata se adapta à sua equipe, aos seus dados e aos seus Controles.

Fale com vendas