本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
超参数调优的最佳实践
超参数优化 (HPO) 不是一个完全自动化的过程。要改进优化,请遵循以下超参数调优的最佳实践。
选择调优策略
对于大型作业,使用 Hyperband 调优策略可以缩短计算时间。Hyperband 具有提前停止机制,可以阻止表现不佳的作业。Hyperband 还可以将资源重新分配给利用率高的超参数配置,并运行并行作业。对于运行时较少的小型训练作业,可使用随机搜索或贝叶斯优化。
使用贝叶斯优化,可就在下次运行中改进超参数配置做出越来越明智的决策。贝叶斯优化使用从先前的运行中收集的信息,改进后续运行。由于其顺序性,贝叶斯优化无法大规模扩展。
使用随机搜索,可运行大量并行作业。在随机搜索中,后续作业不依赖于先前作业的结果,可以独立运行。与其他策略相比,随机搜索能够运行最多的并行作业。
使用网格搜索,可重现调优作业的结果,或者如果优化算法的简单性和透明度很重要,也可以使用此策略。您还可以使用网格搜索,均匀地探索整个超参数搜索空间。网格搜索会系统地搜索每个超参数组合,以找到最佳的超参数值。与网格搜索不同,贝叶斯优化、随机搜索和 Hyperband 都是从搜索空间中随机抽取超参数。由于网格搜索会分析超参数的每个组合,因此使用相同超参数的调优作业之间的最佳超参数值将是相同的。
选择超参数的数量
在优化过程中,超参数调优作业的计算复杂度取决于以下因素:
-
超参数的数量
-
Amazon 必须搜索 SageMaker 的值范围
尽管您最多可以同时指定 30 个超参数,但将搜索限制为较小的数量可以缩短计算时间。缩短计算时间可以更快地融合 SageMaker 到最优的超参数配置。
选择超参数范围
您选择搜索的值范围可能会对超参数优化产生不利影响。例如,覆盖所有可能的超参数值的范围可能会导致计算时间过长,并且模型无法很好地泛化到不可见的数据。如果您知道使用最大可能范围的子集适合您的使用案例,请考虑将范围限制在该子集内。
对超参数使用正确的标度
在超参数调整期间, SageMaker 尝试推断您的超参数是对数缩放还是线性缩放。最初, SageMaker 假设超参数采用线性缩放。如果超参数为对数标度,那么选择正确的标度将提高搜索效率。CreateHyperParameterTuningJobAPI如果要Auto
为ScalingType
自己检测比例 SageMaker ,也可以在中选择。
选择最佳的并发训练作业数
您可以使用先前的试验结果,改进后续试验的性能。选择能够提供有意义的增量结果的最大数量的并行作业,并且这些结果也在您的区域和账户计算约束范围内。可使用 MaxParallelTrainingJobs
字段,限制超参数调优作业可以并行启动的训练作业数量。有关更多信息,请参阅在 Amazon 上并行运行多个HPO任务 SageMaker
在多个实例上运行训练作业
当训练作业以分布式模式在多台计算机上运行时,每台计算机都会发出一个目标指标。HPO只能使用其中一个发出的目标指标来评估模型性能。在分布式模式下,HPO使用上次运行的作业在所有实例上报告的目标指标。
使用随机种子重现超参数配置
您可以指定一个整数作为超参数调优的随机种子,并在生成超参数时使用该种子。稍后,您可以使用相同的种子来重现与之前的结果一致的超参数配置。对于随机搜索和 Hyperband 策略,使用相同的随机种子可以为相同的调优作业提供高达 100% 的先前超参数配置的重现性。对于贝叶斯策略,使用相同的随机种子可以提高相同调优作业的重现性。