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

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

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

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

设置调优作业的完成标准

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

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

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

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

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

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

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

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

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

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

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

选择完成标准

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

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

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

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

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

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

    注意

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

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

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

组合不同的完成标准

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

跟踪调优作业进度

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

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

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

  • ConsumedResources – 调优作业消耗的总资源,如 RunTimeInSeconds。将ConsumedResources中找到的DescribeHyperParameterTuningJob API与相同内容BestTrainingJob进行比较API。您还可以与的响应进行比ConsumedResources较,ListTrainingJobsForHyperParameterTuningJobAPI以评估您的调整工作在消耗的资源的情况下是否取得了令人满意的进展。

  • TuningJobCompletionDetails— 调整任务完成信息,包括以下内容:

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

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

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

手动停止调优作业

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

要手动停止调优作业,请使用StopHyperParameterTuningJobAPI并提供要停止的调整作业的名称。