提前停止训练作业 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

提前停止训练作业

在按照目标指标进行衡量时,如果训练作业未能明显改进,则可提前停止超参数调优作业启动的训练作业。提前停止训练作业有助于减少计算时间,并帮助避免模型过度拟合。要配置超参数调优作业以提前停止训练作业,请执行以下操作之一:

  • 如果您使用的是 Amazon 适用于 Python 的 SDK (Boto3),请将用于配置TrainingJobEarlyStoppingType调优作业的HyperParameterTuningJobConfig对象的字段设置为。AUTO

  • 如果您使用的是 Amaz SageMaker on Python 软件开发工具包,请将 HyperParameterTuner 对象的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 方式评估超参数调整作业启动的每个训练作业:

  • 在每个训练周期结束后,获取对象指标的值。

  • 计算直至当前周期的所有之前训练作业的目标指标运行平均值,然后计算所有运行平均值的中值。

  • 如果当前训练作业的目标指标值差(最小化时更高,或者在最大化目标指标时更低)比在同一时期之前的训练作业的目标指标的运行平均值的中位数差,则 SageMaker 停止当前的训练作业。

支持提前停止的算法

要支持提前停止,算法必须为每个周期发出目标指标。以下内置 SageMaker 算法支持提前停止:

注意

当前支持提前停止的内置算法列表截止到 2018 年 12 月 13 日。之后其他内置算法可能会支持提前停止。如果算法发出的指标可用作超参数调优作业的目标指标(最好是验证指标),则它支持提前停止。

要在您自己的算法中使用提前停止,您编写的算法必须在每个周期后发出目标指标的值。以下列表演示了如何在不同框架中实现这一点:

TensorFlow

使用 tf.keras.callbacks.ProgbarLogger 类。有关信息,请参阅 tf.keras.callbacks。 ProgbarLogger API

MXNet

使用 mxnet.callback.LogValidationMetricsCallback。有关信息,请参阅 mxnet.callback API

Chainer

使用 extensions.Evaluator 类扩展 chainer。有关信息,请参阅 chainer.training.extensions.Evaluator API

PyTorch 还有 Spark

没有高级支持。您必须明确编写训练代码,以便其计算目标指标并在每个周期之后写入日志。