Capítulo 06 · Treinamento · 10 min

Como aprende

Loss, descida de gradiente, backpropagation. E por que são necessários bilhões de parâmetros.

Aprender e corrigir uma predicao

Durante o treinamento, o modelo nao conversa. Ele nao sabe o que e um usuario. Nao tenta ser util.

Ele recebe trechos de texto e precisa prever o proximo token. Quando erra, medimos o erro, propagamos esse erro para tras e ajustamos um pouco seus parametros para que, da proxima vez, o mesmo erro fique menos provavel.

A curva de loss desce em degraus — cada degrau corresponde a um novo padrão que o modelo acabou de aprender. Os quatro regimes de learning rate expõem as armadilhas clássicas: baixo demais e o modelo estagna; alto demais e diverge.

A loss

A loss e uma medida de surpresa. Se a resposta correta recebe muita probabilidade, a loss e baixa. Se recebe pouca probabilidade, a loss sobe.

Imagine que a continuacao correta seja Brasilia:

  • o modelo atribui 80 % a Brasilia → pouca surpresa
  • atribui 2 % a Brasilia → muita surpresa

Treinar consiste em reduzir essa surpresa, passo apos passo, sobre quantidades enormes de texto.

Descida do gradiente

O modelo contem bilhoes de parametros. Cada parametro influencia um pouco as probabilidades finais. Para reduzir a loss, precisamos saber em que direcao mover cada parametro.

E isso que a descida do gradiente faz: calcula a inclinacao da loss em relacao a cada peso e da um pequeno passo morro abaixo.

η (eta) e o learning rate: o tamanho do passo. Pequeno demais, quase nao avancamos. Grande demais, passamos do vale e divergimos.

Adam: a descida, so que melhor

A equacao Parametros ← Parametros − η × Gradiente descreve a descida de gradiente pura. Na pratica, ninguem a usa assim para treinar um LLM.

O otimizador de referencia se chama Adam (e sua variante moderna AdamW). A ideia: em vez de avancar cegamente na direcao do gradiente atual, mantemos uma memoria da direcao media recente (o momentum) e da variancia das atualizacoes para cada parametro.

  • Parametros cujo gradiente aponta sistematicamente na mesma direcao dao passos grandes.
  • Os que oscilam (gradiente ruidoso) dao passos pequenos.

Adam se adapta automaticamente a cada parametro, enquanto o SGD aplica o mesmo learning rate a todos. E mais estavel e converge muito mais rapido na pratica. O AdamW (a versao mais usada hoje) ainda adiciona uma regularizacao chamada weight decay que impede os pesos de explodirem ao longo do treinamento.

Hoje, treinar um LLM sem AdamW e tao raro quanto programar em assembly sem um bom motivo.

Backpropagation

A backpropagation permite distribuir o erro por todo o modelo.

Se a predicao final foi ruim, nao basta ajustar a ultima camada. E preciso descobrir quais embeddings, heads de atencao, camadas feed-forward e normalizacoes contribuiram para o erro. A regra da cadeia calcula essa responsabilidade, camada por camada, da saida para a entrada.

Escala

Um exemplo de treinamento nao ensina muito. Dez milhoes tambem nao bastam. LLMs modernos aprendem com trilhoes de tokens.

A escala muda a natureza do aprendizado:

  • padroes frequentes se estabilizam
  • padroes raros aparecem vezes suficientes para serem aprendidos
  • capacidades que nao foram programadas explicitamente emergem como consequencia da predicao

O modelo nao memoriza cada frase. Ele comprime regularidades estatisticas em seus pesos.

Voltamos a isso em detalhe no capitulo 19 (leis de escala de Kaplan e Chinchilla) — inclusive por que o GPT-3 estava subtreinado em dados e qual e a razao otima entre parametros e tokens.

Batch size: quantos exemplos por vez

Nunca calculamos o gradiente em um unico exemplo. Agrupamos varias sequencias em um batch, calculamos o gradiente medio sobre o batch inteiro e so entao atualizamos os parametros uma vez.

Quanto maior o batch, mais estavel o gradiente (menos ruido) e maior pode ser o learning rate. Mas e preciso ter memoria de GPU suficiente para guardar tudo.

Para os LLMs modernos, o batch size efetivo chega a varios milhoes de tokens — em geral obtido combinando:

  • O batch local (por GPU) — limitado pela VRAM.
  • A gradient accumulation — calcular varios batches pequenos e aplicar a atualizacao so no final.
  • O paralelismo de dados — dividir o batch entre dezenas, centenas, as vezes milhares de GPUs.

O que os engenheiros chamam de global batch size e a quantidade total de dados que contribui para um unico passo de otimizacao. No GPT-4, falamos de milhoes de tokens por passo.

Os dados: metade do trabalho

Falamos muito de parametros. Falamos menos da preparacao dos dados — que toma metade do tempo de qualquer equipe seria que treina um modelo.

  • Filtragem — eliminar conteudo de baixa qualidade (spam, paginas de erro 404, conteudo gerado automaticamente, listas de produtos sem contexto).
  • Deduplicacao — remover duplicatas. O Common Crawl contem muitas copias das mesmas paginas; deixa-las faz o modelo aprender de cor em vez de generalizar.
  • Mistura — equilibrar fontes (Wikipedia, livros, codigo, papers cientificos) pelo seu valor pedagogico, nao pelo tamanho bruto.
  • Filtragem de qualidade — nas melhores equipes, um classificador avalia cada documento para guardar apenas o que se parece com conteudo de manual ou artigo bem pesquisado.
  • Descontaminacao — verificar que os benchmarks de avaliacao (MMLU, HumanEval...) nao vazem para o corpus de treinamento.

Resumo brutal de um pesquisador da Meta: «passamos 10% do tempo treinando o modelo, 90% preparando os dados.»

E tambem por isso que os melhores modelos abertos (Llama, Mistral, DeepSeek) quase nunca revelam os detalhes de sua receita de dados: e a principal vantagem competitiva deles.

O proximo passo

Depois de treinado, o modelo sabe produzir distribuicoes uteis sobre o proximo token. Mas gerar uma resposta nao e simplesmente pegar sempre o maximo. E preciso decidir quanto acaso permitir.

Esse e o tema da geracao e da amostragem.

Atualizado em

Como um LLM aprende (loss, gradiente, backprop) · Step by Token