跟踪并设置调优作业的完成标准 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

跟踪并设置调优作业的完成标准

您可以使用完成标准来指示当条件满足时,自动模型调优 (AMT) 停止调优作业。通过这些条件,您可以设置模型最低性能,或者在根据目标指标进行评估时并未改进的最大训练作业数。您还可以跟踪调优作业的进度,并决定是继续还是手动停止此作业。本指南将介绍如何设置完成标准、检查调优进度以及如何手动停止调优作业。

设置调优作业的完成标准

在超参数优化期间,调优作业将在循环内启动多个训练作业。调优作业将执行以下操作。

  • 检查训练作业是否已完成,并相应地更新统计数据

  • 决定接下来要评估的超参数组合。

AMT 将持续检查从调优作业启动的训练作业,以更新统计数据。这些统计数据包括调优作业运行时和最佳训练作业。然后,AMT 根据完成标准决定是否应停止作业。您也可以手动检查统计数据并停止作业。有关手动停止作业的更多信息,请参阅手动停止调优作业部分。

例如,如果调优作业已达到目标,那么您可以提前停止调优,以节省资源或确保模型质量。AMT 会根据完成标准检查作业性能,如果满足任何条件,则停止调优作业。

您可以指定以下类型的完成标准:

  • MaxNumberOfTrainingJobs – 在停止调优之前要运行的最大训练作业数。

  • MaxNumberOfTrainingJobsNotImproving – 根据当前最佳训练作业的目标指标,性能并未改进的最大训练作业数。例如,如果最佳训练作业返回的目标指标的准确性为 90%,且 MaxNumberOfTrainingJobsNotImproving 设置为 10。在此示例中,调优将于 10 个训练作业未能返回高于 90% 的准确性后停止。

  • MaxRuntimeInSeconds – 调优作业可以运行的挂钟时间上限,以秒为单位。

  • TargetObjectiveMetricValue – 评估调优作业所依据的目标指标的值。一旦达到此值,AMT 将停止调优作业。

  • CompleteOnConvergence – 一个标志,表示在内部算法确定与最佳训练作业的目标指标相比,调优作业的提高不太可能超过 1% 之后,停止调优。

选择完成标准

您可以选择一个或多个完成标准,以便在条件满足后停止超参数调优作业。以下说明将演示如何选择完成标准,以及如何确定哪个条件最适合您的使用案例。

  • ResourceLimits API 中使用 MaxNumberOfTrainingJobs,设置在调优作业停止之前可以运行的训练作业数量的上限。可从一个较大的数字开始,然后根据调优作业的目标,基于模型性能进行调整。大多数用户会输入 50 个左右或更多的训练作业值,以找到最佳的超参数配置。寻求更高水平模型性能的用户,将使用 200 个或更多的训练作业。

  • BestObjectiveNotImproving API 字段中使用 MaxNumberOfTrainingJobsNotImproving,用于在完成指定数量的作业后,模型性能未能改进时停止训练。模型性能根据目标函数进行评估。达到 MaxNumberOfTrainingJobsNotImproving 后,AMT 将停止调优作业。调优作业往往在作业开始时取得最大的进展。针对目标函数提高模型性能,需要在调优趋于结束时运行大量训练作业。可根据您的目标指标,通过查看类似训练作业的性能,为 MaxNumberOfTrainingJobsNotImproving 选择值。

  • ResourceLimits API 中使用 MaxRuntimeInSeconds,设置调优作业可能耗费的挂钟时间上限。可使用此字段满足调优作业必须完成的最后期限,或限制计算资源。

    要获取调优作业的估计总计算时间(以秒为单位),可使用以下公式:

    估计的最大计算时间(以秒为单位)= MaxRuntimeInSeconds * MaxParallelTrainingJobs * MaxInstancesPerTrainingJob

    注意

    调优作业的实际持续时间可能与该字段中指定的值略有偏差。

  • TuningJobCompletionCriteria API 中使用 TargetObjectiveMetricValue,以停止调优作业。当调优作业启动的任何训练作业达到此目标指标值后,便停止调优作业。如果您的使用案例依赖于达到特定性能级别,而非耗费计算资源以寻找最佳模型,那么可使用此字段。

  • TuningJobCompletionCriteria API 中使用 CompleteOnConvergence,在 AMT 检测到调优作业已收敛,并且不太可能取得进一步的重大进展后,停止调优作业。如果不清楚任何其他完成标准应使用哪些值,可使用此字段。AMT 根据在各种不同基准上开发和测试的算法来确定收敛性。当所有训练作业都未返回显著改进(1% 或更少)时,调优作业被定义为已收敛。改进是根据迄今为止性能最佳的作业所返回的目标指标来衡量的。

组合不同的完成标准

您也可以在同一个调优作业中组合任何不同的完成标准。当满足任一完成标准时,AMT 将停止调优作业。例如,如果您希望调整模型直至达到目标指标,但不希望在作业趋于收敛时继续进行调优,请使用以下指导。

跟踪调优作业进度

您可以使用 DescribeHyperParameterTuningJob API,在调优作业运行过程中随时跟踪其进度。您无需指定完成标准,即可获取调优作业的跟踪信息。可使用以下字段获取有关调优作业的统计数据。

  • BestTrainingJob – 一个对象,用于描述迄今为止获得的最佳训练作业(根据目标指标进行评估)。可使用此字段检查当前的模型性能,以及此最佳训练作业的目标指标值。

  • ObjectiveStatusCounters – 一个对象,用于指定在调优作业中完成的训练作业总数。要估计调优作业的平均持续时间,可使用 ObjectiveStatusCounters 和调优作业的总运行时。您可以使用平均持续时间,估算调优作业将运行多长时间。

  • ConsumedResources – 调优作业消耗的总资源,如 RunTimeInSeconds。可将在 DescribeHyperParameterTuningJob API 中找到的 ConsumedResources,与同一 API 中的 BestTrainingJob 进行比较。还可以将 ConsumedResourcesListTrainingJobsForHyperParameterTuningJob API 的响应进行比较,以根据所消耗的资源,评估调优作业是否取得了令人满意的进展。

  • TuningJobCompletionDetails – 调优作业完成信息,包括以下内容:

    • 如果作业已收敛,检测到的何时收敛的时间戳。

    • 未提高模型性能的训练作业数。模型性能根据最佳训练作业的目标指标进行评估。

    可使用调优作业完成标准,评估调优作业提高模型性能的可能性。如果模型运行完毕,则根据最佳目标指标评估其性能。

手动停止调优作业

您可以决定是让调优作业运行直到完成,还是手动停止调优作业。要确定这一点,可使用 DescribeHyperParameterTuningJob API 中参数返回的信息,如之前的跟踪调优作业进度部分中所述。例如,如果在多个训练作业完成后模型性能仍未得到改进,那么可以选择停止调优作业。模型性能根据最佳目标指标进行评估。

要手动停止调优作业,可使用 StopHyperParameterTuningJob API,并提供要停止的调优作业的名称。