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

Conceito

Época, lote e passo

Um lote é o grupo de exemplos por trás de uma atualização de peso, um passo é uma atualização e uma época é uma passagem completa pelos dados de treinamento. Juntos, eles decidem com que frequência o modelo muda e quantas vezes ele vê cada exemplo.

Capítulo 65 min de leitura4 referências

Três unidades de treinamento

Os dados de treinamento não são fornecidos ao modelo um exemplo por vez, nem todos de uma vez. Eles são divididos em lotes. O modelo processa um lote, calcula a média do erro sobre todos os seus tokens de destino e atualiza seus pesos uma vez. Essa única atualização é uma etapa, também chamada de iteração. Quando todos os exemplos de treinamento foram usados uma vez, uma época é concluída, e os dados geralmente são embaralhados antes da próxima, para que os lotes se misturem de forma diferente a cada vez.

TermoO que contabilizaTípico no ajuste fino
LoteOs exemplos processados em conjunto antes de uma atualizaçãoDe alguns poucos a algumas dezenas de exemplos; frequentemente Auto
PassoUma atualização de pesoDezenas a milhares por execução
ÉpocaUma passagem completa por todos os exemplos de treinamento1–3 para ajuste fino supervisionado
ÉPOCA 1 · EMBARALHADOpasso 1passo 2passo 3ÉPOCA 2 · REEMBARALHADOpasso 4passo 5passo 624 exemplos ÷ tamanho do lote 8 = 3 passos por época
24 exemplos com um tamanho de lote de 8. Cada lote fornece uma atualização de peso (uma etapa), portanto, uma época equivale a 3 etapas e duas épocas a 6. Os dados são embaralhados a cada época: o exemplo destacado é visto uma vez por época, em um lote diferente a cada vez.

A aritmética

Lotes, etapas e épocas
effective batch  = per-device batch × gradient accumulation × number of GPUs
steps per epoch  = ceil(training examples ÷ effective batch)
total steps      = steps per epoch × epochs
tokens processed = tokens in the training file × epochs
800 exemplos, tamanho de lote 8, 3 épocas
  1. Etapas por época: 800 ÷ 8 = 100 etapas.
  2. Total de etapas: 100 × 3 épocas = 300 etapas. Os pesos do modelo são alterados 300 vezes.
  3. Vezes que cada exemplo é visto: 3, uma vez por época, cada vez em um lote diferente porque os dados são reembaralhados.
  4. Um aquecimento de 5%: 0,05 × 300 = 15 etapas de aceleração antes que a taxa de aprendizado total seja atingida.
  5. Os mesmos dados com tamanho de lote 32: 800 ÷ 32 = 25 etapas por época, 75 no total. Atualizações mais suaves e em menor número, geralmente combinadas com uma taxa de aprendizado um pouco mais alta.
  6. Tokens processados: se o arquivo de treinamento contiver 400.000 tokens, três épocas processam 1.200.000, que é o que a precificação por token cobra.

Quando os números não se dividem de forma exata, o último lote de uma época é menor: 810 exemplos em lotes de 8 resultam em 101 lotes completos e um de 2. Algumas configurações de treinamento mantêm esse lote parcial, outras o descartam. De qualquer forma, o efeito em uma execução é insignificante.

Por que o tamanho do lote é importante

O gradiente de cada etapa é uma estimativa da verdadeira direção descendente, feita a partir dos exemplos daquele lote. Um lote pequeno fornece uma estimativa ruidosa: exemplos individuais puxam os pesos em várias direções, mas há muitas atualizações por época. Um lote grande calcula a média de mais exemplos, de modo que cada etapa aponta de forma mais confiável para baixo, mas há menos etapas, e cada uma exige mais memória da GPU. Pesquisas sobre treinamento com lotes grandes mostram retornos decrescentes: além de um ponto que depende da tarefa, dobrar o lote não reduz mais pela metade o número de etapas necessárias, e o processamento extra é em grande parte desperdiçado.

O acúmulo de gradiente separa o lote que a GPU calcula do lote no qual o otimizador é atualizado. A GPU processa, digamos, 4 exemplos por vez e soma os gradientes de 8 desses microlotes antes de atualizar uma vez: um lote efetivo de 32 com o custo de memória de 4. Com várias GPUs, cada uma processa seu próprio microlote, de modo que o lote efetivo também é multiplicado pelo número de GPUs.

Acúmulo de gradiente
per-device batch 4  ×  accumulation 8  ×  1 GPU  =  effective batch 32
memory: as for 4 examples        updates: one per 32 examples

Por que o número de épocas é importante

Uma época é a unidade natural para o quanto o modelo já viu. Uma época em um pequeno conjunto de dados geralmente não é suficiente para alterar o comportamento de forma perceptível; muitas épocas sobre o mesmo conjunto pequeno permitem que o modelo memorize respostas individuais. O ajuste fino supervisionado em algumas centenas a alguns milhares de exemplos normalmente usa de 1 a 3 épocas, e o ajuste de preferência de 1 a 2. Conjuntos de dados pequenos podem tolerar algumas épocas a mais; os muito grandes frequentemente precisam de apenas uma.

Como as épocas contam as repetições e as etapas contam as atualizações, fique de olho em ambas. Três épocas sobre 100 exemplos com tamanho de lote 8 representam apenas 39 etapas, o que pode ser muito pouco para que um cronograma de taxa de aprendizado cumpra sua função. Uma época sobre 50.000 exemplos representa 6.250 etapas: muitas atualizações e nenhuma repetição.

Erros comuns

  • Aumentar as épocas para compensar a falta de dados. Mais passagens por 40 exemplos ensinam essas 40 respostas, não a tarefa.
  • Alterar o tamanho do lote sem revisar a taxa de aprendizado. Etapas maiores e em menor número geralmente exigem uma taxa maior, e vice-versa.
  • Copiar um aquecimento dado em etapas de outra execução. Se a nova execução tiver muito menos etapas, um aquecimento fixo pode consumir a maior parte do treinamento.
  • Contar mensagens em vez de registros de treinamento. Dependendo do formato do provedor, uma conversa com vários alvos pode se tornar vários registros.

Referências e leitura complementar

Fontes externas abrem em uma nova aba.

  1. 01Linear regression: HyperparametersGoogle Machine Learning Crash Course · developers.google.comDefinições claras de tamanho de lote e épocas, com a aritmética de etapas por época detalhada.
  2. 02TrainerHugging Face Transformers docs · huggingface.coReferência para o tamanho do lote por dispositivo, acúmulo de gradiente, épocas e aquecimento como argumentos reais de treinamento.
  3. 03An Empirical Model of Large-Batch TrainingMcCandlish et al., 2018 · arXiv · arxiv.orgPor que lotes maiores ajudam até certo ponto e depois deixam de valer a pena.
  4. 04Stochastic gradient descentWikipedia · 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