Detener trabajos de entrenamiento pronto - Amazon SageMaker AI

Detener trabajos de entrenamiento pronto

Detenga pronto los trabajos de entrenamiento que un trabajo de ajuste de hiperparámetros lanza cuando no mejoran de forma significativa de acuerdo con la métrica objetiva. Detener pronto los trabajos de entrenamiento puede ser útil para reducir el tiempo de cómputo y ayuda a evitar ajustes excesivos del modelo. Para configurar un trabajo de ajuste de hiperparámetros para detener los trabajos de entrenamiento pronto, realice una de las siguientes operaciones:

  • Si utiliza el SDK de AWS para Python (Boto 3), establezca el campo TrainingJobEarlyStoppingType del objeto HyperParameterTuningJobConfig que utiliza para configurar el trabajo de ajuste en AUTO.

  • Si utiliza el Amazon SageMaker Python SDK, establezca el parámetro early_stopping_type del objeto HyperParameterTuner en Auto.

  • En la consola de Amazon SageMaker AI, en el flujo de trabajo Crear trabajo de ajuste de hiperparámetros en Finalización anticipada, elija Auto.

Para ver un cuaderno de muestra que ilustra cómo utilizar la finalización anticipada, consulte https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb o abra el cuaderno hpo_image_classification_early_stopping.ipynb en la sección Ajuste de hiperparámetros de los Ejemplos de SageMaker AI en una instancia de cuaderno.

Cómo funciona la detención precoz

Cuando habilita la detención precoz de un trabajo de ajuste de hiperparámetros, SageMaker AI evalúa cada trabajo de entrenamiento que el trabajo de ajuste de hiperparámetros lanza, tal y como se indica a continuación:

  • Después de cada fecha de inicio de entrenamiento, obtiene el valor de la métrica objetiva.

  • Calcula el promedio de ejecución de la métrica objetiva de todos los trabajos de entrenamiento anteriores hasta la misma fecha de inicio y, a continuación, calcula la media de todos los promedios en ejecución.

  • Si el valor de la métrica objetiva del trabajo de entrenamiento actual es peor (superior al minimizar o inferior al maximizar la métrica objetiva) que el valor promedio de la ejecución de los promedios de la métrica objetiva de los trabajos de entrenamiento anteriores hasta la misma fecha de inicio actual, SageMaker AI detiene el trabajo de entrenamiento.

Algoritmos que admiten la detención precoz

Para admitir la detención precoz, un algoritmo debe emitir métricas objetivas para cada fecha de inicio. Los siguientes algoritmos de SageMaker AI integrados admiten la detención precoz:

nota

Esta lista de algoritmos integrados que admiten la detención precoz está actualizada en fecha de 13 de diciembre de 2018. Más adelante probablemente haya más algoritmos integrados que admitan la detención precoz. Si un algoritmo emite una métrica que se puede utilizar como métrica objetiva para un trabajo de ajuste de hiperparámetros (preferiblemente una métrica de validación), esto significa que admite la detención precoz.

Para utilizar la detección precoz con su propio algoritmo, debe escribir sus algoritmos de modo que emitan el valor de la métrica objetiva después de cada fecha de inicio. En la siguiente lista se muestra cómo puede hacerlo en diferentes marcos de trabajo:

TensorFlow

Utilice la clase tf.keras.callbacks.ProgbarLogger. Para obtener más información, consulte la API tf.keras.callbacks.ProgBarLogger.

MXNet

Utilice la mxnet.callback.LogValidationMetricsCallback. Para obtener más información, consulte las API mxnet.callback.

Chainer

Amplíe el chainer mediante la clase extensions.Evaluator. Para obtener más información, consulte la API Chainer.Training.Extensions.Evaluator.

PyTorch y Spark

No hay soporte de tipo general. Tiene que escribir explícitamente su código de entrenamiento de modo que calcule las métricas objetivas y las escriba en registros después de cada fecha de inicio.