

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

# 超參數調校的最佳實務
<a name="automatic-model-tuning-considerations"></a>

超參數最佳化 (HPO) 不是完全自動化的程序。如要改善最佳化，請依照下列超參數調校的最佳實務。

**Topics**
+ [選擇調校策略](#automatic-model-tuning-strategy)
+ [選擇超參數的數量](#automatic-model-tuning-num-hyperparameters)
+ [選擇超參數範圍](#automatic-model-tuning-choosing-ranges)
+ [針對超參數使用正確的擴展項目](#automatic-model-tuning-log-scales)
+ [選擇平行訓練任務的最佳數量](#automatic-model-tuning-parallelism)
+ [在多個執行個體上執行訓練任務](#automatic-model-tuning-distributed-metrics)
+ [使用隨機種子重現超參數組態](#automatic-model-tuning-random-seed)

## 選擇調校策略
<a name="automatic-model-tuning-strategy"></a>

對於大型任務，使用 [Hyperband](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-hyperband) 調校策略可減少運算時間。Hyperband 具有提早停止機制，可停止表現不佳的任務。Hyperband 也可以將資源重新配置為充分利用的超參數組態，並執行平行任務。對於使用較少執行期的較小訓練工作，請使用[隨機搜尋](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-random-search)或[貝葉斯最佳化](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-bayesian-optimization.title)。

使用貝葉斯最佳化來做出越來越明智的決策，以便在下一次執行中改善超參數組態。貝葉斯最佳化會使用從先前執行收集的資訊來改善後續的執行項目。由於本身的順序性質，貝葉斯最佳化無法大規模擴展。

使用隨機搜尋來執行大量的平行任務。在隨機搜尋中，後續任務不會依賴先前任務的結果，而且可以獨立執行。相較於其他策略，隨機搜尋能執行最多的平行任務。

使用[網格搜尋](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-grid-search)來重現調校任務的結果，或者如果最佳化演算法的簡易性和透明度很重要時也請使用此搜尋方法。您也可以使用網格搜尋來平均探索整個超參數搜尋空間。網格搜尋可有條不紊地搜尋每個超參數組合，以找出最佳的超參數值。不同於網格搜尋，貝葉斯最佳化、隨機搜尋和 Hyperband 都會從搜尋空間中隨機繪製超參數。由於網格搜尋會分析每個超參數組合，因此使用相同超參數的調校任務之間的最佳超參數值將相同。

## 選擇超參數的數量
<a name="automatic-model-tuning-num-hyperparameters"></a>

在最佳化期間，超參數調校任務的運算複雜性取決於下列各項目：
+ 超參數的數量
+ Amazon SageMaker AI 必須搜尋的值範圍

雖然您可以同時指定最多 30 個超參數，但是將搜尋限制為較小的數量可縮短運算時間。縮短運算時間可讓 SageMaker AI 更快地收斂成最佳的超參數組態。

## 選擇超參數範圍
<a name="automatic-model-tuning-choosing-ranges"></a>

您選擇搜尋的值範圍可能會對超參數最佳化產生不利影響。例如，涵蓋每個可能的超參數值的範圍可能會導致較長的運算時間，而且模型不能妥善地概括到看不見的資料。如果您知道使用最大可能範圍的子集適合您的使用案例，則請考慮將範圍限制為該子集。

## 針對超參數使用正確的擴展項目
<a name="automatic-model-tuning-log-scales"></a>

在超參數調校期間，SageMaker AI 會嘗試推論出超參數為日誌擴展或線性擴展。最初，SageMaker AI 會假設超參數的線性擴展。如果超參數為日誌擴展，則選擇正確的擴展項目將更有利於您的搜尋成效。如果您希望 SageMaker AI 為您偵測擴展項目，也可以在 [CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html) API 中針對 `ScalingType` 選取 `Auto`。

## 選擇平行訓練任務的最佳數量
<a name="automatic-model-tuning-parallelism"></a>

您可以使用先前試驗的結果來提高後續試驗的效能。選擇最大數量的平行任務，這些任務將提供有意義的增量結果，同時也會落在您的區域和帳戶運算限制範圍內。使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html#MaxParallelTrainingJobs](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html#MaxParallelTrainingJobs) 欄位來限制超參數調校任務可於平行啟動中執行的訓練任務數量。如需更多資訊，請參閱[在 Amazon SageMaker AI 上以平行方式執行多個 HPO 任務](https://aws.amazon.com/blogs/machine-learning/running-multiple-hpo-jobs-in-parallel-on-amazon-sagemaker)。

## 在多個執行個體上執行訓練任務
<a name="automatic-model-tuning-distributed-metrics"></a>

當訓練任務以分散模式在多台機器上執行時，每台機器都會發出一個目標指標。HPO 只能使用其中一個發出的目標指標來評估模型效能。在分散模式中，HPO 會使用所有執行個體上次執行任務所報告的目標指標。

## 使用隨機種子重現超參數組態
<a name="automatic-model-tuning-random-seed"></a>

您可以指定一個整數作為超參數調校的隨機種子，並在產生超參數期間使用該種子。之後，可以使用相同的種子來重現與先前結果一致的超參數組態。針對隨機搜尋和 Hyperband 策略，使用相同的隨機種子可以為相同的調校任務提供先前超參數組態高達 100% 的重現性。針對貝葉斯策略，使用相同的隨機種子將提高相同調校任務的重現性。