Interrompere in anticipo i processi di addestramento - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Interrompere in anticipo i processi di addestramento

Interrompi in anticipo i processi di addestramento avviati da un processo di ottimizzazione degli iperparametri quando non stanno migliorando in modo significativo in base alle misurazioni eseguite con il parametro obiettivo. L'interruzione anticipata dei processi di addestramento può aiutare a ridurre il tempo di calcolo e consente di evitare l'overfitting del modello. Per configurare un processo di ottimizzazione degli iperparametri per arrestare i processi di addestramento in anticipo, procedi in uno dei seguenti modi:

  • Se utilizzate l' AWS SDK for Python (Boto3), TrainingJobEarlyStoppingType impostate il campo HyperParameterTuningJobConfigdell'oggetto su cui configurare il processo di ottimizzazione. AUTO

  • Se utilizzi l'SDK Amazon SageMaker Python, imposta il early_stopping_type parametro dell'HyperParameterTuneroggetto su. Auto

  • Nella SageMaker console Amazon, nel flusso di lavoro Crea processo di ottimizzazione iperparametrica, in Arresto anticipato, scegli Auto.

Per un notebook di esempio che dimostra come utilizzare l'arresto anticipato, consulta https://github.com/awslabs/ amazon-sagemaker-examples /blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb o apri il notebook nella sezione Hyperparameter Tuning degli esempi in un'istanza di notebook. hpo_image_classification_early_stopping.ipynb SageMaker Per informazioni su come utilizzare i notebook di esempio in un'istanza del notebook, consulta Notebook di esempio.

Come funziona l'interruzione anticipata

Quando si abilita l'arresto anticipato per un processo di ottimizzazione degli iperparametri, SageMaker valuta ogni processo di addestramento avviato dal processo di ottimizzazione degli iperparametri nel modo seguente:

  • Dopo ogni epoca (Unix epoch) di addestramento, ottieni il valore del parametro obiettivo.

  • Calcola la media mobile del parametro obiettivo per tutti i processi di addestramento precedenti fino alla stessa epoca, quindi calcola la mediana di tutte le medie mobili.

  • Se il valore della metrica oggettiva per il lavoro di formazione corrente è peggiore (superiore quando si minimizza o inferiore quando si massimizza la metrica dell'obiettivo) rispetto al valore mediano delle medie correnti della metrica oggettiva per i lavori di formazione precedenti fino alla stessa epoca, si interrompe il lavoro di formazione corrente. SageMaker

Algoritmi che supportano l'interruzione anticipata

Per supportare l'interruzione anticipata, un algoritmo deve emettere parametri obiettivi per ogni epoca. I seguenti algoritmi integrati supportano l'arresto anticipato: SageMaker

Nota

Questo elenco di algoritmi predefiniti che supportano l'interruzione anticipata è aggiornato al 13 dicembre 2018. In futuro, potrebbero essere aggiunti altri algoritmi predefiniti a questo elenco. Se un algoritmo emette un parametro che può essere utilizzato come parametro obiettivo per un processo di ottimizzazione degli iperparametri (preferibilmente un parametro di convalida), supporta l'interruzione anticipata.

Per utilizzare l'interruzione anticipata con un algoritmo personalizzato, devi scrivere gli algoritmi in modo che emettano il valore del parametro obiettivo dopo ogni epoca. L'elenco seguente mostra in che modo farlo in diversi scenari:

TensorFlow

Utilizza la classe tf.keras.callbacks.ProgbarLogger. Per informazioni, consulta tf.keras.callbacks. ProgbarLogger API.

MXNet

Utilizzo della mxnet.callback.LogValidationMetricsCallback. Per informazioniconsultate le API mxnet.callback.

Chainer

Estendi Chainer utilizzando la classe extensions.Evaluator. Per informazioni, consulta l'API chainer.training.extensions.Evaluator.

PyTorch e Spark

Non è fornito supporto di alto livello. Devi scrivere esplicitamente il codice di addestramento in modo che calcoli i parametri obiettivi e li scriva nei log dopo ogni epoca.