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
TrainingJobEarlyStoppingTypedel objetoHyperParameterTuningJobConfigque utiliza para configurar el trabajo de ajuste enAUTO. -
Si utiliza el Amazon SageMaker Python SDK
, establezca el parámetro early_stopping_typedel objeto HyperParameterTuneren 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.ipynbhpo_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:
-
Algoritmo de aprendizaje lineal: solo se admite si se utiliza
objective_losscomo métrica objetiva.
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.