"src/targets/vscode:/vscode.git/clone" did not exist on "e320f89fedd46f01497730bcb93b07142d9c2c3d"
builtin_tuner_zh.rst 5.42 KB
Newer Older
1
.. 10b9097fcfec13f98bb6914b40bd0337
2

Chi Song's avatar
Chi Song committed
3
内置 Tuner
liuzhe-lz's avatar
liuzhe-lz committed
4
==========
Chi Song's avatar
Chi Song committed
5

liuzhe-lz's avatar
liuzhe-lz committed
6
为了让机器学习和深度学习模型适应不同的任务和问题,我们需要进行超参数调优,而自动化调优依赖于优秀的调优算法。NNI 内置了先进的调优算法,并且提供了易于使用的 API。
Chi Song's avatar
Chi Song committed
7

liuzhe-lz's avatar
liuzhe-lz committed
8
在 NNI 中,调优算法被称为“tuner”。Tuner 向 trial 发送超参数,接收运行结果从而评估这组超参的性能,然后将下一组超参发送给新的 trial。
Chi Song's avatar
Chi Song committed
9

liuzhe-lz's avatar
liuzhe-lz committed
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
下表简要介绍了 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方法根据历史数据来顺序地构造模型,从而预估超参性能,并基于此模型来选择新的超参。`参考论文 <https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf>`__

  * - `Random Search (随机搜索) <./RandomTuner.rst>`__
    - 随机搜索在超算优化中表现出了令人意外的性能。如果没有对超参分布的先验知识,我们推荐使用随机搜索作为基线方法。`参考论文 <http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf>`__

  * - `Anneal (退火) <./AnnealTuner.rst>`__
    - 朴素退火算法首先基于先验进行采样,然后逐渐逼近实际性能较好的采样点。该算法是随即搜索的变体,利用了反应曲面的平滑性。该实现中退火率不是自适应的。

  * - `Naive Evolution(朴素进化) <./EvolutionTuner.rst>`__
    - 朴素进化算法来自于 Large-Scale Evolution of Image Classifiers。它基于搜索空间随机生成一个种群,在每一代中选择较好的结果,并对其下一代进行变异。朴素进化算法需要很多 Trial 才能取得最优效果,但它也非常简单,易于扩展。`参考论文 <https://arxiv.org/pdf/1703.01041.pdf>`__

  * - `SMAC <./SmacTuner.rst>`__
    - SMAC 是基于序列模型的优化方法 (SMBO)。它利用使用过的最突出的模型(高斯随机过程模型),并将随机森林引入到SMBO中,来处理分类参数。NNI 的 SMAC tuner 封装了 GitHub 上的 `SMAC3 <https://github.com/automl/SMAC3>`__。`参考论文 <https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf>`__

      注意:SMAC 算法需要使用 ``pip install nni[SMAC]`` 安装依赖,暂不支持 Windows 操作系统。

  * - `Batch(批处理) <./BatchTuner.rst>`__
    - 批处理允许用户直接提供若干组配置,为每种配置运行一个 trial。

  * - `Grid Search(网格遍历) <./GridsearchTuner.rst>`__
    - 网格遍历会穷举搜索空间中的所有超参组合。

  * - `Hyperband <./HyperbandAdvisor.rst>`__
    - Hyperband 试图用有限的资源探索尽可能多的超参组合。该算法的思路是,首先生成大量超参配置,将每组超参运行较短的一段时间,随后抛弃其中效果较差的一半,让较好的超参继续运行,如此重复多轮。`参考论文 <https://arxiv.org/pdf/1603.06560.pdf>`__

  * - `Metis <./MetisTuner.rst>`__
    - 大多数调参工具仅仅预测最优配置,而 Metis 的优势在于它有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 trial 的建议。大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。`参考论文 <https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/>`__

  * - `BOHB <./BohbAdvisor.rst>`__
    - BOHB 是 Hyperband 算法的后续工作。 Hyperband 在生成新的配置时,没有利用已有的 trial 结果,而本算法利用了 trial 结果。BOHB 中,HB 表示 Hyperband,BO 表示贝叶斯优化(Byesian Optimization)。 BOHB 会建立多个 TPE 模型,从而利用已完成的 Trial 生成新的配置。`参考论文 <https://arxiv.org/abs/1807.01774>`__

  * - `GP (高斯过程) <./GPTuner.rst>`__
    - GP Tuner 是基于序列模型的优化方法 (SMBO),使用高斯过程进行 surrogate。`参考论文 <https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf>`__

  * - `PBT <./PBTTuner.rst>`__
    - PBT Tuner 是一种简单的异步优化算法,在固定的计算资源下,它能有效的联合优化一组模型及其超参来最优化性能。`参考论文 <https://arxiv.org/abs/1711.09846v1>`__

  * - `DNGO <./DngoTuner.rst>`__
    - DNGO 是基于序列模型的优化方法 (SMBO),该算法使用神经网络(而不是高斯过程)去建模贝叶斯优化中所需要的函数分布。
Chi Song's avatar
Chi Song committed
59
60
61

..  toctree::
    :maxdepth: 1
liuzhe-lz's avatar
liuzhe-lz committed
62
63
64
65
66
67
68
69
70
71
72
73
74

    TPE <Tuner/TpeTuner>
    Random Search(随机搜索) <Tuner/RandomTuner>
    Anneal(退火) <Tuner/AnnealTuner>
    Naïve Evolution(朴素进化) <Tuner/EvolutionTuner>
    SMAC <Tuner/SmacTuner>
    Metis Tuner <Tuner/MetisTuner>
    Batch Tuner(批处理) <Tuner/BatchTuner>
    Grid Search(网格遍历) <Tuner/GridsearchTuner>
    GP Tuner <Tuner/GPTuner>
    Network Morphism <Tuner/NetworkmorphismTuner>
    Hyperband <Tuner/HyperbandAdvisor>
    BOHB <Tuner/BohbAdvisor>
Chi Song's avatar
Chi Song committed
75
    PBT Tuner <Tuner/PBTTuner>
76
    DNGO Tuner <Tuner/DngoTuner>