

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

# 超参数调优的最佳实践
<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 A SageMaker I 必须搜索的值范围

尽管您最多可以同时指定 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 为您检测比例，也可以`ScalingType`在 [CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)API 中选择`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 A SageMaker I 上并行运行多个 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% 的先前超参数配置的重现性。对于贝叶斯策略，使用相同的随机种子可以提高相同调优作业的重现性。