Recursos/Entrenamiento de modelos/Qué ocurre durante el entrenamiento

Concepto

Época, lote y paso

Un lote es el grupo de ejemplos detrás de una actualización de pesos, un paso es una actualización y una época es un recorrido completo por los datos de entrenamiento. Juntos deciden con qué frecuencia cambia el modelo y cuántas veces ve cada ejemplo.

Capítulo 65 min de lectura4 referencias

Tres unidades de entrenamiento

Los datos de entrenamiento no se introducen en el modelo ni de un ejemplo a la vez ni todos a la vez. Se dividen en lotes. El modelo procesa un lote, promedia el error de todos sus tokens objetivo y actualiza sus pesos una vez. Esa única actualización es un paso, también llamado iteración. Cuando cada ejemplo de entrenamiento se ha utilizado una vez, se completa una época, y los datos suelen reordenarse antes de la siguiente, de modo que los lotes se mezclan de forma diferente cada vez.

TérminoQué contabilizaTípico en el ajuste fino
LoteLos ejemplos procesados en conjunto antes de una actualizaciónDe un puñado a unas pocas docenas de ejemplos; a menudo Auto
PasoUna actualización de pesosDe decenas a miles por ejecución
ÉpocaUn recorrido completo por todos los ejemplos de entrenamiento1–3 para el ajuste fino supervisado
ÉPOCA 1 · MEZCLADOpaso 1paso 2paso 3ÉPOCA 2 · ALEATORIZADApaso 4paso 5paso 624 ejemplos ÷ tamaño de lote 8 = 3 pasos por época
24 ejemplos con un tamaño de lote de 8. Cada lote proporciona una actualización de pesos (un paso), por lo que una época equivale a 3 pasos y dos épocas a 6. Los datos se mezclan en cada época: el ejemplo resaltado se observa una vez por época, en un lote diferente cada vez.

La aritmética

Lotes, pasos y é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 ejemplos, tamaño de lote de 8, 3 épocas
  1. Pasos por época: 800 ÷ 8 = 100 pasos.
  2. Pasos totales: 100 × 3 épocas = 300 pasos. Los pesos del modelo se modifican 300 veces.
  3. Veces que se observa cada ejemplo: 3, una por época, cada vez en un lote distinto porque los datos se reordenan.
  4. Un calentamiento del 5 %: 0,05 × 300 = 15 pasos de incremento gradual antes de alcanzar la tasa de aprendizaje completa.
  5. Los mismos datos con un tamaño de lote de 32: 800 ÷ 32 = 25 pasos por época, 75 en total. Actualizaciones menos numerosas y más suaves, que suelen combinarse con una tasa de aprendizaje algo mayor.
  6. Tokens procesados: si el archivo de entrenamiento contiene 400.000 tokens, tres épocas procesan 1.200.000, que es lo que se factura en los precios por token.

Cuando los números no se dividen de forma exacta, el último lote de una época es más pequeño: 810 ejemplos en lotes de 8 dan 101 lotes completos y uno de 2. Algunas configuraciones de entrenamiento conservan ese lote parcial, otras lo descartan. En cualquier caso, el efecto sobre una ejecución es insignificante.

Por qué importa el tamaño del lote

El gradiente de cada paso es una estimación de la verdadera dirección descendente, calculada a partir de los ejemplos de ese lote. Un lote pequeño ofrece una estimación ruidosa: los ejemplos individuales desvían los pesos, pero hay muchas actualizaciones por época. Un lote grande promedia más ejemplos, por lo que cada paso apunta de forma más fiable en dirección descendente, pero hay menos pasos y cada uno necesita más memoria de la GPU. La investigación sobre el entrenamiento con lotes grandes muestra rendimientos decrecientes: superado un punto que depende de la tarea, duplicar el lote ya no reduce a la mitad el número de pasos necesarios, y el cálculo adicional se desperdicia en su mayor parte.

La acumulación de gradientes separa el lote que calcula la GPU del lote sobre el que se actualiza el optimizador. La GPU procesa, por ejemplo, 4 ejemplos a la vez y suma los gradientes de 8 de estos microlotes antes de actualizar una vez: un lote efectivo de 32 con el coste de memoria de 4. Con varias GPU, cada una procesa su propio microlote, por lo que el lote efectivo también se multiplica por el número de GPU.

Acumulación de gradientes
per-device batch 4  ×  accumulation 8  ×  1 GPU  =  effective batch 32
memory: as for 4 examples        updates: one per 32 examples

Por qué importa el número de épocas

Una época es la unidad natural para medir cuánto ha visto el modelo. Una época sobre un conjunto de datos pequeño a menudo no basta para cambiar el comportamiento de forma notable; muchas épocas sobre el mismo conjunto pequeño permiten al modelo memorizar respuestas individuales. El ajuste fino supervisado con unos cientos o miles de ejemplos suele utilizar de 1 a 3 épocas, y el ajuste de preferencias de 1 a 2. Los conjuntos de datos pequeños pueden tolerar algunas épocas más; los muy grandes a menudo solo necesitan una.

Dado que las épocas cuentan las repeticiones y los pasos cuentan las actualizaciones, preste atención a ambos. Tres épocas sobre 100 ejemplos con un tamaño de lote de 8 son solo 39 pasos, lo que puede ser muy poco para que una programación de la tasa de aprendizaje cumpla su función. Una época sobre 50.000 ejemplos son 6.250 pasos: muchas actualizaciones y ninguna repetición.

Errores comunes

  • Aumentar las épocas para compensar la falta de datos. Más pasadas sobre 40 ejemplos enseñan esas 40 respuestas, no la tarea.
  • Cambiar el tamaño del lote sin revisar la tasa de aprendizaje. Menos pasos y más grandes suelen requerir una tasa mayor, y viceversa.
  • Copiar un calentamiento definido en pasos de otra ejecución. Si la nueva ejecución tiene muchos menos pasos, un calentamiento fijo puede consumir la mayor parte del entrenamiento.
  • Contar mensajes en lugar de registros de entrenamiento. Dependiendo del formato del proveedor, una conversación con varios objetivos puede convertirse en varios registros.

Referencias y lecturas adicionales

Las fuentes externas se abren en una pestaña nueva.

  1. 01Linear regression: HyperparametersGoogle Machine Learning Crash Course · developers.google.comDefiniciones claras del tamaño del lote y las épocas, con el desarrollo de la aritmética de los pasos por época.
  2. 02TrainerHugging Face Transformers docs · huggingface.coReferencia sobre el tamaño del lote por dispositivo, la acumulación de gradientes, las épocas y el calentamiento como argumentos de entrenamiento reales.
  3. 03An Empirical Model of Large-Batch TrainingMcCandlish et al., 2018 · arXiv · arxiv.orgPor qué los lotes más grandes son útiles hasta cierto punto y luego dejan de dar resultados.
  4. 04Stochastic gradient descentWikipedia · en.wikipedia.org

Convierta semanas de trabajo experto en minutos

Vea cómo Scalata se adapta a su equipo, a sus datos y a sus Controles.

Contactar con ventas