本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
提前停止訓練任務
依據目標指標所測,當超參數調校任務啟動的訓練任務未有大幅改善時,即可提早停止該任務。提前停止訓練任務有助於降低運算時間,並可協助您避免過度擬合模型。若要設定超參數調校任務以提前停止訓練任務,請執行下列其中一項操作:
-
如果您使用的是 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.ipynbhpo_image_classification_early_stopping.ipynb
筆記本執行個體SageMaker 範例的「超參數調整」區段中開啟筆記本。如需如何在筆記本執行個體中使用範例筆記本的資訊,請參閱範例筆記本。
提早停止的運作方式
當您針對超參數調整工作啟用提前停止時, SageMaker 會評估超參數調整工作啟動的每個訓練工作,如下所示:
-
在每個 epoch 的訓練之後,取得目標指標的值。
-
計算所有先前訓練任務 (直到相同 epoch) 目標指標的執行中平均值,然後計算所有執行中平均值的中間值。
-
如果目前訓練工作的目標量度值差 (在最大化目標量度時最小化時較高,或在最大化目標量度時較低),則會停止目前訓練工作直至相同時期的目標量度執行平均值中位數,則會 SageMaker 停止目前的訓練工作。
支援提早停止的演算法
為了支援提早停止,演算法必須為每個 epoch 發出目標指標。以下內置 SageMaker 算法支持提前停止:
-
線性學習程式演算法 — 僅有當您使用
objective_loss
作為目標指標時支援。
注意
這份目前支援提早停止的內建演算法清單是 2018 年 12 月 13 日的最新版本。其他內建的演算法將來可能會支援提早停止。如果演算法發出的指標可以做為超參數調校任務的目標指標 (最好是驗證指標),則該演算法支援提早停止。
若要搭配使用您自己的演算法與提早停止,您必須撰寫演算法,讓它為每個 epoch 發出目標指標值。以下清單說明在不同的架構中您可如何執行上述作業:
- TensorFlow
-
使用
tf.keras.callbacks.ProgbarLogger
類別。如需詳細資訊,請參閱 tf.keras. 回呼。 ProgbarLoggerAPI。 - MXNet
-
使用
mxnet.callback.LogValidationMetricsCallback
。如需相關資訊,請參閱 mxnet.callback API。 - Chainer
-
使用
extensions.Evaluator
類別擴充 chainer。如需相關資訊,請參閱 chainer.training.extensions.Evaluator API。 - PyTorch 和火花
-
不提供任何高階的支援。您必須明確撰寫您的訓練程式碼,以便在每個 epoch 之後,計算目標指標並將其寫入日誌。