nnictl 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。
nnictl 支持的命令:
- nnictl create
- nnictl resume
- nnictl view
- nnictl stop
- nnictl update
- nnictl trial
- nnictl top
- nnictl experiment
- nnictl platform
- nnictl config
- nnictl log
- nnictl webui
- nnictl tensorboard
- nnictl package
- nnictl ss_gen
- nnictl --version
说明
此命令使用参数中的配置文件,来创建新的实验。
此命令成功完成后,上下文会被设置为此 Experiment。这意味着如果不显式改变上下文(暂不支持),输入的以下命令,都作用于此 Experiment。
用法
nnictl create [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
--config, -c | True | Experiment 的 YAML 配置文件 | |
--port, -p | False | RESTful 服务的端口 | |
--debug, -d | False | 设置为调试模式 | |
--foreground, -f | False | 设为前台运行模式,将日志输出到终端 |
示例
在默认端口 8080 上创建一个新的 Experiment
nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
在指定的端口 8088 上创建新的 Experiment
nnictl create --config nni/examples/trials/mnist-tfv1/config.yml --port 8088
在指定的端口 8088 上创建新的 Experiment,并启用调试模式
nnictl create --config nni/examples/trials/mnist-tfv1/config.yml --port 8088 --debug
注意:
调试模式会禁用 Trialkeeper 中的版本校验功能。
说明
使用此命令恢复已停止的 Experiment。
用法
nnictl resume [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | True | 要恢复的 Experiment 标识 | |
--port, -p | False | 要恢复的 Experiment 使用的 RESTful 服务端口 | |
--debug, -d | False | 设置为调试模式 | |
--foreground, -f | False | 设为前台运行模式,将日志输出到终端 |
示例
在指定的端口 8088 上恢复 Experiment
nnictl resume [experiment_id] --port 8088
说明
使用此命令查看已停止的 Experiment。
用法
nnictl view [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | True | 要查看的 Experiment 标识 | |
--port, -p | False | 要查看的 Experiment 使用的 RESTful 服务端口 |
示例
在指定的端口 8088 上查看 Experiment
nnictl view [experiment_id] --port 8088
说明
使用此命令来停止正在运行的单个或多个 Experiment。
用法
nnictl stop [Options]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 要停止的 Experiment 标识 | |
--port, -p | False | 要停止的 Experiment 使用的 RESTful 服务端口 | |
--all, -a | False | 停止所有 Experiment |
详细信息及样例
如果没有指定 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 会输出这些 id 的信息。
nnictl update searchspace
说明
可以用此命令来更新 Experiment 的搜索空间。
用法
nnictl update searchspace [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--filename, -f | True | 新的搜索空间文件名 |
示例
使用 'examples/trials/mnist-tfv1/search_space.json' 来更新 Experiment 的搜索空间
nnictl update searchspace [experiment_id] --filename examples/trials/mnist-tfv1/search_space.json
nnictl update concurrency
说明
可以用此命令来更新 Experiment 的并发设置。
用法
nnictl update concurrency [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--value, -v | True | 允许同时运行的 Trial 的数量 |
示例
更新 Experiment 的并发数量
nnictl update concurrency [experiment_id] --value [concurrency_number]
nnictl update duration
说明
可以用此命令来更新实验的运行时间。
用法
nnictl update duration [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--value, -v | True | 形如 '1m' (一分钟)或 '2h' (两小时)的字符串。 后缀可以为 's'(秒), 'm'(分钟), 'h'(小时)或 'd'(天)。 |
示例
修改 Experiment 的执行时间
nnictl update duration [experiment_id] --value [duration]
nnictl update trialnum
说明
可以用此命令来更新实验的最大尝试数量。
用法
nnictl update trialnum [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--value, -v | True | 需要设置的 maxtrialnum 的数量 |
示例
更新 Experiment 的 Trial 数量
nnictl update trialnum [experiment_id] --value [trial_num]
nnictl trial ls
说明
使用此命令来查看 Trial 的信息。 注意如果
head
或tail
被设置, 则只有完成的 Trial 会被展示。用法
nnictl trial ls nnictl trial ls --head 10 nnictl trial ls --tail 10
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--head | False | 依据最高默认指标列出的项数。 | |
--tail | False | 依据最低默认指标列出的项数。 |
nnictl trial kill
说明
此命令用于终止 Trial。
用法
nnictl trial kill [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | Trial 的 Experiment ID | |
--trial_id, -T | True | 需要终止的 Trial 的 ID。 |
示例
结束 Trial 任务
nnictl trial kill [experiment_id] --trial_id [trial_id]
说明
查看正在运行的 Experiment。
用法
nnictl top
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--time, -t | False | 刷新 Experiment 状态的时间间隔,单位为秒,默认值为 3 秒。 |
nnictl experiment show
说明
显示 Experiment 的信息。
用法
nnictl experiment show
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id |
nnictl experiment status
说明
显示 Experiment 的状态。
用法
nnictl experiment status
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id |
nnictl experiment list
说明
显示正在运行的 Experiment 的信息
用法
nnictl experiment list [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
--all | False | 列出所有 Experiment |
nnictl experiment delete
说明
删除一个或所有 Experiment,包括日志、结果、环境信息和缓存。 用于删除无用的 Experiment 结果,或节省磁盘空间。
用法
nnictl experiment delete [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | Experiment ID | |
--all | False | 删除所有 Experiment |
nnictl experiment export
说明
使用此命令,可将 Trial 的 reward 和超参导出为 csv 文件。
用法
nnictl experiment export [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | Experiment ID | |
--filename, -f | True | 文件的输出路径 | |
--type | True | 输出文件类型,仅支持 "csv" 和 "json" | |
--intermediate, -i | False | 是否保存中间结果 |
示例
将 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]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要将数据导入的 Experiment 的 ID | |
--filename, -f | True | 需要导入的 JSON 格式的数据文件 |
详细说明
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]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | True | 要保存的 Experiment 标识 | |
--path, -p | False | 保存 NNI Experiment 数据的路径,默认为当前工作目录 | |
--saveCodeDir, -s | False | 是否保存 Experiment 的代码目录的数据,默认为 False |
示例
保存 Experiment
nnictl experiment save [experiment_id] --saveCodeDir
nnictl experiment load
说明
加载 NNI Experiment
用法
nnictl experiment load [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
--path, -p | True | NNI 包的文件路径 | |
--codeDir, -c | True | 要加载的实验的代码目录,加载的 NNI 包中的代码也会放到此目录下。 | |
--logDir, -l | False | 存放加载的实验的日志的目录。 | |
--searchSpacePath, -s | True | 存放加载的实验的搜索空间文件的路径(路径包含文件名)。 默认是 $codeDir/search_space.json。 |
示例
加载 Experiment
nnictl experiment load --path [path] --codeDir [codeDir]
nnictl platform clean
说明
用于清理目标平台上的磁盘空间。 所提供的 YAML 文件包括了目标平台的信息,与 NNI 配置文件的格式相同。
注意
如果目标平台正在被别人使用,可能会造成他人的意外错误。
用法
nnictl platform clean [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
--config | True | 创建 Experiment 时的 YAML 配置文件路径。 |
说明
显示当前上下文信息。
用法
nnictl config show
nnictl log stdout
说明
显示 stdout 日志内容。
用法
nnictl log stdout [options]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--head, -h | False | 显示 stdout 开始的若干行 | |
--tail, -t | False | 显示 stdout 结尾的若干行 | |
--path, -p | False | 显示 stdout 文件的路径 |
示例
显示 stdout 结尾的若干行
nnictl log stdout [experiment_id] --tail [lines_number]
nnictl log stderr
说明
显示 stderr 日志内容。
用法
nnictl log stderr [options]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--head, -h | False | 显示 stderr 开始的若干行 | |
--tail, -t | False | 显示 stderr 结尾的若干行 | |
--path, -p | False | 显示 stderr 文件的路径 |
nnictl log trial
说明
显示 Trial 日志的路径。
用法
nnictl log trial [options]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | Trial 的 Experiment ID | |
--trial_id, -T | False | 所需要找日志路径的 Trial 的 ID,当 id 不为空时,此值也为必需。 |
nnictl webui url
说明
显示 Experiment 的 Web 界面链接
用法
nnictl webui url [options]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | Experiment ID |
nnictl tensorboard start
说明
启动 tensorboard 进程。
用法
nnictl tensorboard start
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id | |
--trial_id, -T | False | Trial 的 id | |
--port | False | 6006 | tensorboard 进程的端口 |
详细说明
- NNICTL 当前仅支持本机和远程平台的 tensorboard,其它平台暂不支持。
- 如果要使用 tensorboard,需要将 tensorboard 日志输出到环境变量 [NNI_OUTPUT_DIR] 路径下。
- 在 local 模式中,nnictl 会直接设置 --logdir=[NNI_OUTPUT_DIR] 并启动 tensorboard 进程。
- 在 remote 模式中,nnictl 会创建一个 ssh 客户端来将日志数据从远程计算机复制到本机临时目录中,然后在本机开始 tensorboard 进程。 需要注意的是,nnictl 只在使用此命令时复制日志数据,如果要查看最新的 tensorboard 结果,需要再次执行 nnictl tensorboard 命令。
- 如果只有一个 Trial 任务,不需要设置 Trial ID。 如果有多个运行的 Trial 作业,需要设置 Trial ID,或使用 [nnictl tensorboard start --trial_id all] 来将 --logdir 映射到所有 Trial 的路径。
nnictl tensorboard stop
说明
停止所有 tensorboard 进程。
用法
nnictl tensorboard stop
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
id | False | 需要设置的 Experiment 的 id |
nnictl package install
说明
安装自定义的 Tuner,Assessor,Advisor(定制或 NNI 提供的算法)。
用法
nnictl package install --name <package name>
可通过
nnictl package list
命令查看可用的<包名称>
。或者
nnictl package install <安装源>
参考 安装自定义算法 来准备安装源。
示例
安装 SMAC Tuner
nnictl package install --name SMAC
安装自定义 Tuner
nnictl package install nni/examples/tuners/customized_tuner/dist/demo_tuner-0.1-py3-none-any.whl
nnictl package show
说明
显示包的详情。
用法
nnictl package show <包名称>
示例
nnictl package show SMAC
nnictl package list
说明
列出已安装的包 / 所有包。
用法
nnictl package list [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
--all | False | 列出所有包 |
示例
列出已安装的包
nnictl package list
列出所有包
nnictl package list --all
nnictl package uninstall
说明
卸载包。
用法
nnictl package uninstall <包名称>
示例 卸载 SMAC 包
nnictl package uninstall SMAC
nnictl ss_gen
说明
从使用 NNI NAS API 的用户代码生成搜索空间。
用法
nnictl ss_gen [OPTIONS]
选项
参数及缩写 | 是否必需 | 默认值 | 说明 |
---|---|---|---|
--trial_command | True | Trial 代码的命令 | |
--trial_dir | False | ./ | Trial 代码目录 |
--file | False | nni_auto_gen_search_space.json | 用来存储生成的搜索空间 |
示例
生成搜索空间
nnictl ss_gen --trial_command="python3 mnist.py" --trial_dir=./ --file=ss.json
nnictl --version
说明
显示当前安装的 NNI 的版本。
用法
nnictl --version