Existen dos tipos de cargas de trabajo de entrenamiento:
- vinculado al procesamiento
- no vinculado al procesamiento
El entrenamiento basado en el procesamiento está limitado por el tiempo que puedes dedicar al entrenamiento, no por la cantidad de datos de entrenamiento que tienes o algún otro factor. En otras palabras, el tiempo de entrenamiento “óptimo” es siempre “siempre y cuando puedas permitirlo”. Si, de algún modo, puede entrenar más tiempo o de manera más eficiente, la pérdida de entrenamiento debería bajar. (con el ajuste adecuado, la pérdida de validación también debería disminuir).
Acelerar el entrenamiento vinculado al procesamiento equivale a mejorar el entrenamiento. Dicho esto, solo porque una carga de trabajo tiene un límite de procesamiento no significa que el entrenamiento sea más largo o más rápido es la única forma de mejorar los resultados.
Cuando el entrenamiento no está vinculado al procesamiento, puedes permitirte entrenar el tiempo que desees. Sin embargo, es posible que entrenar un modelo por más tiempo no ayude mucho o incluso podría causar un sobreajuste. Cuando el entrenamiento no está vinculado al procesamiento, ocurre lo siguiente:
- Puedes entrenar a una pérdida de entrenamiento muy baja, hasta el punto en que el entrenamiento adicional podría reducir la pérdida de entrenamiento, pero no reduce la pérdida de validación de manera significativa.
- Puedes realizar ajustes con más facilidad, especialmente cuando se ajustan los programas de disminución de la tasa de aprendizaje, ya que tienen una interacción particularmente fuerte con el presupuesto de entrenamiento. Por el contrario, obtener una pérdida de entrenamiento baja en el entrenamiento vinculado al procesamiento puede requerir un programa de disminución de la tasa de aprendizaje ajustado a la perfección.
Independientemente de si una carga de trabajo determinada está vinculada al procesamiento o no, los métodos que aumentan la varianza de los gradientes (entre lotes) suelen ralentizar el progreso del entrenamiento y, por lo tanto, pueden aumentar la cantidad de pasos de entrenamiento necesarios para alcanzar una pérdida de validación particular. Cualquiera de las siguientes opciones puede causar una variación de gradiente alta:
- Usar un tamaño de lote más pequeño.
- Agregar aumento de datos
- Agregar algunos tipos de regularización (por ejemplo, la regularización de retirados)
Decide cuánto tiempo entrenar cuando el entrenamiento no está vinculado al procesamiento.
Tu objetivo: entrenar el tiempo suficiente para que el modelo alcance el mejor resultado posible sin desperdiciar los pasos de entrenamiento
Tu objetivo principal es asegurarte de entrenar el tiempo suficiente para que el modelo alcance el mejor resultado posible sin desperdiciar pasos de entrenamiento innecesarios. Si tiene dudas, errece del lado del entrenamiento por más tiempo. Tus métricas de evaluación (por ejemplo, precisión, recuperación, AUC o F1) nunca deben degradarse cuando se entrena más tiempo, suponiendo que usas correctamente la selección retrospectiva y un punto de control con suficiente frecuencia.
Nunca ajuste el número de max_train_steps
en un estudio. En su lugar, elige un valor y úsalo para todas las pruebas. A partir de estas pruebas, traza el paso de entrenamiento que encuentra la selección de puntos de control retrospectiva para definir mejor la elección de max_train_steps
.
Por ejemplo, si el mejor paso siempre es durante el primer 10% de entrenamiento, la cantidad máxima de pasos es demasiado alta.
Como alternativa, si el mejor paso es de manera coherente en el último 25% del entrenamiento, puedes beneficiarte del entrenamiento más largo y volver a ajustar el programa de decaimiento.
La cantidad ideal de pasos de entrenamiento puede cambiar cuando cambia la arquitectura o los datos (por ejemplo, agregar un aumento de datos).
En la siguiente sección, se describe cómo elegir un valor inicial de candidato para max_train_steps
según la cantidad de pasos necesarios a fin de “ajustar perfectamente” el conjunto de entrenamiento con una tasa de aprendizaje constante.
Es posible disminuir max_train_steps
si el proceso de entrenamiento mejora de alguna manera; por ejemplo, con un optimizador mejor ajustado o un programa de tasa de aprendizaje mejor ajustado.
Algoritmo a fin de elegir un candidato inicial para max_train_steps con un barrido de tasa de aprendizaje.
Puedes elegir un candidato inicial para max_train_steps
con un algoritmo de barrido de tasa de aprendizaje. En el siguiente algoritmo, se supone que no solo se ajusta “perfectamente” al conjunto de entrenamiento, sino también mediante un programa de tasa de aprendizaje constante.
- Si es posible adaptarse perfectamente al conjunto de entrenamiento completo, debe existir una configuración (con algún valor de
max_train_steps
) que se adapte perfectamente al conjunto de entrenamiento. Busca cualquier configuración y usa su valor demax_train_steps
como punto de partidaN
. - Ejecuta un barrido de tasa de aprendizaje constante (es decir, la búsqueda de cuadrícula en la tasa de aprendizaje) sin aumento de datos ni regularización, en el que cada prueba se entrena durante
N
pasos. La cantidad de pasos necesarios para que la prueba más rápida en el barrido de la tasa de aprendizaje alcance un rendimiento de entrenamiento perfecto debería ser tu estimación inicial paramax_train_steps
.
NOTA: Los espacios de búsqueda inadecuados pueden generar engaños.
Por ejemplo, si todas las tasas de aprendizaje de un estudio son demasiado pequeñas, podrías concluir de forma incorrecta que se necesita un valor muy grande de max_train_steps
.
Como mínimo, verifica que la tasa de aprendizaje óptima del estudio no se encuentre en el límite del espacio de búsqueda.
Decida cuánto tiempo entrenar para el entrenamiento
En algunos casos, la pérdida de entrenamiento mejora de forma indefinida, por lo que tu paciencia y tus recursos de procesamiento se convierten en los factores limitantes. Pero ¿debes entrenar el mayor tiempo posible? No necesariamente. Tenga en cuenta lo siguiente:
- Podrías realizar un ajuste más eficaz mediante la ejecución de una cantidad mayor de experimentos más cortos y reservar las ejecuciones de “duración de la producción” más largas para los modelos que esperas lanzar.
- A medida que el tiempo de entrenamiento de las pruebas se acerca al límite de paciencia, los experimentos de ajuste se vuelven más relevantes para los posibles candidatos de lanzamiento, pero puedes completar menos.
- Es probable que puedas responder muchas preguntas mientras entrenas solo alrededor de un 10% de la duración de la producción. Sin embargo, es posible que tus conclusiones en este límite de tiempo no se apliquen a los experimentos que tengan el 20% de la duración de la producción, y mucho menos el 100%.
El ajuste durante varias rondas con límites de pasos de entrenamiento cada vez más altos es un enfoque razonable. Puedes ejecutar todas las rondas que quieras, pero, por lo general, una o más rondas son las más prácticas. Básicamente, intenta obtener la mayor comprensión posible del problema mediante pruebas con un tiempo de respuesta muy rápido, lo que te permite realizar las siguientes acciones:
- Precisión de la configuración.
- Relevancia respecto de las carreras más largas y largas.
Una vez que un límite de tiempo determinado por prueba haya generado estadísticas útiles, aumenta el tiempo de entrenamiento y continúa afinando, verificando tus conclusiones de las ejecuciones más cortas según sea necesario. Como punto de partida, recomendamos dos rondas de ajuste:
- Ronda 1: las ejecuciones de menos duración para encontrar buenos hiperparámetros de modelos y optimizadores.
- Ronda 2: Muy pocas ejecuciones de larga duración en buenos puntos de hiperparámetros para obtener el modelo final.
La pregunta más importante que se va desde la Primera ronda hasta la 2a ronda es:
¿Cómo se ajustan los programas de disminución de la tasa de aprendizaje?
Un error común en el ajuste de los programas de tasa de aprendizaje entre rondas es usar todos los pasos de entrenamiento adicionales con una tasa de aprendizaje demasiado pequeña.
Ronda 1: muchas carreras de entrenamiento breves
Por desgracia, no hay garantía de que los hiperparámetros adecuados que se encuentran en el entrenamiento corto y incompleto sean buenas opciones cuando aumentas considerablemente la duración del entrenamiento. Sin embargo, en el caso de algunos hiperparámetros, las buenas opciones suelen correlacionarse lo suficiente para que la ronda 1 sea útil. ¿Qué valores de hiperparámetros encontrados en ejecuciones más cortas se transfieren con éxito a ejecuciones más largas? No lo sabemos; necesitamos investigar más. Sin embargo, según lo que sabemos hasta ahora, estas son nuestras sospechas de que habrá menos probabilidades de transferir los datos:
- Es muy probable que se transfiera. La inestabilidad temprana del entrenamiento se puede resolver en la primera ronda de ajuste mediante una cantidad menor de pasos de entrenamiento.
Los siguientes hiperparámetros son los más propensos a la transferencia:
- Duración del calentamiento
- Inicialización
- Es probable que se transfiera. Por lo general, se transfiere una ganancia significativa en la arquitectura del modelo, pero es probable que haya muchos contraejemplos.
- Podría transferirse. Se pueden transferir los siguientes hiperparámetros:
- El algoritmo de optimización y los hiperparámetros se transferirán "de manera no estricta".
- Magnificación de datos.
- Regularización. Si no es posible ajustar perfectamente el conjunto de entrenamiento, es posible que el modelo esté en un régimen en el que es poco probable que la regularización ayude mucho.
- Es poco probable que se transfiera. Es poco probable que la programación de la tasa de aprendizaje se transfiera a la perfección. Entrenar modelos de lenguaje grande óptimos para procesamiento sugiere que incluso el programa de decaimiento se transfiere, pero no creemos que esto sea cierto en general. Por ejemplo, ajustar el decaimiento en una pequeña cantidad de pasos de entrenamiento y, luego, extenderlo a una gran cantidad provoca que la mayor parte del entrenamiento ocurra en pasos demasiado pequeños. Es probable que hagas un “bueno tiempo” con la mayoría de los programas al límite del presupuesto de entrenamiento extremo, pero es probable que notes mejoras significativas en el rendimiento si se ajusta. En Comprende el sesgo de corto plazo en la metaoptimización estocástica, se describen los peligros de elegir las tasas de aprendizaje de forma miótica.
Ronda 2: menos ejecuciones, pero de mayor duración
Ejecutar la mejor configuración de hiperparámetros de la ronda 1
Especulación: 鉛 Usa los pasos adicionales para extender el período de entrenamiento a una tasa de aprendizaje alta. Por ejemplo, si usas un programa lineal, mantén fija la longitud de la disminución de la Primera ronda y extiende el período de constante lr
al principio. Para el deterioro del coseno, mantén la base lr
de la 1a ronda y extiende max_train_steps
como se describe en Entrena modelos de lenguajes grandes de Compute-Optimal.
Es posible que las rondas de capacitación adicionales sean útiles para los equipos que cumplen con los siguientes requisitos:
- Modelado muy maduro
- Ajuste de canalizaciones
- Ejecuciones de entrenamiento de producción muy largas y costosas
Sin embargo, las ejecuciones de entrenamiento adicionales suelen ser poco productivas.
Ya describimos cómo realizar la transferencia de la Ronda 1 a la Ronda 2. Si no te importa el tiempo de análisis y si tu uso consiste en hacer un uso eficiente de los recursos de procesamiento, te recomendamos que aumentes de manera exponencial la duración de las ejecuciones de entrenamiento (y, por lo tanto, el tiempo de extremo a extremo para completar un estudio) en muchas rondas diferentes de ajuste:
- En cada ronda, asegúrate sistemáticamente de que tus elecciones sigan proporcionando buenos resultados.
- Pasa nuevas ideas a través de una canalización que las desaproveche progresivamente mediante experimentos cada vez más largos desde el paso i hasta el paso i+1.