超参数调优的最佳实践 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

超参数调优的最佳实践

超参数优化 (HPO) 不是完全自动化的过程。要改进优化,请遵循以下超参数调优的最佳实践。

选择调优策略

对于大型作业,使用 Hyperband 调优策略可以缩短计算时间。Hyperband 具有提前停止机制,可以阻止表现不佳的作业。Hyperband 还可以将资源重新分配给利用率高的超参数配置,并运行并行作业。对于运行时较少的小型训练作业,可使用随机搜索贝叶斯优化

使用贝叶斯优化,可就在下次运行中改进超参数配置做出越来越明智的决策。贝叶斯优化使用从先前的运行中收集的信息,改进后续运行。由于其顺序性,贝叶斯优化无法大规模扩展。

使用随机搜索,可运行大量并行作业。在随机搜索中,后续作业不依赖于先前作业的结果,可以独立运行。与其他策略相比,随机搜索能够运行最多的并行作业。

使用网格搜索,可重现调优作业的结果,或者如果优化算法的简单性和透明度很重要,也可以使用此策略。您还可以使用网格搜索,均匀地探索整个超参数搜索空间。网格搜索会系统地搜索每个超参数组合,以找到最佳的超参数值。与网格搜索不同,贝叶斯优化、随机搜索和 Hyperband 都是从搜索空间中随机抽取超参数。由于网格搜索会分析超参数的每个组合,因此使用相同超参数的调优作业之间的最佳超参数值将是相同的。

选择超参数的数量

在优化过程中,超参数调优作业的计算复杂度取决于以下因素:

  • 超参数的数量

  • Amazon SageMaker 必须搜索的值范围

尽管您最多可以同时指定 30 个超参数,但将搜索限制为较小的数量可以缩短计算时间。缩短计算时间可使 SageMaker 更快地收敛到最佳超参数配置。

选择超参数范围

您选择搜索的值范围可能会对超参数优化产生不利影响。例如,覆盖所有可能的超参数值的范围可能会导致计算时间过长,并且模型无法很好地泛化到不可见的数据。如果您知道使用最大可能范围的子集适合您的使用案例,请考虑将范围限制在该子集内。

对超参数使用正确的标度

在超参数调优过程中,SageMaker 会尝试确定超参数是对数标度还是线性标度。最初,SageMaker 假设超参数采用线性标度。如果超参数为对数标度,那么选择正确的标度将提高搜索效率。如果您希望 SageMaker 为您检测标度,也可以在 CreateHyperParameterTuningJob API 中,为 ScalingType 选择 Auto

选择最佳的并发训练作业数

您可以使用先前的试验结果,改进后续试验的性能。选择能够提供有意义的增量结果的最大数量的并行作业,并且这些结果也在您的区域和账户计算约束范围内。可使用 MaxParallelTrainingJobs 字段,限制超参数调优作业可以并行启动的训练作业数量。有关更多信息,请参阅在 Amazon SageMaker 上并行运行多个 HPO 作业

在多个实例上运行训练作业

当训练作业以分布式模式在多台计算机上运行时,每台计算机都会发出一个目标指标。HPO 只能使用发出的目标指标中的一个来评估模型性能。在分布式模式下,HPO 使用所有实例中最后一个运行的作业所报告的目标指标。

使用随机种子重现超参数配置

您可以指定一个整数作为超参数调优的随机种子,并在生成超参数时使用该种子。稍后,您可以使用相同的种子来重现与之前的结果一致的超参数配置。对于随机搜索和 Hyperband 策略,使用相同的随机种子可以为相同的调优作业提供高达 100% 的先前超参数配置的重现性。对于贝叶斯策略,使用相同的随机种子可以提高相同调优作业的重现性。