MnistExamples.rst 4.03 KB
Newer Older
kvartet's avatar
kvartet committed
1
2
3
4
5
6
7
8
9
10
.. role:: raw-html(raw)
   :format: html


MNIST 示例
==============

在深度学习中,用 CNN 来分类 MNIST 数据,就像介绍编程语言中的 ``hello world`` 示例。 因此,NNI 将 MNIST 作为示例来介绍功能。 示例如下:


kvartet's avatar
kvartet committed
11
* `MNIST 中使用 NNI API (PyTorch) <#mnist-pytorch>`__
kvartet's avatar
kvartet committed
12
* `MNIST 中使用 NNI API (TensorFlow v2.x) <#mnist-tfv2>`__
kvartet's avatar
kvartet committed
13
* `MNIST 中使用 NNI API (TensorFlow v1.x) <#mnist-tfv1>`__
kvartet's avatar
kvartet committed
14
15
16
17
18
19
20
21
* `MNIST 中使用 NNI 标记(annotation) <#mnist-annotation>`__
* `在 keras 中使用 MNIST <#mnist-keras>`__
* `MNIST -- 用批处理 tuner 来调优 <#mnist-batch>`__
* `MNIST -- 用 hyperband 来调优 <#mnist-hyperband>`__
* `MNIST -- 用嵌套搜索空间来调优 <#mnist-nested>`__
* `用 Kubeflow 运行分布式的 MNIST(TensorFlow) <#mnist-kubeflow-tf>`__
* `用 Kubeflow 运行分布式的 MNIST(PyTorch) <#mnist-kubeflow-pytorch>`__

kvartet's avatar
kvartet committed
22
23
:raw-html:`<a name="mnist-pytorch"></a>`
**MNIST 中使用 NNI API (PyTorch)**
kvartet's avatar
kvartet committed
24

kvartet's avatar
kvartet committed
25
26
27
28
这是个简单的卷积网络,有两个卷积层,两个池化层和一个全连接层。
调优的超参包括 dropout 比率,卷积层大小,隐藏层(全连接层)大小等等。
它能用 NNI 中大部分内置的 Tuner 来调优,如 TPE,SMAC,Random。
示例的 YAML 文件也启用了评估器来提前终止一些中间结果不好的尝试。
kvartet's avatar
kvartet committed
29

kvartet's avatar
kvartet committed
30
代码示例: :githublink:`mnist-pytorch/ <examples/trials/mnist-pytorch/>`
kvartet's avatar
kvartet committed
31
32
33
34

:raw-html:`<a name="mnist-tfv2"></a>`
**MNIST 中使用 NNI API (TensorFlow v2.x)**

kvartet's avatar
kvartet committed
35
与上述示例的网络相同,但使用了 TensorFlow。
kvartet's avatar
kvartet committed
36

kvartet's avatar
kvartet committed
37
代码示例: :githublink:`mnist-tfv2/ <examples/trials/mnist-tfv2/>`
kvartet's avatar
kvartet committed
38

kvartet's avatar
kvartet committed
39
40
:raw-html:`<a name="mnist-tfv1"></a>`
**MNIST 中使用 NNI API (TensorFlow v1.x)**
kvartet's avatar
kvartet committed
41

kvartet's avatar
kvartet committed
42
与上述示例的网络相同,但使用了 TensorFlow v1.x Keras API。
kvartet's avatar
kvartet committed
43

kvartet's avatar
kvartet committed
44
代码示例: :githublink:`mnist-tfv1/ <examples/trials/mnist-tfv1/>`
kvartet's avatar
kvartet committed
45

kvartet's avatar
kvartet committed
46
47
:raw-html:`<a name="mnist-annotation"></a>`
**MNIST 中使用 NNI 标记(annotation)**
kvartet's avatar
kvartet committed
48

kvartet's avatar
kvartet committed
49
此样例与上例类似,上例使用的是 NNI API 来指定搜索空间并返回结果,而此例使用的是 NNI 标记。
kvartet's avatar
kvartet committed
50

kvartet's avatar
kvartet committed
51
代码示例: :githublink:`mnist-annotation/ <examples/trials/mnist-annotation/>`
kvartet's avatar
kvartet committed
52
53
54
55
56
57

:raw-html:`<a name="mnist-batch"></a>`
**MNIST -- 用批处理 Tuner 来调优**

此样例演示了如何使用批处理 Tuner。 只需要在搜索空间文件中列出所有要尝试的配置, NNI 会逐个尝试。

kvartet's avatar
kvartet committed
58
代码示例: :githublink:`mnist-batch-tune-keras/ <examples/trials/mnist-batch-tune-keras/>`
kvartet's avatar
kvartet committed
59
60
61
62
63
64

:raw-html:`<a name="mnist-hyperband"></a>`
**MNIST -- 用 hyperband 调优**

此样例演示了如何使用 hyperband 来调优模型。 在尝试收到的配置中,有个主键叫做 ``STEPS``,尝试要用它来控制运行多长时间(例如,控制迭代的次数)。

kvartet's avatar
kvartet committed
65
66
67
.. cannot find :githublink:`mnist-hyperband/ <examples/trials/mnist-hyperband/>`

代码示例: :githublink:`mnist-hyperband/ <examples/trials/mnist-hyperband/>`
kvartet's avatar
kvartet committed
68
69
70
71
72
73

:raw-html:`<a name="mnist-nested"></a>`
**MNIST -- 用嵌套搜索空间调优**

此样例演示了 NNI 如何支持嵌套的搜索空间。 搜索空间文件示了如何定义嵌套的搜索空间。

kvartet's avatar
kvartet committed
74
代码示例: :githublink:`mnist-distributed/ <examples/trials/mnist-distributed/>`
kvartet's avatar
kvartet committed
75
76
77
78
79
80

:raw-html:`<a name="mnist-kubeflow-tf"></a>`
**用 Kubeflow 运行分布式的 MNIST (tensorflow)**

此样例展示了如何通过 NNI 来在 Kubeflow 上运行分布式训练。 只需要简单的提供分布式训练代码,并在配置文件中指定 kubeflow 模式。 例如,运行 ps 和 worker 的命令行,以及各自需要的资源。 此样例使用了 Tensorflow 来实现,因而,需要使用 Kubeflow 的 tf-operator。

kvartet's avatar
kvartet committed
81
代码示例: :githublink:`mnist-distributed-pytorch/ <examples/trials/mnist-distributed-pytorch/>`
kvartet's avatar
kvartet committed
82
83
84
85
86
87

:raw-html:`<a name="mnist-kubeflow-pytorch"></a>`
**用 Kubeflow 运行分布式的 MNIST (PyTorch)**

与前面的样例类似,不同之处是此样例是 Pytorch 实现的,因而需要使用 Kubeflow 的 pytorch-operator。

kvartet's avatar
kvartet committed
88
代码示例: :githublink:`mnist-distributed-pytorch/ <examples/trials/mnist-distributed-pytorch/>`