

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 追蹤並設定調校任務的完成標準
<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>

您可以選擇一或多個完成標準，在符合條件後停止超參數調校任務。下列指示說明如何選取完成標準，以及如何決定哪一個標準最適合您的使用案例。
+ 在 [ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html) API 中使用 `MaxNumberOfTrainingJobs`，可設定在調校任務停止之前要執行的訓練任務數量上限。從大的數字著手，並根據您的調校任務目標的模型效能進行調整。大多數使用者會輸入 `50` 附近或較多訓練任務的值，以找出最佳的超參數組態。尋找更高等級模型效能的使用者，會使用 `200` 或更多的訓練任務。
+ 如果模型效能在指定數量的任務後無法改善，請在 [BestObjectiveNotImproving](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_BestObjectiveNotImproving.html) API 欄位中使用 `MaxNumberOfTrainingJobsNotImproving` 來停止訓練。根據目標函式評估模型效能。符合 `MaxNumberOfTrainingJobsNotImproving` 之後，AMT 將停止調校任務。調校任務往往會在任務開始時大幅取得進展。根據目標函式改善模型效能，將需要在調校結尾時投入較大量的訓練任務。根據您的目標指標查看類似的訓練任務效能，以針對 `MaxNumberOfTrainingJobsNotImproving` 選取一個值。
+ 在 [ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html) API 中使用 `MaxRuntimeInSeconds`，可設定調校任務可能需要的時鐘時間上限。使用此欄位可滿足調校任務須完成或限制運算資源的截止日期要求。

  若要取得調校任務的估計總運算時間 (以秒為單位)，請使用下列公式：

  估計的最長運算時間 (以秒為單位)= `MaxRuntimeInSeconds` \$1 `MaxParallelTrainingJobs` \$1 `MaxInstancesPerTrainingJob` 
**注意**  
調校任務的實際持續時間可能與此欄位所指定的值略有不同。
+ 在 [TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html) API 中使用 `TargetObjectiveMetricValue` 以停止調校任務。調校任務啟動的任何訓練任務達到此目標指標值之後，即可停止調校任務。如果您的使用案例須達到特定的效能層級，而非須花費運算資源來尋找最佳模型，則請使用此欄位。
+ 在 AMT 偵測到調校任務已收斂且不太可能進一步取得重大進展之後，請在 [TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html) API 中使用 `CompleteOnConvergence`，以停止調校任務。如果不清楚應使用哪個任何其他完成標準的值，請使用此欄位。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`，以設定要達到的目標指標值。
+ 如果 AMT 確定模型效能不太可能改善，則請將 [CompleteOnConvergence](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ConvergenceDetected.html) 設為 `Enabled` 以停止調校任務。

## 追蹤調校任務進度
<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`。比較 `ConsumedResources`，可在 [DescribeHyperParameterTuningJob ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html) API 中找到，並在相同的 API 中比較 `BestTrainingJob`。您也可以比較 `ConsumedResources` 和 [ListTrainingJobsForHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingJobsForHyperParameterTuningJob.html) API 的回應，以評估您的調校任務是否在耗用資源的情況下取得令人滿意的進展。
+ [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，並提供要停止的調校任務名稱。