overview_zh.rst 3.78 KB
Newer Older
liuzhe-lz's avatar
liuzhe-lz committed
1
2
3
4
5
6
7
8
9
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
.. 9b97cac44e07efbd393a2ab21f247c95

超参调优
========

自动超参调优(hyperparameter optimization, HPO)是NNI的主要功能之一。

超参调优简介
------------

在机器学习中,用来控制学习过程的参数被称为“超参数”或“超参”,而为一种机器学习算法选择最优超参组合的问题被称为“超参调优”。

以下代码片段演示了一次朴素的超参调优:

.. code-block:: python

    best_hyperparameters = None
    best_accuracy = 0

    for learning_rate in [0.1, 0.01, 0.001, 0.0001]:
        for momentum in [i / 10 for i in range(10)]:
            for activation_type in ['relu', 'tanh', 'sigmoid']:
                model = build_model(activation_type)
                train_model(model, learning_rate, momentum)
                accuracy = evaluate_model(model)

                if accuracy > best_accuracy:
                    best_accuracy = accuracy
                    best_hyperparameters = (learning_rate, momentum, activation_type)

    print('最优超参:', best_hyperparameters)

可以看到,这段超参调优代码总计训练4×10×3=120个模型,要消耗大量的计算资源,因此您可能会有以下需求:

1. :ref:`通过较少的尝试次数找到最优超参组合 <zh-hpo-overview-tuners>`
2. :ref:`利用分布式平台进行训练 <zh-hpo-overview-platforms>`
3. :ref:`使用网页控制台来监控调参过程 <zh-hpo-overview-portal>`

NNI可以满足您的这些需求。

NNI超参调优的主要功能
---------------------

.. _zh-hpo-overview-tuners:

调优算法
^^^^^^^^

NNI通过调优算法来更快地找到最优超参组合,这些算法被称为“tuner”(调参器)。

调优算法会决定需要运行、评估哪些超参组合,以及应该以何种顺序评估超参组合。
高效的算法可以通过已评估超参组合的结果去预测最优超参的取值,从而减少找到最优超参所需的评估次数。

开头的示例以固定顺序评估所有可能的超参组合,无视了超参的评估结果,这种朴素方法被称为“grid search”(网格搜索)。

NNI内建了很多流行的调优算法,包括朴素算法如随机搜索、网格搜索,贝叶斯优化类算法如TPESMAC,强化学习算法如PPO等等。

完整内容: :doc:`tuners`

.. _zh-hpo-overview-platforms:

训练平台
^^^^^^^^

如果您不准备使用分布式训练平台,您可以像使用普通Python函数库一样,在自己的电脑上直接运行NNI超参调优。

如果想利用更多计算资源加速调优过程,您也可以使用NNI内建的训练平台集成,从简单的SSH服务器到可扩容的Kubernetes集群NNI都提供支持。

完整内容: :doc:`/experiment/training_service`

.. _zh-hpo-overview-portal:

网页控制台
^^^^^^^^^^

您可以使用NNI的网页控制台来监控超参调优实验,它支持实时显示实验进度、对超参性能进行可视化、人工修改超参数值、同时管理多个实验等诸多功能。

完整内容: :doc:`/experiment/web_portal`

.. image:: ../../static/img/webui.gif
    :width: 100%

教程
----

我们提供了以下教程帮助您上手NNI超参调优,您可以选择最熟悉的机器学习框架:

* :doc:`使用PyTorch的超参调优教程 </tutorials/hpo_quickstart_pytorch/main>`
* :doc:`使用TensorFlow的超参调优教程 </tutorials/hpo_quickstart_tensorflow/main>`

更多功能
--------

在掌握了NNI超参调优的基础用法之后,您可以尝试以下更多功能:

* :doc:`Use command line tool to create and manage experiments (nnictl) </reference/nnictl>`
* :doc:`Early stop non-optimal models (assessor) <assessors>`
* :doc:`TensorBoard integration </experiment/tensorboard>`
* :doc:`Implement your own algorithm <custom_algorithm>`
* :doc:`Benchmark tuners <hpo_benchmark>`