Interromper trabalhos de treinamento precocemente - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Interromper trabalhos de treinamento precocemente

Interrompa trabalhos de treinamento iniciados precocemente por um trabalho de ajuste de hiperparâmetros quando eles não estiverem melhorando significativamente, conforme medido pela métrica objetiva. A interrupção precoce de trabalhos de treinamento pode ajudar a reduzir o tempo de computação e ajuda a evitar o sobreajuste do seu modelo. Para configurar um trabalho de ajuste de hiperparâmetros para interromper trabalhos de treinamento antecipadamente, siga um destes procedimentos:

  • Se você estiver usando o AWS SDK for Python (Boto3), defina o TrainingJobEarlyStoppingType campo do HyperParameterTuningJobConfigobjeto que você usa para configurar o trabalho de ajuste. AUTO

  • Se você estiver usando o Amazon SageMaker Python SDK, defina o early_stopping_type parâmetro do HyperParameterTunerobjeto como. Auto

  • No SageMaker console da Amazon, no fluxo de trabalho Create hyperparameter tuning job, em Early stop, escolha Auto.

Para obter um exemplo de caderno que demonstra como usar a parada antecipada, consulte https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb ou abra o hpo_image_classification_early_stopping.ipynb notebook na seção Ajuste de hiperparâmetros dos SageMaker exemplos em uma instância do notebook. Para obter informações sobre como usar os blocos de anotações de amostra em uma instância de bloco de anotações, consulte Blocos de anotações de exemplo.

Como funciona a interrupção precoce

Quando você ativa a parada antecipada para uma tarefa de ajuste de hiperparâmetros, SageMaker avalia cada tarefa de treinamento que a tarefa de ajuste de hiperparâmetros é iniciada da seguinte forma:

  • Após cada epoch de treinamento, obtenha o valor da métrica objetiva.

  • Calcule a média de execução da métrica objetiva de todos os trabalhos de treinamento anteriores até o mesmo epoch e, em seguida, calcule a mediana de todas as médias de execução.

  • Se o valor da métrica objetiva para o trabalho de treinamento atual for pior (maior ao minimizar ou menor ao maximizar a métrica do objetivo) do que o valor médio das médias de execução da métrica do objetivo para trabalhos de treinamento anteriores até a mesma época, o trabalho de treinamento atual será SageMaker interrompido.

Algoritmos que oferecem suporte para interrupção precoce

Para oferece suporte à interrupção precoce, um algoritmo deve emitir métricas objetivas para cada epoch. Os seguintes SageMaker algoritmos integrados oferecem suporte à parada antecipada:

nota

Essa lista de algoritmos internos que oferecem suporte para interrupção precoce é atual desde 13 de dezembro de 2018. Outros algoritmos integrados poderão oferece suporte à interrupção precoce no futuro. Se um algoritmo emitir uma métrica que possa ser usada como uma métrica objetiva para um trabalho de ajuste de hiperparâmetros (preferencialmente uma métrica de validação), ele oferecerá suporte para a interrupção precoce.

Para usar a interrupção precoce com seu próprio algoritmo, você deve escrever esse algoritmo de modo que ele emita o valor da métrica objetiva após cada epoch. A lista a seguir mostra como você pode fazer isso em diferentes estruturas:

TensorFlow

Use a classe tf.keras.callbacks.ProgbarLogger. Para obter informações, consulte tf.keras.callbacks. ProgbarLogger API.

MXNet

Use a mxnet.callback.LogValidationMetricsCallback. Para obter informações, consulte mxnet.callback APIs.

Chainer

Estenda o Chainer usando a classe extensions.Evaluator. Para obter informações, consulte o APIChainer.Training.Extensions.Evaluator.

PyTorch e Spark

Não há suporte de alto nível. Você deve escrever explicitamente seu código de treinamento para que ele calcule as métricas objetivas e as grave nos logs após cada epoch.