CustomizeAdvisor.md 1.56 KB
Newer Older
1
# **指南** - 自定义 Advisor
Chi Song's avatar
Chi Song committed
2

Chi Song's avatar
Chi Song committed
3
*警告:API 可能会在将来的版本中更改。*
Chi Song's avatar
Chi Song committed
4

Chi Song's avatar
Chi Song committed
5
Advisor 用于同时需要 Tuner 和 Assessor 方法的自动机器学习算法。 Advisor 与 Tuner 类似,它接收 Trial 的参数请求、最终结果,并生成 Trial 的参数。 另外,它也能像 Assessor 一样接收中间结果、Trial 的最终状态,并可以发送终止 Trial 的命令。 注意,在使用 Advisor 时,不能同时使用 Tuner 和 Assessor。
Chi Song's avatar
Chi Song committed
6

Chi Song's avatar
Chi Song committed
7
如果要自定义 Advisor,需要:
Chi Song's avatar
Chi Song committed
8

Chi Song's avatar
Chi Song committed
9
**1. 定义从 MsgDispatcherBase 类继承的 Advisor。** 如:
Chi Song's avatar
Chi Song committed
10
11
12
13
14
15
16
17
18

```python
from nni.msg_dispatcher_base import MsgDispatcherBase

class CustomizedAdvisor(MsgDispatcherBase):
    def __init__(self, ...):
        ...
```

Chi Song's avatar
Chi Song committed
19
**2. 实现所有除了 `handle_request` 外的,以 `handle_` 前缀开始的方法**[此文档](https://nni.readthedocs.io/en/latest/sdk_reference.html#nni.msg_dispatcher_base.MsgDispatcherBase)可帮助理解 `MsgDispatcherBase`
Chi Song's avatar
Chi Song committed
20

Chi Song's avatar
Chi Song committed
21
**3. 在 Experiment 的 YAML 文件中配置好自定义的 Advisor。**
Chi Song's avatar
Chi Song committed
22

Chi Song's avatar
Chi Song committed
23
与 Tuner 和 Assessor 类似。 NNI 需要定位到自定义的 Advisor 类,并实例化它,因此需要指定自定义 Advisor 类的文件位置,并将参数值传给 `__init__` 构造函数。
Chi Song's avatar
Chi Song committed
24
25
26
27
28
29
30
31
32
33

```yaml
advisor:
  codeDir: /home/abc/myadvisor
  classFileName: my_customized_advisor.py
  className: CustomizedAdvisor
  # 任何传入 __init__ 构造函数的参数
  # 都需要声明在 classArgs 字段中,如:
  classArgs:
    arg1: value1
Chi Song's avatar
Chi Song committed
34
35
36
37
38
```

## 示例

[参考示例](../../../examples/tuners/mnist_keras_customized_advisor)