Arrêter de manière précoce des tâches d'entraînement - Amazon SageMaker

Arrêter de manière précoce des tâches d'entraînement

Arrêtez plus tôt que prévu les tâches d'entraînement lancées par une tâche de réglage d'hyperparamètres en cas d'absence d'amélioration significative selon la métrique d'objectif. L'arrêt précoce de tâches d'entraînement peut vous aider à réduire les temps de calcul et vous permet d'éviter un réglage excessif de votre modèle. Pour configurer une tâche de réglage des hyperparamètres afin d'arrêter de façon précoce les tâches d'entraînement, effectuez l'une des actions suivantes :

  • Si vous utilisez le kit SDK AWS for Python (Boto 3), définissez le champ TrainingJobEarlyStoppingType de l'objet HyperParameterTuningJobConfig que vous utilisez pour configurer la tâche de réglage sur AUTO.

  • Si vous utilisez le kit SDK Amazon SageMaker for Python, définissez le paramètre early_stopping_type de l'objet HyperParameterTuner sur Auto.

  • Dans la console Amazon SageMaker, dans le flux Create hyperparameter tuning job (Créer une tâche de réglage des hyperparamètres), sous Early stopping (Arrêt anticipé), choisissez Auto.

Pour obtenir un exemple de bloc-notes qui montre comment utiliser l'arrêt anticipé, veuillez consulter https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb ou ouvrez le bloc-notes hpo_image_classification_early_stopping.ipynb dans la section Hyperparameter Tuning (Réglage des hyperparamètres) de SageMaker Examples (Exemples SageMaker) dans une instance de bloc-notes. Pour obtenir des informations sur l'utilisation d'exemples de bloc-notes dans une instance de bloc-notes, veuillez consulter Exemples de blocs-notes.

Comment fonctionne l'arrêt précoce

Lorsque vous activez l'arrêt anticipé d'une tâche de réglage des hyperparamètres, SageMaker évalue chaque tâche d'entraînement lancée par la tâche de réglage des hyperparamètres comme suit :

  • Obtention la valeur de la métrique d'objectif après chaque époque d'entraînement.

  • Calcul de la moyenne d'exécution de la métrique d'objectif pour toutes les tâches d'entraînement précédentes jusqu'à cette époque, puis calcul de la valeur médiane de tous les moyennes en cours d'exécution.

  • Si la valeur de la métrique d'objectif pour la tâche d'entraînement en cours est pire (supérieure lors de la minimisation ou inférieure lors de la maximisation de la métrique d'objectif) que la valeur médiane des moyennes en cours d'exécution de la métrique d'objectif pour les tâches d'entraînement précédentes jusqu'à la même époque, SageMaker arrête la tâche d'entraînement actuelle.

Algorithmes prenant en charge l'arrêt précoce

Pour prendre en charge l'arrêt précoce, un algorithme doit émettre des métriques d'objectif pour chaque époque. Les algorithmes SageMaker intégrés suivants prennent en charge l'arrêt anticipé :

Note

Cette liste des algorithmes intégrés qui prennent en charge l'arrêt précoce date du 13 décembre 2018. D'autres algorithmes intégrés pourront prendre en charge l'arrêt précoce. Si un algorithme émet une métrique susceptible d'être utilisée comme métrique d'objectif pour une tâche de réglage d'hyperparamètres (de préférence une métrique de validation), il prend en charge l'arrêt précoce.

Pour utiliser l'arrêt précoce avec votre propre algorithme, vous devez l'écrire de manière à ce qu'il émette la valeur de la métrique d'objectif après chaque époque. La liste suivante indique comment procéder dans différentes infrastructures :

TensorFlow

Utilisez la classe tf.keras.callbacks.ProgbarLogger. Pour plus d'informations, consultez https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ProgbarLogger.

MXNet

Utilisez le mxnet.callback.LogValidationMetricsCallback. Pour plus d'informations, consultez https://mxnet.apache.org/api/python/callback/callback.html.

Chainer

Étendez Chainer au moyen de la classe extensions.Evaluator. Pour plus d'informations, consultez https://docs.chainer.org/en/v1.24.0/reference/extensions.html#evaluator.

PyTorch et Spark

Il n'y a pas de prise en charge de haut niveau. Vous devez explicitement écrire votre code d'entraînement afin qu'il calcule les métriques d'objectif et les écrive dans les journaux après chaque époque.