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

Conceito

O loop de treinamento

O fine-tuning é um procedimento curto repetido milhares de vezes: prever a resposta alvo, medir o quão errada foi a previsão, calcular para qual direção cada peso deve se mover e movê-lo um pouco.

Capítulo 65 min de leitura5 referências

O que é

Um modelo de linguagem é uma função muito grande com bilhões de números ajustáveis, seus pesos. Dado um texto, ele gera uma probabilidade para cada possível próximo token. O fine-tuning altera esses pesos para que, dado o seu tipo de contexto, o modelo atribua uma alta probabilidade ao tipo de resposta que você deseja. O loop de treinamento é o procedimento que faz isso. Não se trata de uma única operação inteligente, mas de uma etapa simples, repetida muitos milhares de vezes, onde cada repetição ajusta levemente os pesos.

UM LOTEex. 8 exemplos1. Passagem diretaprever o alvo, token por token2. Perdaquão errado estava? (entropia cruzada)3. Passagem reversagradiente para cada peso treinável4. Atualizaçãotamanho da etapa = taxa de aprendizado
Uma etapa de treinamento. Repita-a para cada lote e você terá concluído uma época; repita a época e o modelo verá cada exemplo novamente.

Como funciona uma etapa

1. Passagem direta. Um lote de exemplos passa pelo modelo. Em cada posição de cada resposta de destino, o modelo produz uma distribuição de probabilidade sobre todo o seu vocabulário, frequentemente de 100.000 tokens ou mais, para o que vem a seguir. Como a resposta verdadeira já é conhecida, todas as posições são previstas em paralelo em uma única passagem. O modelo sempre vê os tokens anteriores corretos em vez de suas próprias suposições, uma técnica chamada teacher forcing.

2. Perda. Para cada token de destino, a perda é o logaritmo negativo da probabilidade que o modelo atribuiu ao token correto. A perda do lote é a média de todos os seus tokens de destino. Os tokens de contexto (o prompt do sistema, turnos anteriores, a mensagem do usuário) são lidos, mas mascarados dessa média, de modo que apenas as respostas que você escolheu como destinos sejam avaliadas.

Perda de entropia cruzada em um lote
loss = − (1 / N) × Σ log p(correct token | everything before it)

N = the number of target tokens in the batch
context tokens are masked: read, never scored
Entropia cruzada em três tokens
  1. O modelo atribui ao próximo token correto uma probabilidade de 0,9: perda = −ln 0,9 ≈ 0,11.
  2. Uma probabilidade de 0,5: perda = −ln 0,5 ≈ 0,69.
  3. Uma probabilidade de 0,05: perda = −ln 0,05 ≈ 3,00.
  4. Média dos três tokens: (0,11 + 0,69 + 3,00) ÷ 3 ≈ 1,26. Um token incorreto com alta confiança domina a pontuação.
  5. Para fins de escala: um modelo adivinhando aleatoriamente entre 100.000 tokens pontuaria ln 100.000 ≈ 11,5. As perdas de fine-tuning começam muito abaixo disso, porque o modelo base já é um bom adivinhador; o treinamento o refina com base nas suas respostas.

3. Passagem inversa. A retropropagação calcula o gradiente de cada peso treinável: o quanto a perda mudaria se esse peso se movesse uma quantia ínfima, e em qual direção. Isso custa aproximadamente o dobro do processamento da passagem direta e requer os valores intermediários (ativações) salvos durante a passagem direta. É por isso que exemplos mais longos e lotes maiores exigem mais memória de GPU.

4. Atualização. O otimizador altera cada peso em oposição ao seu gradiente, dimensionado pela taxa de aprendizado. Em sua forma mais simples, a descida de gradiente pura, a regra é uma única linha.

Descida de gradiente
gradient  = ∂loss / ∂w        how the loss changes when w changes
w (new)   = w − learning_rate × gradient
perdavalor de um pesoinclinação íngreme no início,portanto, um grande primeiro passoMENOR PERDApasso =taxa de aprendizado× gradiente
Descida do gradiente com um único peso. O gradiente é a inclinação da perda no valor atual; cada atualização desce a encosta pela taxa de aprendizado multiplicada por essa inclinação. Os passos encolhem por conta própria à medida que a inclinação se achata perto do fundo. Um modelo real faz isso para bilhões de pesos de uma só vez.

O otimizador: Adam e AdamW

Os modelos de linguagem quase sempre são treinados com Adam ou sua variante AdamW, em vez da descida de gradiente pura. O Adam mantém duas médias contínuas para cada peso: o gradiente médio (momentum, que suaviza o ruído de um lote para o próximo) e o gradiente quadrado médio (que dimensiona a etapa de cada peso, para que pesos com gradientes consistentemente grandes não deem passos enormes e os raramente atualizados não fiquem estagnados). O resultado é que cada peso se move aproximadamente pela taxa de aprendizado por etapa, independentemente do tamanho bruto de seu gradiente.

O AdamW altera como o decaimento de peso, uma atração suave dos pesos em direção a zero que desencoraja valores extremos, é aplicado: ele é subtraído diretamente dos pesos em vez de ser misturado ao gradiente, o que funciona de forma mais confiável com o dimensionamento por peso do Adam. É o otimizador padrão em bibliotecas de treinamento comuns.

Uma atualização AdamW, para um peso
m = β1 · m + (1 − β1) · g        running average of gradients (momentum)
v = β2 · v + (1 − β2) · g²       running average of squared gradients
w = w − lr · m̂ / (√v̂ + ε)        a step scaled separately for every weight
w = w − lr · λ · w               decoupled weight decay (the "W" in AdamW)

g = gradient,  m̂ and v̂ = bias-corrected m and v
usual defaults: β1 = 0.9,  β2 = 0.999,  ε = 1e-8

Essas duas médias móveis são armazenadas em precisão de 32 bits para cada peso treinável: 8 bytes por peso, além dos próprios pesos e gradientes. Esse é o principal motivo pelo qual o fine-tuning completo exige tanta memória, e por que o LoRA, que treina apenas um pequeno adaptador, precisa de tão pouca.

Das etapas ao modelo finalizado

  • As etapas somam épocas. Uma passagem por todos os exemplos de treinamento é uma época; uma execução de fine-tuning geralmente leva de uma a algumas épocas.
  • A taxa de aprendizado muda durante a execução. Um cronograma geralmente a aumenta brevemente (warm-up) e depois a reduz em direção a zero, para que as etapas iniciais não desestabilizem o modelo e as etapas finais façam ajustes precisos.
  • A validação ocorre em paralelo. De tempos em tempos, o modelo é pontuado em exemplos separados sem atualizar nenhum peso. Essa perda de validação mostra se ele está aprendendo o padrão ou memorizando seus exemplos.
  • O resultado são novos pesos: seja um modelo atualizado completo ou um pequeno adaptador que é aplicado sobre o modelo base inalterado.

Erros comuns

  • Interpretar a perda como uma pontuação de qualidade. A perda indica quão bem o modelo prevê seus tokens de destino, não se suas respostas são boas; uma avaliação responde a isso.
  • Comparar valores de perda entre diferentes modelos base. Cada um possui seu próprio tokenizador, portanto, os números não estão na mesma escala.
  • Esperar que o treinamento corrija destinos errados. O loop reduz fielmente a perda em quaisquer respostas que você marcar como destinos, incluindo os erros.
  • Presumir que o modelo aprende regras. Ele aprende tendências a partir de muitos pequenos ajustes, de modo que um comportamento demonstrado em apenas dois exemplos é dificilmente aprendido.

Referências e leitura complementar

Fontes externas abrem em uma nova aba.

  1. 01Optimizing Model ParametersPyTorch Tutorials · pytorch.orgO loop em cerca de vinte linhas de código: passagem direta, perda, passagem reversa, etapa do otimizador.
  2. 02Linear regression: Gradient descentGoogle Machine Learning Crash Course · developers.google.comUma introdução interativa a gradientes e perda no modelo mais simples possível.
  3. 03Adam: A Method for Stochastic OptimizationKingma & Ba, 2014 · arXiv · arxiv.orgO artigo original do Adam, com a regra de atualização e suas configurações padrão.
  4. 04Decoupled Weight Decay RegularizationLoshchilov & Hutter, 2017 · arXiv · arxiv.orgApresenta o AdamW e explica por que o decaimento de peso deve ser separado do gradiente.
  5. 05Cross-entropyWikipedia · en.wikipedia.org

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