nnictl 介绍
nnictl是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。
命令
- nnictl 支持的命令:
- nnictl create
- nnictl resume
- nnictl view
- nnictl stop
- nnictl update
- nnictl trial
- nnictl top
- nnictl experiment
- nnictl platf orm
- nnictl confi g
- nnictl log
- nnictl webui
- nnictl algo
- nnictl ss_gen
- nnictl --version
管理 Experiment
nnictl create
说明
此命令使用参数中的配置文件,来创建新的实验。
此命令成功完成后,上下文会被设置为此 Experiment。这意味着如果不显式改变上下文(暂不支持),输入的以下命令,都作用于此 Experiment。
- 用法
nnictl create [OPTIONS]
- 示例
- 在默认端口 8080 上创建一个新的 Experiment
nnictl create --config nni/examples/trials/mnist-pytorch/config.yml
- 在指定的端口 8088 上创建新的 Experiment
nnictl create --config nni/examples/trials/mnist-pytorch/config.yml --port 8088
- 在指定的端口 8088 上创建新的 Experiment,并启用调试模式
nnictl create --config nni/examples/trials/mnist-pytorch/config.yml --port 8088 --debug
注意:
调试模式会禁用 Trialkeeper 中的版本校验功能。
nnictl resume
- 说明
使用此命令恢复已停止的 Experiment。
- 用法
nnictl resume [OPTIONS]
- 示例
在指定的端口 8088 上恢复 Experiment
nnictl resume [experiment_id] --port 8088
nnictl view
- 说明
使用此命令查看已停止的 Experiment。
用法
nnictl view [OPTIONS]
- 示例
在指定的端口 8088 上查看 Experiment
nnictl view [experiment_id] --port 8088
nnictl stop
- 说明
使用此命令来停止正在运行的单个或多个 Experiment。
- 用法
nnictl stop [Options]
- 详细信息及样例
- 如果没有指定 id,并且当前有运行的 Experiment,则会停止该 Experiment,否则会输出错误信息。
nnictl stop
- 如果指定了 id,并且此 id 匹配正在运行的 Experiment,nnictl 会停止相应的Experiment,否则会输出错误信息。
nnictl stop [experiment_id]
- 如果指定了端口,并且此端口有正在运行的 Experiment,则会停止此 Experiment。
nnictl stop --port 8080
- 可使用 ‘nnictl stop --all’ 来停止所有的 Experiment。
nnictl stop --all
- 如果 id 以 * 结尾,nnictl 会停止所有匹配此通配符的 Experiment。
- 如果 id 不存在,但匹配了某个Experiment 的 id 前缀,nnictl 会停止匹配的Experiment。
- 如果 id 不存在,但匹配多个 Experiment id 的前缀,nnictl 会输出这些
nnictl update
nnictl update searchspace
- 说明
可以用此命令来更新 Experiment 的搜索空间。
- 用法
nnictl update searchspace [OPTIONS]
- 示例
使用 ‘examples/trials/mnist-pytorch/search_space.json’ 来更新 Experiment 的搜索空间
nnictl update searchspace [experiment_id] --filename examples/trials/mnist-pytorch/search_space.json
nnictl update concurrency
- 说明
可以用此命令来更新 Experiment 的并发设置。
- 用法
nnictl update concurrency [OPTIONS]
- 示例
更新 Experiment 的并发数量
nnictl update concurrency [experiment_id] --value [concurrency_number]
nnictl update duration
- 说明
可以用此命令来更新实验的运行时间。
- 用法
nnictl update duration [OPTIONS]
- 示例
修改 Experiment 的执行时间
nnictl update duration [experiment_id] --value [duration]
nnictl update trialnum
- 说明
可以用此命令来更新实验的最大尝试数量。
- 用法
nnictl update trialnum [OPTIONS]
- 示例
更新 Experiment 的 Trial 数量
nnictl update trialnum [experiment_id] --value [trial_num]
nnictl trial
- nnictl trial ls
- 说明
使用此命令来查看 Trial 的信息。 注意如果head或tail被设置, 则只有完成的 Trial会被展示。
- 用法
nnictl trial ls
nnictl trial ls --head 10
nnictl trial ls --tail 10
nnictl trial kill
- 说明
此命令用于终止 Trial。
- 用法
nnictl trial kill [OPTIONS]
- 示例
结束 Trial 任务
nnictl trial kill [experiment_id] --trial_id [trial_id]
nnictl top
- 说明
查看正在运行的 Experiment。
- 用法
nnictl top
管理 Experiment 信息
- nnictl experiment show
- 说明
显示 Experiment 的信息。
- 用法
nnictl experiment show
- nnictl experiment status
- 说明
显示 Experiment 的状态。
- 用法
nnictl experiment status
- nnictl experiment list
- 说明
显示正在运行的 Experiment 的信息
- 用法
nnictl experiment list [OPTIONS]
- nnictl experiment delete
- 说明
删除一个或所有 Experiment,包括日志、结果、环境信息和缓存。 用于删除无用的Experiment 结果,或节省磁盘空间。
- 用法
nnictl experiment delete [OPTIONS]
nnictl experiment export
- 说明
使用此命令,可将 Trial 的 reward 和超参导出为 csv 文件。
- 用法
nnictl experiment export [OPTIONS]
- 示例
将 Experiment 中所有 Trial 数据导出为 JSON 格式
nnictl experiment export [experiment_id] --filename [file_path] --type json --intermediate
nnictl experiment import
- 说明
可使用此命令将以前的 Trial 超参和结果导入到 Tuner 中。 数据会传入调参算法中(即Tuner 或 Advisor)。
- 用法
nnictl experiment import [OPTIONS]
- 详细说明
NNI 支持导入用户的数据,确保数据格式正确。 样例如下:
[
{"parameter": {"x": 0.5, "y": 0.9}, "value": 0.03},
{"parameter": {"x": 0.4, "y": 0.8}, "value": 0.05},
{"parameter": {"x": 0.3, "y": 0.7}, "value": 0.04}
]
最顶层列表的每个元素都是一个样例。 对于内置的 Tuner 和 Advisor,每个样本至少需要两个主键: parameter 和 value 。 parameter 必须与 Experiment 的搜索空间相匹配, parameter 中的所有的主键(或超参)都必须与搜索空间中的主键相匹配。 否则, Tuner 或 Advisor 可能会有无法预期的行为。 Value 应当遵循与 nni.report_final_result 的输入值一样的规则,即要么时一个数字,或者是包含 default 主键的 dict。 对于自定义的 Tuner 或 Advisor,根据实现的不同,此文件可以是任意的 JSON 内容(例如, import_data )。
也可以用 nnictl experiment export 命令导出 Experiment 已经运行过的 Trial 超参和结果。
当前,以下 Tuner 和 Advisor 支持导入数据:
builtinTunerName: TPE, Anneal, GridSearch, MetisTuner
builtinAdvisorName: BOHB
如果要将数据导入到 BOHB Advisor,建议像 NNI 一样,增加 “TRIAL_BUDGET” 参数,否则,BOHB 会使用 max_budget 作为 “TRIAL_BUDGET”。 示例如下:
[
{"parameter": {"x": 0.5, "y": 0.9, "TRIAL_BUDGET": 27}, "value": 0.03}
]
- 示例
将数据导入运行中的 Experiment
nnictl experiment import [experiment_id] -f experiment_data.json
nnictl experiment save
- 说明
保存 NNI Experiment 的元数据及代码数据
- 用法
nnictl experiment save [OPTIONS]
- 示例
保存 Experiment
nnictl experiment save [experiment_id] --saveCodeDir
nnictl experiment load
- 说明
加载 NNI Experiment
- 用法
nnictl experiment load [OPTIONS]
- 示例
加载 Experiment
nnictl experiment load --path [path] --codeDir [codeDir]
管理平台信息
nnictl platform clean
- 说明
用于清理目标平台上的磁盘空间。 所提供的 YAML 文件包括了目标平台的信息,与NNI 配置文件的格式相同。
- 注意
如果目标平台正在被别人使用,可能会造成他人的意外错误。
- 用法
nnictl platform clean [OPTIONS]
nnictl config show
- 说明
显示当前上下文信息。
- 用法
nnictl config show
管理日志
nnictl log stdout
- 说明
显示 stdout 日志内容。
- 用法
nnictl log stdout [options]
- 示例
显示 stdout 结尾的若干行
nnictl log stdout [experiment_id] --tail [lines_number]
nnictl log stderr
- 说明
显示 stderr 日志内容。
- 用法
nnictl log stderr [options]
nnictl log trial
- 说明
显示 Trial 日志的路径。
- 用法
nnictl log trial [options]
nnictl webui url
- 说明
显示 Experiment 的 Web 界面链接
- 用法
nnictl webui url [options]
管理内置算法
nnictl algo register
- 说明
将自定义的算法注册为内置的 Tuner、Assessor、Advisor。
- 用法
nnictl algo register --meta <path_to_meta_file>
<path_to_meta_file>是 yaml 格式元数据文件的路径,具有以下键:
algoType : 算法类型,可为tuner ,assessor ,advisor
builtinName : 在 Experiment 配置文件中使用的内置名称
className: Tuner 类名,包括模块名,例如: demo_tuner.DemoTuner
classArgsValidator : 类的参数验证类 validator 的类名,包括模块名,如: demo_tuner.MyClassArgsValidator
- 示例
在示例中安装自定义 Tuner
cd nni/examples/tuners/customized_tuner
python3 setup.py develop
nnictl algo register --meta meta_file.yml
nnictl algo show
- 说明
显示指定注册算法的详细信息
- 用法
nnictl algo show
- 示例
nnictl algo show SMAC
nnictl package list
- 说明
列出已注册的内置算法
- 用法
nnictl algo list
- 示例
nnictl algo list
nnictl algo unregister
- 说明
注销一个已注册的自定义内置算法。 NNI 提供的内置算法不能被注销。 NNI 提供的内置算法不能被注销。
- 用法
nnictl algo unregister
- 示例
nnictl algo unregister demotuner
生成搜索空间
nnictl ss_gen
- 说明
从使用 NNI NAS API 的用户代码生成搜索空间。
- 用法
nnictl ss_gen [OPTIONS]
- 示例
生成搜索空间
nnictl ss_gen --trial_command=“python3 mnist.py” --trial_dir=./ --file=ss.json
NNI 版本校验
nnictl --version
- 说明
显示当前安装的 NNI 的版本。
- 用法
nnictl --version