.. 10b9097fcfec13f98bb6914b40bd0337 内置 Tuner ========== 为了让机器学习和深度学习模型适应不同的任务和问题,我们需要进行超参数调优,而自动化调优依赖于优秀的调优算法。NNI 内置了先进的调优算法,并且提供了易于使用的 API。 在 NNI 中,调优算法被称为“tuner”。Tuner 向 trial 发送超参数,接收运行结果从而评估这组超参的性能,然后将下一组超参发送给新的 trial。 下表简要介绍了 NNI 内置的调优算法。点击 tuner 的名称可以查看其安装需求、推荐使用场景、示例配置文件等详细信息。`这篇文章 <../CommunitySharings/HpoComparison.rst>`__ 对比了各个 tuner 在不同场景下的性能。 .. list-table:: :header-rows: 1 :widths: auto * - Tuner - 算法简介 * - `TPE <./TpeTuner.rst>`__ - Tree-structured Parzen Estimator (TPE) 是一种基于序列模型的优化方法 (sequential model-based optimization, SMBO)。SMBO方法根据历史数据来顺序地构造模型,从而预估超参性能,并基于此模型来选择新的超参。`参考论文 `__ * - `Random Search (随机搜索) <./RandomTuner.rst>`__ - 随机搜索在超算优化中表现出了令人意外的性能。如果没有对超参分布的先验知识,我们推荐使用随机搜索作为基线方法。`参考论文 `__ * - `Anneal (退火) <./AnnealTuner.rst>`__ - 朴素退火算法首先基于先验进行采样,然后逐渐逼近实际性能较好的采样点。该算法是随即搜索的变体,利用了反应曲面的平滑性。该实现中退火率不是自适应的。 * - `Naive Evolution(朴素进化) <./EvolutionTuner.rst>`__ - 朴素进化算法来自于 Large-Scale Evolution of Image Classifiers。它基于搜索空间随机生成一个种群,在每一代中选择较好的结果,并对其下一代进行变异。朴素进化算法需要很多 Trial 才能取得最优效果,但它也非常简单,易于扩展。`参考论文 `__ * - `SMAC <./SmacTuner.rst>`__ - SMAC 是基于序列模型的优化方法 (SMBO)。它利用使用过的最突出的模型(高斯随机过程模型),并将随机森林引入到SMBO中,来处理分类参数。NNI 的 SMAC tuner 封装了 GitHub 上的 `SMAC3 `__。`参考论文 `__ 注意:SMAC 算法需要使用 ``pip install nni[SMAC]`` 安装依赖,暂不支持 Windows 操作系统。 * - `Batch(批处理) <./BatchTuner.rst>`__ - 批处理允许用户直接提供若干组配置,为每种配置运行一个 trial。 * - `Grid Search(网格遍历) <./GridsearchTuner.rst>`__ - 网格遍历会穷举搜索空间中的所有超参组合。 * - `Hyperband <./HyperbandAdvisor.rst>`__ - Hyperband 试图用有限的资源探索尽可能多的超参组合。该算法的思路是,首先生成大量超参配置,将每组超参运行较短的一段时间,随后抛弃其中效果较差的一半,让较好的超参继续运行,如此重复多轮。`参考论文 `__ * - `Metis <./MetisTuner.rst>`__ - 大多数调参工具仅仅预测最优配置,而 Metis 的优势在于它有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 trial 的建议。大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。`参考论文 `__ * - `BOHB <./BohbAdvisor.rst>`__ - BOHB 是 Hyperband 算法的后续工作。 Hyperband 在生成新的配置时,没有利用已有的 trial 结果,而本算法利用了 trial 结果。BOHB 中,HB 表示 Hyperband,BO 表示贝叶斯优化(Byesian Optimization)。 BOHB 会建立多个 TPE 模型,从而利用已完成的 Trial 生成新的配置。`参考论文 `__ * - `GP (高斯过程) <./GPTuner.rst>`__ - GP Tuner 是基于序列模型的优化方法 (SMBO),使用高斯过程进行 surrogate。`参考论文 `__ * - `PBT <./PBTTuner.rst>`__ - PBT Tuner 是一种简单的异步优化算法,在固定的计算资源下,它能有效的联合优化一组模型及其超参来最优化性能。`参考论文 `__ * - `DNGO <./DngoTuner.rst>`__ - DNGO 是基于序列模型的优化方法 (SMBO),该算法使用神经网络(而不是高斯过程)去建模贝叶斯优化中所需要的函数分布。 .. toctree:: :maxdepth: 1 TPE Random Search(随机搜索) Anneal(退火) Naïve Evolution(朴素进化) SMAC Metis Tuner Batch Tuner(批处理) Grid Search(网格遍历) GP Tuner Network Morphism Hyperband BOHB PBT Tuner DNGO Tuner