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.
| Termo | O que contabiliza | Típico no ajuste fino |
|---|---|---|
| Lote | Os exemplos processados em conjunto antes de uma atualização | De alguns poucos a algumas dezenas de exemplos; frequentemente Auto |
| Passo | Uma atualização de peso | Dezenas a milhares por execução |
| Época | Uma passagem completa por todos os exemplos de treinamento | 1–3 para ajuste fino supervisionado |
A aritmética
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- Etapas por época: 800 ÷ 8 = 100 etapas.
- Total de etapas: 100 × 3 épocas = 300 etapas. Os pesos do modelo são alterados 300 vezes.
- Vezes que cada exemplo é visto: 3, uma vez por época, cada vez em um lote diferente porque os dados são reembaralhados.
- Um aquecimento de 5%: 0,05 × 300 = 15 etapas de aceleração antes que a taxa de aprendizado total seja atingida.
- 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.
- 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.
per-device batch 4 × accumulation 8 × 1 GPU = effective batch 32
memory: as for 4 examples updates: one per 32 examplesPor 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.
- 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.
- 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.
- 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.
- 04Stochastic gradient descentWikipedia · en.wikipedia.org