提前停止訓練任務 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

提前停止訓練任務

依據目標指標所測,當超參數調校任務啟動的訓練任務未有大幅改善時,即可提早停止該任務。提前停止訓練任務有助於降低運算時間,並可協助您避免過度擬合模型。若要設定超參數調校任務以提前停止訓練任務,請執行下列其中一項操作:

  • 如果您使用的是 Python AWS 版 SDK (Boto3),請將用於設定調整工作的HyperParameterTuningJobConfig物件TrainingJobEarlyStoppingType欄位設定為。AUTO

  • 如果您使用的是 Amazon SageMaker Python 開發套件,請將HyperParameter調諧器物件的early_stopping_type參數設定為Auto

  • 在 Amazon SageMaker 主控台的「建立超參數調整任務」工作流程的「提前停止」下,選擇「自動」。

如需示範如何使用提前停止的範例筆記本,請參閱 https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb 或在hpo_image_classification_early_stopping.ipynb筆記本執行個體SageMaker 範例的「超參數調整」區段中開啟筆記本。如需如何在筆記本執行個體中使用範例筆記本的資訊,請參閱範例筆記本

提早停止的運作方式

當您針對超參數調整工作啟用提前停止時, SageMaker 會評估超參數調整工作啟動的每個訓練工作,如下所示:

  • 在每個 epoch 的訓練之後,取得目標指標的值。

  • 計算所有先前訓練任務 (直到相同 epoch) 目標指標的執行中平均值,然後計算所有執行中平均值的中間值。

  • 如果目前訓練工作的目標量度值差 (在最大化目標量度時最小化時較高,或在最大化目標量度時較低),則會停止目前訓練工作直至相同時期的目標量度執行平均值中位數,則會 SageMaker 停止目前的訓練工作。

支援提早停止的演算法

為了支援提早停止,演算法必須為每個 epoch 發出目標指標。以下內置 SageMaker 算法支持提前停止:

注意

這份目前支援提早停止的內建演算法清單是 2018 年 12 月 13 日的最新版本。其他內建的演算法將來可能會支援提早停止。如果演算法發出的指標可以做為超參數調校任務的目標指標 (最好是驗證指標),則該演算法支援提早停止。

若要搭配使用您自己的演算法與提早停止,您必須撰寫演算法,讓它為每個 epoch 發出目標指標值。以下清單說明在不同的架構中您可如何執行上述作業:

TensorFlow

使用 tf.keras.callbacks.ProgbarLogger 類別。如需詳細資訊,請參閱 tf.keras. 回呼。 ProgbarLogger API。

MXNet

使用 mxnet.callback.LogValidationMetricsCallback。如需相關資訊,請參閱 mxnet.callback API

Chainer

使用 extensions.Evaluator 類別擴充 chainer。如需相關資訊,請參閱 chainer.training.extensions.Evaluator API

PyTorch 和火花

不提供任何高階的支援。您必須明確撰寫您的訓練程式碼,以便在每個 epoch 之後,計算目標指標並將其寫入日誌。