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