

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

# 跟踪并设置调优作业的完成标准
<a name="automatic-model-tuning-progress"></a>

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

## 设置调优作业的完成标准
<a name="automatic-model-tuning-progress-completion"></a>

在超参数优化期间，调优作业将在循环内启动多个训练作业。调优作业将执行以下操作。
+ 检查训练作业是否已完成，并相应地更新统计数据
+ 决定接下来要评估的超参数组合。

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

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

您可以指定以下类型的完成标准：
+ `MaxNumberOfTrainingJobs` – 在停止调优之前要运行的最大训练作业数。
+ `MaxNumberOfTrainingJobsNotImproving` – 根据当前最佳训练作业的目标指标，性能并未改进的最大训练作业数。例如，如果最佳训练作业返回的目标指标的准确性为 `90%`，且 `MaxNumberOfTrainingJobsNotImproving` 设置为 `10`。在此示例中，调优将于 `10` 个训练作业未能返回高于 `90`% 的准确性后停止。
+ `MaxRuntimeInSeconds` – 调优作业可以运行的挂钟时间上限，以秒为单位。
+ `TargetObjectiveMetricValue` – 评估调优作业所依据的目标指标的值。一旦达到此值，AMT 将停止调优作业。
+ `CompleteOnConvergence` – 一个标志，表示在内部算法确定与最佳训练作业的目标指标相比，调优作业的提高不太可能超过 1% 之后，停止调优。

### 选择完成标准
<a name="automatic-model-tuning-progress-completion-how"></a>

您可以选择一个或多个完成标准，以便在条件满足后停止超参数调优作业。以下说明将演示如何选择完成标准，以及如何确定哪个条件最适合您的使用案例。
+ `MaxNumberOfTrainingJobs`在 [ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html)API 中使用来设置调整作业停止之前可以运行的训练作业数量的上限。可从一个较大的数字开始，然后根据调优作业的目标，基于模型性能进行调整。大多数用户会输入 `50` 个左右或更多的训练作业值，以找到最佳的超参数配置。寻求更高水平模型性能的用户，将使用 `200` 个或更多的训练作业。
+ `MaxNumberOfTrainingJobsNotImproving`在 [BestObjectiveNotImproving](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_BestObjectiveNotImproving.html)API 字段中使用，用于在完成指定数量的作业后模型性能未能提高时停止训练。模型性能根据目标函数进行评估。达到 `MaxNumberOfTrainingJobsNotImproving` 后，AMT 将停止调优作业。调优作业往往在作业开始时取得最大的进展。针对目标函数提高模型性能，需要在调优趋于结束时运行大量训练作业。可根据您的目标指标，通过查看类似训练作业的性能，为 `MaxNumberOfTrainingJobsNotImproving` 选择值。
+ `MaxRuntimeInSeconds`在 [ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html)API 中使用来设置调整作业可能花费的挂钟时间上限。可使用此字段满足调优作业必须完成的最后期限，或限制计算资源。

  要获取调优作业的估计总计算时间（以秒为单位），可使用以下公式：

  估计的最大计算时间（以秒为单位）= `MaxRuntimeInSeconds` \$1 `MaxParallelTrainingJobs` \$1 `MaxInstancesPerTrainingJob` 
**注意**  
调优作业的实际持续时间可能与该字段中指定的值略有偏差。
+ 在 [TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html)API `TargetObjectiveMetricValue` 中使用以停止您的调优作业。当调优作业启动的任何训练作业达到此目标指标值后，便停止调优作业。如果您的使用案例依赖于达到特定性能级别，而非耗费计算资源以寻找最佳模型，那么可使用此字段。
+ `CompleteOnConvergence`在 AMT 检测到调优作业已收敛且不太可能取得进一步重大进展之后，在 [TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html)API 中使用停止调优作业。如果不清楚任何其他完成标准应使用哪些值，可使用此字段。AMT 根据在各种不同基准上开发和测试的算法来确定收敛性。当所有训练作业都未返回显著改进（1% 或更少）时，调优作业被定义为已收敛。改进是根据迄今为止性能最佳的作业所返回的目标指标来衡量的。

### 组合不同的完成标准
<a name="automatic-model-tuning-progress-completion-combine"></a>

您也可以在同一个调优作业中组合任何不同的完成标准。当满足任一完成标准时，AMT 将停止调优作业。例如，如果您希望调整模型直至达到目标指标，但不希望在作业趋于收敛时继续进行调优，请使用以下指导。
+ 在 [TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html)API `TargetObjectiveMetricValue` 中指定以设置要达到的目标指标值。
+ 设置[CompleteOnConvergence](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ConvergenceDetected.html)`Enabled`为，如果 AMT 确定模型性能不太可能改善，则停止调整作业。

## 跟踪调优作业进度
<a name="automatic-model-tuning-progress-track"></a>

您可以使用 `DescribeHyperParameterTuningJob` API，在调优作业运行过程中随时跟踪其进度。您无需指定完成标准，即可获取调优作业的跟踪信息。可使用以下字段获取有关调优作业的统计数据。
+ [BestTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html#sagemaker-DescribeHyperParameterTuningJob-response-BestTrainingJob)— 一个对象，描述迄今为止获得的最佳训练作业，并根据您的目标指标进行评估。可使用此字段检查当前的模型性能，以及此最佳训练作业的目标指标值。
+ [ObjectiveStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html#sagemaker-DescribeHyperParameterTuningJob-response-ObjectiveStatusCounters)— 一个对象，它指定在调优作业中完成的训练作业总数。要估计调优作业的平均持续时间，可使用 `ObjectiveStatusCounters` 和调优作业的总运行时。您可以使用平均持续时间，估算调优作业将运行多长时间。
+ `ConsumedResources` – 调优作业消耗的总资源，如 `RunTimeInSeconds`。将在 API 中找到的与在同一 [DescribeHyperParameterTuningJob ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html)API `BestTrainingJob` 中找到的进行比较`ConsumedResources`。您还可以与 [ListTrainingJobsForHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingJobsForHyperParameterTuningJob.html)API 的响应进行比`ConsumedResources`较，以评估在资源消耗的情况下，您的调整工作是否取得了令人满意的进展。
+ [TuningJobCompletionDetails](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobCompletionDetails.html)— 调整任务完成信息，包括以下内容：
  + 如果作业已收敛，检测到的何时收敛的时间戳。
  + 未提高模型性能的训练作业数。模型性能根据最佳训练作业的目标指标进行评估。

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

## 手动停止调优作业
<a name="automatic-model-tuning-progress-stop"></a>

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

要手动停止调优作业，请使用 [StopHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopHyperParameterTuningJob.html)API 并提供要停止的调优作业的名称。