本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
提前停止训练作业
在按照目标指标进行衡量时,如果训练作业未能明显改进,则可提前停止超参数优化作业启动的训练作业。提前停止训练作业有助于减少计算时间,并帮助您避免过度拟合模型。要配置超参数调整作业以尽早停止训练作业,请执行以下操作之一:
-
如果您使用的是适用于 Python (Boto 3) 的 Amazon 开发工具包,请设置用于将调整作业配置为
AUTO的HyperParameterTuningJobConfig对象的TrainingJobEarlyStoppingType字段。 -
如果您使用亚马逊 SageMaker Python 开发工具包
中,设置 early_stopping_type参数HyperParameterTuner反对 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 如下所示评估超参数优化作业启动的每个训练作业:
-
在每个训练周期结束后,获取对象指标的值。
-
计算直至当前周期的所有之前训练作业的目标指标运行平均值,然后计算所有运行平均值的中值。
-
如果当前训练作业的目标指标值(在最小化目标指标时更高,或者在最大化目标指标时更低)比直至同一时期之前训练作业的目标指标运行平均值的中值更糟糕, SageMaker 停止当前的训练作业。
支持提前停止的算法
要支持提前停止,算法必须为每个周期发出目标指标。内置以下内置 SageMaker 算法支持提前停止:
当前支持提前停止的内置算法列表截止到 2018 年 12 月 13 日。之后其他内置算法可能会支持提前停止。如果算法发出的指标可用作超参数优化作业的目标指标(最好是验证指标),则它支持提前停止。
要在您自己的算法中使用提前停止,您编写的算法必须在每个周期后发出目标指标的值。以下列表演示了如何在不同框架中实现这一点:
- TensorFlow
-
使用
tf.keras.callbacks.ProgbarLogger类。有关更多信息,请参阅tf.keras.callbacks.probarlogger API. - MXNet
-
使用
mxnet.callback.LogValidationMetricsCallback。有关更多信息,请参阅mxnet.callback API. - Chainer
-
使用
extensions.Evaluator类扩展 chainer。有关更多信息,请参阅链人。培训。扩展。评估器 API. - PyTorch 和 Spark
-
没有高级支持。您必须明确编写训练代码,以便其计算目标指标并在每个周期之后写入日志。