Unverified Commit 79539110 authored by Chi Song's avatar Chi Song Committed by GitHub
Browse files

Chinese translation (#1795)

parent 6d9f545a
...@@ -35,4 +35,4 @@ advisor: ...@@ -35,4 +35,4 @@ advisor:
## 示例 ## 示例
[参考示例](../../../examples/tuners/mnist_keras_customized_advisor) 参考[示例](https://github.com/microsoft/nni/tree/master/examples/tuners/mnist_keras_customized_advisor)
\ No newline at end of file \ No newline at end of file
...@@ -46,6 +46,8 @@ ...@@ -46,6 +46,8 @@
* 有关 docstrings,参考 [numpydoc docstring 指南](https://numpydoc.readthedocs.io/en/latest/format.html)[pandas docstring 指南](https://python-sprints.github.io/pandas/guide/pandas_docstring.html) * 有关 docstrings,参考 [numpydoc docstring 指南](https://numpydoc.readthedocs.io/en/latest/format.html)[pandas docstring 指南](https://python-sprints.github.io/pandas/guide/pandas_docstring.html)
* 函数的 docstring, **description**, **Parameters**, 以及**Returns**/**Yields** 是必需的。 * 函数的 docstring, **description**, **Parameters**, 以及**Returns**/**Yields** 是必需的。
* 类的 docstring, **description**, **Attributes** 是必需的。 * 类的 docstring, **description**, **Attributes** 是必需的。
* 描述 `dict` 的 docstring 在超参格式描述中多处用到,参考 [RiboKit : 文档标准
* 写作标准的内部准则](https://ribokit.github.io/docs/text/)
## 文档 ## 文档
...@@ -56,4 +58,4 @@ ...@@ -56,4 +58,4 @@
* 需要链接时,尽量使用**相对路径**。 但如果文档是 Markdown 格式的,并且: * 需要链接时,尽量使用**相对路径**。 但如果文档是 Markdown 格式的,并且:
* 图片需要通过嵌入的 HTML 语法来格式化,则需要使用绝对链接,如 `https://user-images.githubusercontent.com/44491713/51381727-e3d0f780-1b4f-11e9-96ab-d26b9198ba65.png`。可以通过将图片拖拽到 [Github Issue](https://github.com/Microsoft/nni/issues/new) 框中来生成这样的链接。 * 图片需要通过嵌入的 HTML 语法来格式化,则需要使用绝对链接,如 `https://user-images.githubusercontent.com/44491713/51381727-e3d0f780-1b4f-11e9-96ab-d26b9198ba65.png`。可以通过将图片拖拽到 [Github Issue](https://github.com/Microsoft/nni/issues/new) 框中来生成这样的链接。
* 如果不能被 sphinx 重新格式化,如源代码等,则需要使用绝对链接。 如果源码连接到本代码库,使用 `https://github.com/Microsoft/nni/tree/master/` 作为根目录 (例如:[mnist.py](https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/mnist.py))。 * 如果不能被 sphinx 重新格式化,如源代码等,则需要使用绝对链接。 如果源码连接到本代码库,使用 `https://github.com/Microsoft/nni/tree/master/` 作为根目录 (例如:[mnist.py](https://github.com/Microsoft/nni/blob/master/examples/trials/mnist-tfv1/mnist.py))。
\ No newline at end of file \ No newline at end of file
...@@ -4,8 +4,77 @@ ...@@ -4,8 +4,77 @@
- [Experiment(实验)配置参考](#experiment-config-reference) - [Experiment(实验)配置参考](#experiment-config-reference)
- [模板](#template) - [模板](#template)
- [说明](#configuration-spec) - [说明](#configuration-spec)
- [样例](#examples) - [authorName](#authorname)
- [experimentName](#experimentname)
- [trialConcurrency](#trialconcurrency)
- [maxExecDuration](#maxexecduration)
- [versionCheck](#versioncheck)
- [debug](#debug)
- [maxTrialNum](#maxtrialnum)
- [trainingServicePlatform](#trainingserviceplatform)
- [searchSpacePath](#searchspacepath)
- [useAnnotation](#useannotation)
- [multiPhase](#multiphase)
- [multiThread](#multithread)
- [nniManagerIp](#nnimanagerip)
- [logDir](#logdir)
- [logLevel](#loglevel)
- [logCollection](#logcollection)
- [tuner](#tuner)
- [builtinTunerName](#builtintunername)
- [codeDir](#codedir)
- [classFileName](#classfilename)
- [className](#classname)
- [classArgs](#classargs)
- [gpuIndices](#gpuindices)
- [includeIntermediateResults](#includeintermediateresults)
- [assessor](#assessor)
- [builtinAssessorName](#builtinassessorname)
- [codeDir](#codedir-1)
- [classFileName](#classfilename-1)
- [className](#classname-1)
- [classArgs](#classargs-1)
- [advisor](#advisor)
- [builtinAdvisorName](#builtinadvisorname)
- [codeDir](#codedir-2)
- [classFileName](#classfilename-2)
- [className](#classname-2)
- [classArgs](#classargs-2)
- [gpuIndices](#gpuindices-1)
- [trial](#trial)
- [localConfig](#localconfig)
- [gpuIndices](#gpuindices-2)
- [maxTrialNumPerGpu](#maxtrialnumpergpu)
- [useActiveGpu](#useactivegpu)
- [machineList](#machinelist)
- [ip](#ip)
- [port](#port)
- [username](#username)
- [passwd](#passwd)
- [sshKeyPath](#sshkeypath)
- [passphrase](#passphrase)
- [gpuIndices](#gpuindices-3)
- [maxTrialNumPerGpu](#maxtrialnumpergpu-1)
- [useActiveGpu](#useactivegpu-1)
- [kubeflowConfig](#kubeflowconfig)
- [operator](#operator)
- [storage](#storage)
- [nfs](#nfs)
- [keyVault](#keyvault)
- [azureStorage](#azurestorage)
- [uploadRetryCount](#uploadretrycount)
- [paiConfig](#paiconfig)
- [userName](#username)
- [password](#password)
- [token](#token)
- [host](#host)
- [样例](#examples)
- [本机模式](#local-mode)
- [远程模式](#remote-mode)
- [PAI 模式](#pai-mode)
- [Kubeflow 模式](#kubeflow-mode)
- [Kubeflow 中使用 Azure 存储](#kubeflow-with-azure-storage)
## 模板 ## 模板
...@@ -132,727 +201,717 @@ machineList: ...@@ -132,727 +201,717 @@ machineList:
## 说明 ## 说明
- **authorName** ### authorName
- 说明
**authorName** 是创建 Experiment 的作者。
待定: 增加默认值
- **experimentName** 必填。 字符串。
- 说明
**experimentName** 是创建的 Experiment 的名称。
待定: 增加默认值
- **trialConcurrency** 创建 Experiment 的作者的姓名。
- 说明
**trialConcurrency** 定义了并发尝试任务的最大数量。
注意:如果 trialGpuNum 大于空闲的 GPU 数量,并且并发的 Trial 任务数量还没达到 trialConcurrency,Trial 任务会被放入队列,等待分配 GPU 资源。
- **maxExecDuration** *待定: 增加默认值。*
- 说明
**maxExecDuration** 定义 Experiment 执行的最长时间。时间单位:{**s**, **m**, **h**, **d**},分别代表:{*seconds*, *minutes*, *hours*, *days*}。
注意:maxExecDuration 设置的是 Experiment 执行的时间,不是 Trial 的。 如果 Experiment 达到了设置的最大时间,Experiment 不会停止,但不会再启动新的 Trial 作业。
- **versionCheck** ### experimentName
- 说明
NNI 会校验 remote, pai 和 Kubernetes 模式下 NNIManager 与 trialKeeper 进程的版本。 如果需要禁用版本校验,versionCheck 应设置为 false。
- **debug** 必填。 字符串。
- 说明
调试模式会将 versionCheck 设置为 False,并将 logLevel 设置为 'debug'。
- **maxTrialNum** 创建的 Experiment 名称。
- 说明
**maxTrialNum** 定义了 Trial 任务的最大数量,成功和失败的都计算在内。
- **trainingServicePlatform** *待定: 增加默认值。*
- 说明
**trainingServicePlatform** 定义运行 Experiment 的平台,包括:{**local**, **remote**, **pai**, **kubeflow**}.
- **local** 在本机的 Ubuntu 上运行 Experiment。
- **remote** 将任务提交到远程的 Ubuntu 上,必须用 **machineList** 来指定远程的 SSH 连接信息。
- **pai** 提交任务到微软开源的 [OpenPAI](https://github.com/Microsoft/pai) 上。 更多 OpenPAI 配置,参考 [pai 模式](../TrainingService/PaiMode.md)
- **kubeflow** 提交任务至 [Kubeflow](https://www.kubeflow.org/docs/about/kubeflow/)。 NNI 支持基于 Kubeflow 的 Kubenetes,以及[Azure Kubernetes](https://azure.microsoft.com/en-us/services/kubernetes-service/)。 详情参考 [Kubeflow 文档](../TrainingService/KubeflowMode.md)
- **searchSpacePath** ### trialConcurrency
- 说明
**searchSpacePath** 定义搜索空间文件的路径,此文件必须在运行 nnictl 的本机。
注意: 如果设置了 useAnnotation=True,searchSpacePath 字段必须被删除。
- **useAnnotation** 必填。 1 到 99999 之间的整数。
- 说明
**useAnnotation** 定义使用标记来分析代码并生成搜索空间。
注意: 如果设置了 useAnnotation=True,searchSpacePath 字段必须被删除。
- **multiPhase** 指定同时运行的 Trial 任务的最大数量。
- 说明
**multiPhase** 启用[多阶段 Experiment](../AdvancedFeature/MultiPhase.md)
- **multiThread** 如果 trialGpuNum 大于空闲的 GPU 数量,并且并发的 Trial 任务数量还没达到 **trialConcurrency**,Trial 任务会被放入队列,等待分配 GPU 资源。
- 说明
**multiThread** 如果 multiThread 设为 `true`,可启动 Dispatcher 的多线程模式。Dispatcher 会为来自 NNI 管理器的每个命令启动一个线程。
- **nniManagerIp** ### maxExecDuration
- 说明
**nniManagerIp** 设置 NNI 管理器运行的 IP 地址。 此字段为可选项,如果没有设置,则会使用 eth0 的 IP 地址。
注意: 可在 NNI 管理器机器上运行 ifconfig 来检查 eth0 是否存在。 如果不存在,推荐显式设置 nnimanagerIp。
- **logDir** 可选。 字符串。 默认值:999d。
- 说明
**logDir** 配置存储日志和数据的目录。 默认值是 `<user home directory>/nni/experiment`
- **logLevel** **maxExecDuration** 指定实验的最大执行时间。 时间的单位为 {**s**, **m**, **h**, **d**},其分别表示 {*秒*, *分钟*, *小时*, *天*}。
- 说明
**logLevel** 为 Experiment 设置日志级别,支持的日志级别有:`trace, debug, info, warning, error, fatal`。 默认值是 `info`
- **logCollection** 注意:maxExecDuration 设置的是 Experiment 执行的时间,不是 Trial 的。 如果 Experiment 达到了设置的最大时间,Experiment 不会停止,但不会再启动新的 Trial 作业。
- 说明
**logCollection** 设置在 remote, pai, kubeflow, frameworkcontroller 平台下收集日志的方法。 日志支持两种设置,一种是通过 `http`,让 Trial 将日志通过 POST 方法发回日志,这种方法会减慢 trialKeeper 的速度。 另一种方法是 `none`,Trial 不将日志回传回来,仅仅回传 Job 的指标。 如果日志较大,可将此参数设置为 `none`
- **Tuner** ### versionCheck
- 说明
**tuner** 指定了 Experiment 的 Tuner 算法。有两种方法可设置 Tuner。 一种方法是使用 SDK 提供的 Tuner,需要设置 **builtinTunerName****classArgs**。 另一种方法,是使用用户自定义的 Tuner,需要设置 **codeDirectory****classFileName****className****classArgs**
- **builtinTunerName****classArgs**
- **builtinTunerName**
**builtinTunerName** 指定系统 Tuner 的名称,NNI SDK 提供了多个内置 Tuner,详情参考[这里](../Tuner/BuiltinTuner.md)
- **classArgs**
**classArgs** 指定了 Tuner 算法的参数。 参考[此文件](../Tuner/BuiltinTuner.md)来了解内置 Tuner 的配置参数。
- **codeDir**, **classFileName**, **className****classArgs**
- **codeDir**
**codeDir** 指定 Tuner 代码的目录。
- **classFileName**
**classFileName** 指定 Tuner 文件名。
- **className**
**className** 指定 Tuner 类名。
- **classArgs**
**classArgs** 指定了 Tuner 算法的参数。
- **gpuIndices**
__gpuIndices__ 指定了 Tuner 进程可使用的 GPU。 可以指定单个或多个 GPU 索引,多个索引间使用逗号(,)隔开,例如:`1``0,1,3`。 如果没设置此字段,脚本中的 `CUDA_VISIBLE_DEVICES` 会为空 '',即 Tuner 中找不到 GPU。
- **includeIntermediateResults**
如果 __includeIntermediateResults__ 为 true,最后一个 Assessor 的中间结果会被发送给 Tuner 作为最终结果。 __includeIntermediateResults__ 的默认值为 false。
注意:用户只能用一种方法来指定 Tuner,指定 `builtinTunerName``classArgs`,或指定 `codeDir``classFileName``className` 以及 `classArgs`
- **Assessor** 可选。 布尔。 默认值:false。
- 说明
**assessor** 指定了 Experiment 的 Assessor 算法。有两种方法可设置 Assessor。 一种方法是使用 SDK 提供的 Assessor,需要设置 **builtinAssessorName****classArgs**。 另一种方法,是使用用户自定义的 Assessor,需要设置 **codeDirectory****classFileName****className****classArgs**
- **builtinAssessorName****classArgs**
- **builtinAssessorName**
**builtinAssessorName** 指定了内置 Assessor 的名称,NNI SDK 提供了多个内置的 Assessor,详情参考[这里](../Assessor/BuiltinAssessor.md)
- **classArgs**
**classArgs** 指定了 Assessor 算法的参数。
- **codeDir**, **classFileName**, **className****classArgs**
- **codeDir**
**codeDir** 指定 Assessor 代码的目录。
- **classFileName**
**classFileName** 指定 Assessor 文件名。
- **className**
**className** 指定 Assessor 类名。
- **classArgs**
**classArgs** 指定了 Assessor 算法的参数。
注意:用户只能用一种方法来指定 Assessor,指定 `builtinAssessorName``classArgs`,或指定 `codeDir``classFileName``className` 以及 `classArgs`。 如果不需要使用 Assessor,此字段可为空。
- **Advisor** NNI 会校验 remote, pai 和 Kubernetes 模式下 NNIManager 与 trialKeeper 进程的版本。 如果需要禁用版本校验,versionCheck 应设置为 false。
- 说明
**Advisor** 指定了 Experiment 的 Advisor 算法。有两种方法可设置 Advisor。 一种方法是使用 SDK 提供的 Advisor ,需要设置 **builtinAdvisorName****classArgs**。 另一种方法,是使用用户自定义的 Advisor,需要设置 **codeDirectory****classFileName****className****classArgs**
- **builtinAdvisorName****classArgs**
- **builtinAdvisorName**
**builtinAdvisorName** 指定了内置 Advisor 的名称,NNI SDK 提供了多个[内置的 Advisor](../Tuner/BuiltinTuner.md)
- **classArgs**
**classArgs** 指定了 Advisor 算法的参数。 参考[此文件](../Tuner/BuiltinTuner.md)来了解内置 Advisor 的配置参数。
- **codeDir**, **classFileName**, **className****classArgs**
- **codeDir**
**codeDir** 指定 Advisor 代码的目录。
- **classFileName**
**classFileName** 指定 Advisor 文件名。
- **className**
**className** 指定 Advisor 类名。
- **classArgs**
**classArgs** 指定了 Advisor 算法的参数。
- **gpuIndices**
__gpuIndices__ 指定了 Advisor 进程可使用的 GPU。 可以指定单个或多个 GPU 索引,多个索引间使用逗号(,)隔开,例如:`1``0,1,3`。 如果没设置此字段,脚本中的 `CUDA_VISIBLE_DEVICES` 会为空 '',即 Tuner 中找不到 GPU。
注意:用户只能用一种方法来指定 Advisor ,指定 `builtinAdvisorName``classArgs`,或指定 `codeDir``classFileName``className` 以及 `classArgs`
- **trial (local, remote)** ### debug
- **command**
**command** 指定了运行 Trial 进程的命令行。
- **codeDir**
**codeDir** 指定了 Trial 代码文件的目录。
- **gpuNum**
**gpuNum** 指定了运行 Trial 进程的 GPU 数量。 默认值为 0。
- **trial (pai)** 可选。 布尔。 默认值:false。
- **command**
**command** 指定了运行 Trial 进程的命令行。
- **codeDir**
**codeDir** 指定了 Trial 代码文件的目录。
- **gpuNum**
**gpuNum** 指定了运行 Trial 进程的 GPU 数量。 默认值为 0。
- **cpuNum**
**cpuNum** 指定了 OpenPAI 容器中使用的 CPU 数量。
- **memoryMB**
**memoryMB** 指定了 OpenPAI 容器中使用的内存数量。
- **image**
**image** 指定了 OpenPAI 中使用的 docker 映像。
- **dataDir**
**dataDir** 是 HDFS 中用到的数据目录变量。
- **outputDir**
**outputDir** 是 HDFS 中用到的输出目录变量。在 OpenPAI 中,stdout 和 stderr 文件会在作业完成后,存放在此目录中。
- **trial (kubeflow)** 调试模式会将 versionCheck 设置为 False,并将 logLevel 设置为 'debug'。
- **codeDir** ### maxTrialNum
**codeDir** 指定了代码文件的本机路径。 可选。 1 到 99999 之间的整数。 默认值:99999。
指定 NNI 创建的最大 Trial 任务数,包括成功和失败的任务。
### trainingServicePlatform
必填。 字符串。
指定运行 Experiment 的平台,包括 **local**, **remote**, **pai**, **kubeflow**, **frameworkcontroller**.
- **local** 在本机的 Ubuntu 上运行 Experiment。
- **remote** 将任务提交到远程的 Ubuntu 上,必须用 **machineList** 来指定远程的 SSH 连接信息。
- **pai** 提交任务到微软开源的 [OpenPAI](https://github.com/Microsoft/pai) 上。 更多 OpenPAI 配置,参考 [PAI 模式](../TrainingService/PaiMode.md)
- **kubeflow** 提交任务至 [Kubeflow](https://www.kubeflow.org/docs/about/kubeflow/)。 NNI 支持基于 Kubeflow 的 Kubenetes,以及[Azure Kubernetes](https://azure.microsoft.com/en-us/services/kubernetes-service/)。 详情参考 [Kubeflow 文档](../TrainingService/KubeflowMode.md)
- TODO:解释 FrameworkController。
### searchSpacePath
可选。 现有文件的路径。
指定搜索空间文件的路径,此文件必须在运行 nnictl 的本机。
仅在 `useAnnotation=True` 时,才不需要填写 **searchSpacePath**
### useAnnotation
可选。 布尔。 默认值:false。
使用 Annotation 分析 Trial 代码并生成搜索空间。
注意:如果 **useAnnotation** 为 true,searchSpacePath 字段会被删除。
### multiPhase
可选。 布尔。 默认值:false。
启用[多阶段 Experiment](../AdvancedFeature/MultiPhase.md)
### multiThread
可选。 布尔。 默认值:false。
为 Dispatcher 启用多线程模式。 如果启用了 multiThread,Dispatcher 将启动一个线程来处理来自 NNI 管理器的每个命令。
### nniManagerIp
可选。 字符串。 默认值:eth0 设备的 IP。
设置运行 NNI 管理器进程的计算机的 IP 地址。 此字段为可选项,如果没有设置,则会使用 eth0 的 IP 地址。
注意: 可在 NNI 管理器机器上运行 `ifconfig` 来检查 eth0 是否存在。 如果没有,建议显式设置 **nniManagerIp**
### logDir
可选。 目录的路径。 默认值:`<user home directory>/nni/experiment`
配置目录以存储 Experiment 的日志和数据。
### logLevel
可选。 字符串。 默认值:`info`
设置 Experiment 的日志级别。 可设置的日志级别包括:`trace`, `debug`, `info`, `warning`, `error`, `fatal`
### logCollection
可选。 `http``none`。 默认值:`none`
设置在remote、pai、kubeflow、frameworkcontroller 平台中收集日志的方式。 日志支持两种设置,一种是通过 `http`,让 Trial 将日志通过 POST 方法发回日志,这种方法会减慢 trialKeeper 的速度。 另一种方法是 `none`,Trial 不将日志回传回来,仅仅回传 Job 的指标。 如果日志较大,可将此参数设置为 `none`
### tuner
必填。
指定了 Experiment 的 Tuner 算法。有两种方法可设置 Tuner。 一种方法是使用 NNI SDK 提供的内置 Tuner,在这种情况下,需要设置 **builtinTunerName****classArgs**。 另一种方法,是使用用户自定义的 Tuner,需要设置 **codeDirectory****classFileName****className****classArgs***必须选择其中的一种方式。*
#### builtinTunerName
如果使用内置 Tuner,则为必需。 字符串。
指定系统 Tuner 的名称, NNI SDK 提供的各种 Tuner 的[说明](../Tuner/BuiltinTuner.md)
#### codeDir
如果使用定制 Tuner,则为必需。 相对于配置文件位置的路径。
指定 Tuner 代码的目录。
#### classFileName
如果使用定制 Tuner,则为必需。 相对于 **codeDir** 的文件路径。
指定 Tuner 文件的名称。
#### className
如果使用定制 Tuner,则为必需。 字符串。
指定 Tuner 的名称。
#### classArgs
可选。 键值对。 默认值:空。
指定 Tuner 算法的参数。 参考[此文件](../Tuner/BuiltinTuner.md)来了解内置 Tuner 的配置参数。
#### gpuIndices
可选。 字符串。 默认值:空。
指定 Tuner 进程可以使用的 GPU。 可以指定单个或多个 GPU 索引。 多个 GPU 索引用逗号 `,` 分隔。 例如,`1``0,1,3`。 如果未设置该字段,则 Tuner 将找不到 GPU(设置 `CUDA_VISIBLE_DEVICES` 成空字符串)。
#### includeIntermediateResults
可选。 布尔。 默认值:false。
如果 **includeIntermediateResults** 为 true,最后一个 Assessor 的中间结果会被发送给 Tuner 作为最终结果。
### assessor
指定 Assessor 算法以运行 Experiment。 与 Tuner 类似,有两种设置 Assessor 的方法。 一种方法是使用 NNI SDK 提供的 Assessor。 用户需要设置 **builtinAssessorName****classArgs**。 另一种方法,是使用自定义的 Assessor,需要设置 **codeDirectory****classFileName****className****classArgs***必须选择其中的一种方式。*
默认情况下,未启用任何 Assessor。
#### builtinAssessorName
如果使用内置 Assessor,则为必需。 字符串。
指定内置 Assessor 的名称,NNI SDK 提供的 Assessor 可参考[这里](../Assessor/BuiltinAssessor.md)
#### codeDir
如果使用定制 Assessor,则为必需。 相对于配置文件位置的路径。
指定 Assessor 代码的目录。
#### classFileName
如果使用定制 Assessor,则为必需。 相对于 **codeDir** 的文件路径。
指定 Assessor 文件的名称。
#### className
如果使用定制 Assessor,则为必需。 字符串。
指定 Assessor 类的名称。
#### classArgs
可选。 键值对。 默认值:空。
指定 Assessor 算法的参数。
### advisor
可选。
指定 Experiment 中的 Advisor 算法。 与 Tuner 和 Assessor 类似,有两种指定 Advisor 的方法。 一种方法是使用 SDK 提供的 Advisor ,需要设置 **builtinAdvisorName****classArgs**。 另一种方法,是使用用户自定义的 Advisor,需要设置 **codeDirectory****classFileName****className****classArgs**
启用 Advisor 后,将忽略 Tuner 和 Advisor 的设置。
#### builtinAdvisorName
指定内置 Advisor 的名称。 NNI SDK 提供了 [BOHB](../Tuner/BohbAdvisor.md)[Hyperband](../Tuner/HyperbandAdvisor.md)
#### codeDir
如果使用定制 Advisor,则为必需。 相对于配置文件位置的路径。
指定 Advisor 代码的目录。
#### classFileName
如果使用定制 Advisor,则为必需。 相对于 **codeDir** 的文件路径。
指定 Advisor 文件的名称。
#### className
如果使用定制 Advisor,则为必需。 字符串。
指定 Advisor 类的名称。
#### classArgs
可选。 键值对。 默认值:空。
指定 Advisor 的参数。
#### gpuIndices
可选。 字符串。 默认值:空。
指定可以使用的 GPU。 可以指定单个或多个 GPU 索引。 多个 GPU 索引用逗号 `,` 分隔。 例如,`1``0,1,3`。 如果未设置该字段,则 Tuner 将找不到 GPU(设置 `CUDA_VISIBLE_DEVICES` 成空字符串)。
### trial
必填。 键值对。
在 local 和 remote 模式下,需要以下键。
- **command**:必需字符串。 指定运行 Trial 的命令。
- **codeDir**:必需字符串。 指定 Trial 文件的目录。 此目录将在 remote 模式下自动上传。
- **gpuNum**:可选、整数。 指定了运行 Trial 进程的 GPU 数量。 默认值为 0。
在 PAI 模式下,需要以下键。
- **command**:必需字符串。 指定运行 Trial 的命令。
- **codeDir**:必需字符串。 指定 Trial 文件的目录。 目录中的文件将在 PAI 模式下上传。
- **gpuNum**:必需、整数。 指定了运行 Trial 进程的 GPU 数量。 默认值为 0。
- **cpuNum**:必需、整数。 指定要在 OpenPAI 容器中使用的 cpu 数。
- **memoryMB**:必需、整数。 设置要在 OpenPAI 容器中使用的内存大小,以兆字节为单位。
- **image**:必需字符串。 设置要在 OpenPAI 中使用的 Docker 映像。
- **authFile**:可选、字符串。 用于提供 Docker 注册,用于为 OpenPAI 中的映像拉取请求进行身份验证。 [参考](https://github.com/microsoft/pai/blob/2ea69b45faa018662bc164ed7733f6fdbb4c42b3/docs/faq.md#q-how-to-use-private-docker-registry-job-image-when-submitting-an-openpai-job)
- **shmMB**:可选、整数。 容器的共享内存大小。
- **portList**: `label`, `beginAt`, `portNumber` 的键值对 list。 参考[ OpenPAI Job 教程](https://github.com/microsoft/pai/blob/master/docs/job_tutorial.md)
在 Kubeflow 模式下,需要以下键。
- **codeDir** 指定了代码文件的本机路径。
- **ps**: Kubeflow 的 tensorflow-operator 的可选配置,包括:
- **ps (可选)** * __replicas__: __ps__ 角色的副本数量。
**ps** 是 Kubeflow 的 Tensorflow-operator 配置。
- **replicas**
**replicas****ps** 角色的副本数量。 * __command__: __ps__ 容器的运行脚本。
- **command**
**command** 是在 **ps** 的容器中运行的脚本命令。 * __gpuNum__: 在 __ps__ 容器中使用的 GPU 数量。
- **gpuNum**
**gpuNum** 是在 **ps** 容器中使用的 GPU 数量。 * __cpuNum__: 在 __ps__ 容器中使用的 CPU 数量。
- **cpuNum**
**cpuNum** 是在 **ps** 容器中使用的 CPU 数量。 * __memoryMB__:容器的内存大小。
- **memoryMB**
**memoryMB** 指定了容器中使用的内存数量。 * __image__: 在 __ps__ 中使用的 Docker 映像。
- **image**
**image** 设置了 **ps** 使用的 docker 映像。
- **worker** 是 Kubeflow 的 tensorflow-operator 的可选配置。
- **worker** * __replicas__: __worker__ 角色的副本数量。
**worker** 是 Kubeflow 的 Tensorflow-operator 配置。
- **replicas**
**replicas****worker** 角色的副本数量。 * __command__: __worker__ 容器的运行脚本。
- **command**
**command** 是在 **worker** 的容器中运行的脚本命令。 * __gpuNum__: 在 __worker__ 容器中使用的 GPU 数量。
- **gpuNum**
**gpuNum** 是在 **worker** 容器中使用的 GPU 数量。 * __cpuNum__: 在 __worker__ 容器中使用的 CPU 数量。
- **cpuNum**
**cpuNum** 是在 **worker** 容器中使用的 CPU 数量。 * __memoryMB__:容器的内存大小。
- **memoryMB**
**memoryMB** 指定了容器中使用的内存数量。 * __image__: 在 __worker__ 中使用的 Docker 映像。
- **image**
**image** 设置了 **worker** 使用的 docker 映像。
- **localConfig** ### localConfig
**localConfig** 仅在 **trainingServicePlatform** 设为 `local` 时有效,否则,配置文件中不应该有 **localConfig** 部分。
- **gpuIndices**
**gpuIndices** 用于指定 GPU。设置此值后,只有指定的 GPU 会被用来运行 Trial 任务。 可指定单个或多个 GPU 的索引,多个 GPU 之间用逗号(,)隔开,例如 `1``0,1,3`
- **maxTrialNumPerGpu**
**maxTrialNumPerGpu** 用于指定每个 GPU 设备上最大并发的 Trial 数量。
- **useActiveGpu**
**useActiveGpu** 用于指定 NNI 是否使用还有其它进程的 GPU。 默认情况下,NNI 只会使用没有其它进程的空闲 GPU,如果 **useActiveGpu** 设置为 true,NNI 会使用所有 GPU。 此字段不适用于 Windows 版的 NNI。
- **machineList** 本机模式下可选。 键值对。
如果 **trainingServicePlatform** 为 remote,则需要设置 **machineList**。否则应将其置为空。
- **ip**
**ip** 是远程计算机的 ip 地址。
- **port**
**端口** 是用于连接远程计算机的 ssh 端口。
注意:如果 port 设为空,则为默认值 22。
- **username**
**username** 是远程计算机的用户名。
- **passwd**
**passwd** 指定了账户的密码。
- **sshKeyPath**
如果要使用 ssh 密钥登录远程计算机,则需要设置 **sshKeyPath****sshKeyPath** 为有效的 ssh 密钥文件路径。
注意:如果同时设置了 passwd 和 sshKeyPath,NNI 会使用 passwd。
- **passphrase**
**passphrase** 用于保护 ssh 密钥,如果没有使用,可为空。
- **gpuIndices**
**gpuIndices** 用于指定 GPU。设置此值后,远程计算机上只有指定的 GPU 会被用来运行 Trial 任务。 可指定单个或多个 GPU 的索引,多个 GPU 之间用逗号(,)隔开,例如 `1``0,1,3`
- **maxTrialNumPerGpu**
**maxTrialNumPerGpu** 用于指定每个 GPU 设备上最大并发的 Trial 数量。
- **useActiveGpu**
**useActiveGpu** 用于指定 NNI 是否使用还有其它进程的 GPU。 默认情况下,NNI 只会使用没有其它进程的空闲 GPU,如果 **useActiveGpu** 设置为 true,NNI 会使用所有 GPU。 此字段不适用于 Windows 版的 NNI。
- **kubeflowConfig**: 仅在 **trainingServicePlatform** 设为 `local` 时有效,否则,配置文件中不应该有 **localConfig** 部分。
- **operator**
**operator** 指定了 kubeflow 使用的 operator,NNI 当前版本支持 **tf-operator**
- **storage**
**storage** 指定了 kubeflow 的存储类型,包括 {**nfs****azureStorage**}。 此字段可选,默认值为 **nfs**。 如果使用了 azureStorage,此字段必须填写。
- **nfs**
**server** 是 NFS 服务器的地址
**path** 是 NFS 挂载的路径
- **keyVault**
如果用户使用 Azure Kubernetes Service,需要设置 keyVault 来使用 Azure 存储账户的私钥。 参考: https://docs.microsoft.com/zh-cn/azure/key-vault/key-vault-manage-with-cli2
- **vaultName**
**vaultName** 是 az 命令中 `--vault-name` 的值。
- **name**
**name** 是 az 命令中 `--name` 的值。
- **azureStorage**
如果用户使用了 Azure Kubernetes Service,需要设置 Azure 存储账户来存放代码文件。
- **accountName**
**accountName** 是 Azure 存储账户的名称。
- **azureShare**
**azureShare** 是 Azure 文件存储的共享参数。
- **uploadRetryCount**
如果上传文件至 Azure Storage 失败,NNI 会重试。此字段指定了重试的次数。
- **paiConfig** #### gpuIndices
- **userName** 可选。 字符串。 默认值:none。
**userName** 是 OpenPAI 的用户名。 用于指定特定的 GPU。设置此值后,只有指定的 GPU 会被用来运行 Trial 任务。 可以指定单个或多个 GPU 索引。 多个 GPU 索引,应用逗号(`,`)分隔,如 `1``0,1,3`。 默认情况下,将使用所有可用的 GPU。
- **password** #### maxTrialNumPerGpu
**password** 是 OpenPAI 用户的密码。 可选。 整数。 默认值:99999。
- **host** 用于指定 GPU 设备上的最大并发 Trial 的数量。
#### useActiveGpu
可选。 布尔。 默认值:false。
用于指定 GPU 上存在其他进程时是否使用此 GPU。 默认情况下,NNI 仅在 GPU 中没有其他活动进程时才使用 GPU。 如果 **useActiveGpu** 设置为 true,则 NNI 无论某 GPU 是否有其它进程,都将使用它。 此字段不适用于 Windows 版的 NNI。
### machineList
在 remote 模式下必需。 具有以下键的键值对的列表。
#### ip
必填。 可从当前计算机访问的 IP 地址。
远程计算机的 IP 地址。
#### port
可选。 整数。 有效端口。 默认值: 22。
用于连接计算机的 SSH 端口。
#### username
使用用户名/密码进行身份验证时是必需的。 字符串。
远程计算机的帐户。
#### passwd
使用用户名/密码进行身份验证时是必需的。 字符串。
指定帐户的密码。
#### sshKeyPath
如果使用 SSH 密钥进行身份验证,则为必需。 私钥文件的路径。
如果用户使用 SSH 密钥登录远程计算机,**sshKeyPath** 应是有效的 SSH 密钥文件路径。
*注意:如果同时设置了 passwd 和 sshKeyPath,NNI 会首先使用 passwd。*
#### passphrase
可选。 字符串。
用于保护 SSH 密钥,如果用户没有密码,可为空。
#### gpuIndices
可选。 字符串。 默认值:none。
用于指定特定的 GPU。设置此值后,只有指定的 GPU 会被用来运行 Trial 任务。 可以指定单个或多个 GPU 索引。 多个 GPU 索引,应用逗号(`,`)分隔,如 `1``0,1,3`。 默认情况下,将使用所有可用的 GPU。
#### maxTrialNumPerGpu
可选。 整数。 默认值:99999。
用于指定 GPU 设备上的最大并发 Trial 的数量。
#### useActiveGpu
可选。 布尔。 默认值:false。
用于指定 GPU 上存在其他进程时是否使用此 GPU。 默认情况下,NNI 仅在 GPU 中没有其他活动进程时才使用 GPU。 如果 **useActiveGpu** 设置为 true,则 NNI 无论某 GPU 是否有其它进程,都将使用它。 此字段不适用于 Windows 版的 NNI。
### kubeflowConfig
#### operator
必填。 字符串。 必须是 `tf-operator``pytorch-operator`
指定要使用的 Kubeflow 运算符,当前版本中 NNI 支持 `tf-operator`
#### storage
可选。 字符串。 默认值 `nfs`
指定 Kubeflow 的存储类型,包括 `nfs``azureStorage`
#### nfs
如果使用 nfs,则必需。 键值对。
- **server** 是 NFS 服务器的地址。
- **path** 是 NFS 挂载的路径。
#### keyVault
如果使用 Azure 存储,则必需。 键值对。
**keyVault** 设置为 Azure 存储帐户的私钥。 参考:https://docs.microsoft.com/en-us/azure/key-vault/key-vault-manage-with-cli2 。
- **vaultName** 是 az 命令中 `--vault-name` 的值。
- **name** 是 az 命令中 `--name` 的值。
#### azureStorage
如果使用 Azure 存储,则必需。 键值对。
设置 Azure 存储帐户以存储代码文件。
- **accountName** 是 Azure 存储账户的名称。
- **azureShare** 是 Azure 文件存储的共享参数。
#### uploadRetryCount
如果使用 Azure 存储,则必需。 1 到 99999 之间的整数。
如果上传文件至 Azure Storage 失败,NNI 会重试。此字段指定了重试的次数。
### paiConfig
#### userName
必填。 字符串。
OpenPAI 帐户的用户名。
#### password
如果使用密码身份验证,则需要。 字符串。
OpenPAI 帐户的密码。
#### token
如果使用 token 身份验证,则需要。 字符串。
可以从 OpenPAI 门户检索的个人访问 token。
#### host
必填。 字符串。
OpenPAI 的 IP 地址。
## 示例
### 本机模式
如果要在本机运行 Trial 任务,并使用标记来生成搜索空间,可参考下列配置:
authorName: test
experimentName: test_experiment
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: local
#可选项: true, false
useAnnotation: true
tuner:
#可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
trial:
command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0
**host** 是 OpenPAI 的主机地址。
## 样例 增加 Assessor 配置
authorName: test
experimentName: test_experiment
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: local
searchSpacePath: /nni/search_space.json
#可选项: true, false
useAnnotation: false
tuner:
#可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
assessor:
#可选项: Medianstop
builtinAssessorName: Medianstop
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
trial:
command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0
- **本机模式** 或者可以指定自定义的 Tuner 和 Assessor:
如果要在本机运行 Trial 任务,并使用标记来生成搜索空间,可参考下列配置: authorName: test
experimentName: test_experiment
```yaml trialConcurrency: 3
authorName: test maxExecDuration: 1h
experimentName: test_experiment maxTrialNum: 10
trialConcurrency: 3 #可选项: local, remote, pai, kubeflow
maxExecDuration: 1h trainingServicePlatform: local
maxTrialNum: 10 searchSpacePath: /nni/search_space.json
#可选项: local, remote, pai, kubeflow #可选项: true, false
trainingServicePlatform: local useAnnotation: false
#可选项: true, false tuner:
useAnnotation: true codeDir: /nni/tuner
tuner: classFileName: mytuner.py
#可选项: TPE, Random, Anneal, Evolution className: MyTuner
builtinTunerName: TPE classArgs:
classArgs: #可选项: maximize, minimize
#可选项: maximize, minimize optimize_mode: maximize
optimize_mode: maximize assessor:
trial: codeDir: /nni/assessor
command: python3 mnist.py classFileName: myassessor.py
codeDir: /nni/mnist className: MyAssessor
gpuNum: 0 classArgs:
``` #choice: maximize, minimize
optimize_mode: maximize
增加 Assessor 配置 trial:
```yaml
authorName: test
experimentName: test_experiment
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: local
searchSpacePath: /nni/search_space.json
#可选项: true, false
useAnnotation: false
tuner:
#可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
assessor:
#可选项: Medianstop
builtinAssessorName: Medianstop
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
trial:
command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0
```
或者可以指定自定义的 Tuner 和 Assessor:
```yaml
authorName: test
experimentName: test_experiment
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: local
searchSpacePath: /nni/search_space.json
#可选项: true, false
useAnnotation: false
tuner:
codeDir: /nni/tuner
classFileName: mytuner.py
className: MyTuner
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
assessor:
codeDir: /nni/assessor
classFileName: myassessor.py
className: MyAssessor
classArgs:
#choice: maximize, minimize
optimize_mode: maximize
trial:
command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0
```
- **远程模式**
如果要在远程服务器上运行 Trial 任务,需要增加服务器信息:
```yaml
authorName: test
experimentName: test_experiment
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: remote
searchSpacePath: /nni/search_space.json
#可选项: true, false
useAnnotation: false
tuner:
#可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
trial:
command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0
# 如果是本地 Experiment,machineList 可为空。
machineList:
- ip: 10.10.10.10
port: 22
username: test
passwd: test
- ip: 10.10.10.11
port: 22
username: test
passwd: test
- ip: 10.10.10.12
port: 22
username: test
sshKeyPath: /nni/sshkey
passphrase: qwert
```
- **pai 模式**
```yaml
authorName: test
experimentName: nni_test1
trialConcurrency: 1
maxExecDuration:500h
maxTrialNum: 1
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: pai
searchSpacePath: search_space.json
#可选项: true, false
useAnnotation: false
tuner:
#可选项: TPE, Random, Anneal, Evolution, BatchTuner
#SMAC (SMAC 需要使用 nnictl package 单独安装)
builtinTunerName: TPE
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
trial:
command: python3 main.py
codeDir: .
gpuNum: 4
cpuNum: 2
memoryMB: 10000
# 在 OpenPAI 上用来运行 Nni 作业的 docker 映像
image: msranni/nni:latest
# 在 OpenPAI 的 hdfs 上存储数据的目录,如:'hdfs://host:port/directory'
dataDir: hdfs://10.11.12.13:9000/test
# 在 OpenPAI 的 hdfs 上存储输出的目录,如:'hdfs://host:port/directory'
outputDir: hdfs://10.11.12.13:9000/test
paiConfig:
# OpenPAI 用户名
userName: test
# OpenPAI 密码
passWord: test
# OpenPAI 服务器 Ip
host: 10.10.10.10
```
- **Kubeflow 模式**
使用 NFS 存储。
```yaml
authorName: default
experimentName: example_mni
trialConcurrency: 1
maxExecDuration: 1h
maxTrialNum: 1
# 可选项: local, remote, pai, kubeflow
trainingServicePlatform: kubeflow
searchSpacePath: search_space.json
# 可选项: true, false
useAnnotation: false
tuner:
# 可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
# 可选项: maximize, minimize
optimize_mode: maximize
trial:
codeDir: .
worker:
replicas: 1
command: python3 mnist.py command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0 gpuNum: 0
cpuNum: 1
memoryMB: 8192
image: msranni/nni:latest ### 远程模式
kubeflowConfig:
operator: tf-operator 如果要在远程服务器上运行 Trial 任务,需要增加服务器信息:
nfs:
server: 10.10.10.10 authorName: test
path: /var/nfs/general experimentName: test_experiment
``` trialConcurrency: 3
maxExecDuration: 1h
使用 Azure 存储。 maxTrialNum: 10
#可选项: local, remote, pai, kubeflow
```yaml trainingServicePlatform: remote
authorName: default searchSpacePath: /nni/search_space.json
experimentName: example_mni #可选项: true, false
trialConcurrency: 1 useAnnotation: false
maxExecDuration: 1h tuner:
maxTrialNum: 1 #可选项: TPE, Random, Anneal, Evolution
# 可选项: local, remote, pai, kubeflow builtinTunerName: TPE
trainingServicePlatform: kubeflow classArgs:
searchSpacePath: search_space.json #可选项: maximize, minimize
# 可选项: true, false optimize_mode: maximize
useAnnotation: false trial:
#nniManagerIp: 10.10.10.10
tuner:
# 可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
# 可选项: maximize, minimize
optimize_mode: maximize
assessor:
builtinAssessorName: Medianstop
classArgs:
optimize_mode: maximize
trial:
codeDir: .
worker:
replicas: 1
command: python3 mnist.py command: python3 mnist.py
codeDir: /nni/mnist
gpuNum: 0 gpuNum: 0
cpuNum: 1 # 如果是本地 Experiment,machineList 可为空。
memoryMB: 4096 machineList:
- ip: 10.10.10.10
port: 22
username: test
passwd: test
- ip: 10.10.10.11
port: 22
username: test
passwd: test
- ip: 10.10.10.12
port: 22
username: test
sshKeyPath: /nni/sshkey
passphrase: qwert
### OpenPAI 模式
authorName: test
experimentName: nni_test1
trialConcurrency: 1
maxExecDuration:500h
maxTrialNum: 1
#可选项: local, remote, pai, kubeflow
trainingServicePlatform: pai
searchSpacePath: search_space.json
#可选项: true, false
useAnnotation: false
tuner:
#可选项: TPE, Random, Anneal, Evolution, BatchTuner
#SMAC (SMAC 需要使用 nnictl package 单独安装)
builtinTunerName: TPE
classArgs:
#可选项: maximize, minimize
optimize_mode: maximize
trial:
command: python3 main.py
codeDir: .
gpuNum: 4
cpuNum: 2
memoryMB: 10000
# 在 OpenPAI 上运行 NNI 的 Docker 映像
image: msranni/nni:latest image: msranni/nni:latest
kubeflowConfig: paiConfig:
operator: tf-operator # 登录 OpenPAI 的用户名
keyVault: userName: test
vaultName: Contoso-Vault # 登录 OpenPAI 的密码
name: AzureStorageAccountKey passWord: test
azureStorage: # OpenPAI 的 RestFUL 服务器地址
accountName: storage host: 10.10.10.10
azureShare: share01
```
\ No newline at end of file ### Kubeflow 模式
使用 NFS 存储。
authorName: default
experimentName: example_mni
trialConcurrency: 1
maxExecDuration: 1h
maxTrialNum: 1
# 可选项: local, remote, pai, kubeflow
trainingServicePlatform: kubeflow
searchSpacePath: search_space.json
# 可选项: true, false
useAnnotation: false
tuner:
# 可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
# 可选项: maximize, minimize
optimize_mode: maximize
trial:
codeDir: .
worker:
replicas: 1
command: python3 mnist.py
gpuNum: 0
cpuNum: 1
memoryMB: 8192
image: msranni/nni:latest
kubeflowConfig:
operator: tf-operator
nfs:
server: 10.10.10.10
path: /var/nfs/general
### Kubeflow 中使用 Azure 存储
authorName: default
experimentName: example_mni
trialConcurrency: 1
maxExecDuration: 1h
maxTrialNum: 1
# 可选项: local, remote, pai, kubeflow
trainingServicePlatform: kubeflow
searchSpacePath: search_space.json
# 可选项: true, false
useAnnotation: false
#nniManagerIp: 10.10.10.10
tuner:
# 可选项: TPE, Random, Anneal, Evolution
builtinTunerName: TPE
classArgs:
# 可选项: maximize, minimize
optimize_mode: maximize
assessor:
builtinAssessorName: Medianstop
classArgs:
optimize_mode: maximize
trial:
codeDir: .
worker:
replicas: 1
command: python3 mnist.py
gpuNum: 0
cpuNum: 1
memoryMB: 4096
image: msranni/nni:latest
kubeflowConfig:
operator: tf-operator
keyVault:
vaultName: Contoso-Vault
name: AzureStorageAccountKey
azureStorage:
accountName: storage
azureShare: share01
\ No newline at end of file
...@@ -41,9 +41,16 @@ nnictl 在执行时,使用 tmp 目录作为临时目录来复制 codeDir 下 ...@@ -41,9 +41,16 @@ nnictl 在执行时,使用 tmp 目录作为临时目录来复制 codeDir 下
无法打开 Web 界面的链接可能有以下几个原因: 无法打开 Web 界面的链接可能有以下几个原因:
* http://127.0.0.1http://172.17.0.1 以及 http://10.0.0.15 都是 localhost。如果在服务器或远程计算机上启动 Experiment, 可将此 IP 替换为所连接的 IP 来查看 Web 界面,如 http://[远程连接的地址]:8080 * `http://127.0.0.1``http://172.17.0.1` 以及 `http://10.0.0.15` 都是 localhost。如果在服务器或远程计算机上启动 Experiment, 可将此 IP 替换为所连接的 IP 来查看 Web 界面,如 `http://[远程连接的地址]:8080`
* 如果使用服务器 IP 后还是无法看到 Web 界面,可检查此服务器上是否有防火墙或需要代理。 或使用此运行 NNI Experiment 的服务器上的浏览器来查看 Web 界面。 * 如果使用服务器 IP 后还是无法看到 Web 界面,可检查此服务器上是否有防火墙或需要代理。 或使用此运行 NNI Experiment 的服务器上的浏览器来查看 Web 界面。
* 另一个可能的原因是 Experiment 启动失败了,NNI 无法读取 Experiment 的信息。 可在如下目录中查看 NNIManager 的日志: ~/nni/experiment/[your_experiment_id] /log/nnimanager.log * 另一个可能的原因是 Experiment 启动失败了,NNI 无法读取 Experiment 的信息。 可在如下目录中查看 NNIManager 的日志: `~/nni/experiment/[your_experiment_id]` `/log/nnimanager.log`
### RESTful 服务器启动失败
可能是网络配置有问题。可检查以下问题。
* 可能需要链接 `127.0.0.1``localhost`。 在 `/etc/hosts` 中增加 `127.0.0.1 localhost`
* 也可能设置了一些代理。检查环境中是否有如 `HTTP_PROXY``HTTPS_PROXY` 的变量,如果有,则需要取消。
### NNI 在 Windows 上的问题 ### NNI 在 Windows 上的问题
......
...@@ -79,4 +79,6 @@ NNI 中有不同的错误类型。 根据严重程度,可分为三类。 当 N ...@@ -79,4 +79,6 @@ NNI 中有不同的错误类型。 根据严重程度,可分为三类。 当 N
![](../../img/trial_error.jpg) ![](../../img/trial_error.jpg)
如图,每个 Trial 都有日志路径,可以从中找到 Trial 的日志和 stderr。 如图,每个 Trial 都有日志路径,可以从中找到 Trial 的日志和 stderr。
\ No newline at end of file
除了 Experiment 级调试之外,NNI 还提供调试单个 Trial 的功能,而无需启动整个 Experiment。 有关调试单个 Trial 代码的更多信息,请参考[独立运行模式](../TrialExample/Trials.md#standalone-mode-for-debug)
\ No newline at end of file
# 安装 NNI # 安装 NNI
当前支持在 Linux,Mac 和 Windows(本机,远程和 OpenPAI 模式)下安装。 当前支持在 Linux,Mac 和 Windows 下安装。
## **在 Linux 和 Mac 下安装** ## **在 Linux 和 Mac 下安装**
......
# Windows 上的 NNI(实验阶段的功能) # Windows 上的 NNI(实验阶段的功能)
当前 Windows 上支持本机、远程和 OpenPAI 模式。 推荐 Windows 10 的 1809 版,其经过了测试。 Windows 上运行 NNI 是测试中的功能。 推荐 Windows 10 的 1809 版,其经过了测试。
## **在 Windows 上安装** ## **在 Windows 上安装**
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
完成操作后,使用 **config_windows.yml** 配置来开始 Experiment 进行验证。 完成操作后,使用 **config_windows.yml** 配置来开始 Experiment 进行验证。
```bash ```bash
nnictl create --config nni\examples\trials\mnist\config_windows.yml nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
``` ```
同样,其它示例的 YAML 配置中也需将 Trial 命令的 `python3` 替换为 `python` 同样,其它示例的 YAML 配置中也需将 Trial 命令的 `python3` 替换为 `python`
...@@ -45,6 +45,10 @@ nnictl create --config nni\examples\trials\mnist\config_windows.yml ...@@ -45,6 +45,10 @@ nnictl create --config nni\examples\trials\mnist\config_windows.yml
当前不支持 SMAC,原因可参考[此问题](https://github.com/automl/SMAC3/issues/483) 当前不支持 SMAC,原因可参考[此问题](https://github.com/automl/SMAC3/issues/483)
### 将 Windows 服务器用作远程服务器
目前不支持。
注意: 注意:
* 如果遇到如 `Segmentation fault` 这样的任何错误,参考[常见问题](FAQ.md) * 如果遇到如 `Segmentation fault` 这样的任何错误,参考[常见问题](FAQ.md)
\ No newline at end of file
...@@ -55,19 +55,19 @@ nnictl 支持的命令: ...@@ -55,19 +55,19 @@ nnictl 支持的命令:
> 在默认端口 8080 上创建一个新的 Experiment > 在默认端口 8080 上创建一个新的 Experiment
```bash ```bash
nnictl create --config nni/examples/trials/mnist/config.yml nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
``` ```
> 在指定的端口 8088 上创建新的 Experiment > 在指定的端口 8088 上创建新的 Experiment
```bash ```bash
nnictl create --config nni/examples/trials/mnist/config.yml --port 8088 nnictl create --config nni/examples/trials/mnist-tfv1/config.yml --port 8088
``` ```
> 在指定的端口 8088 上创建新的 Experiment,并启用调试模式 > 在指定的端口 8088 上创建新的 Experiment,并启用调试模式
```bash ```bash
nnictl create --config nni/examples/trials/mnist/config.yml --port 8088 --debug nnictl create --config nni/examples/trials/mnist-tfv1/config.yml --port 8088 --debug
``` ```
注意: 注意:
...@@ -216,10 +216,10 @@ nnictl 支持的命令: ...@@ -216,10 +216,10 @@ nnictl 支持的命令:
* 示例 * 示例
`使用 'examples/trials/mnist/search_space.json' 来更新 Experiment 的搜索空间` `使用 'examples/trials/mnist-tfv1/search_space.json' 来更新 Experiment 的搜索空间`
```bash ```bash
nnictl update searchspace [experiment_id] --filename examples/trials/mnist/search_space.json nnictl update searchspace [experiment_id] --filename examples/trials/mnist-tfv1/search_space.json
``` ```
* **nnictl update concurrency** * **nnictl update concurrency**
......
...@@ -48,7 +48,7 @@ if __name__ == '__main__': ...@@ -48,7 +48,7 @@ if __name__ == '__main__':
run_trial(params) run_trial(params)
``` ```
注意:完整实现请参考 [examples/trials/mnist/mnist_before.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist_before.py) 注意:完整实现请参考 [examples/trials/mnist-tfv1/mnist_before.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-tfv1/mnist_before.py)
上面的代码一次只能尝试一组参数,如果想要调优学习率,需要手工改动超参,并一次次尝试。 上面的代码一次只能尝试一组参数,如果想要调优学习率,需要手工改动超参,并一次次尝试。
...@@ -84,7 +84,7 @@ NNI 用来帮助超参调优。它的流程如下: ...@@ -84,7 +84,7 @@ NNI 用来帮助超参调优。它的流程如下:
+ } + }
``` ```
*实现代码:[search_space.json](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/search_space.json)* *实现代码:[search_space.json](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-tfv1/search_space.json)*
**第二步**:修改 `Trial` 代码来从 NNI 获取超参,并返回 NNI 最终结果。 **第二步**:修改 `Trial` 代码来从 NNI 获取超参,并返回 NNI 最终结果。
...@@ -111,7 +111,7 @@ NNI 用来帮助超参调优。它的流程如下: ...@@ -111,7 +111,7 @@ NNI 用来帮助超参调优。它的流程如下:
run_trial(params) run_trial(params)
``` ```
*实现代码:[mnist.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist.py)* *实现代码:[mnist.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-tfv1/mnist.py)*
**第三步**:定义 YAML 格式的`配置`文件,其中声明了搜索空间和 Trial 文件的`路径`,以及`其它信息`,如调优算法,最大尝试次数,最大运行时间等等。 **第三步**:定义 YAML 格式的`配置`文件,其中声明了搜索空间和 Trial 文件的`路径`,以及`其它信息`,如调优算法,最大尝试次数,最大运行时间等等。
...@@ -136,16 +136,16 @@ trial: ...@@ -136,16 +136,16 @@ trial:
注意:**在 Windows 上,需要将 Trial 命令的 `python3` 改为 `python`** 注意:**在 Windows 上,需要将 Trial 命令的 `python3` 改为 `python`**
*实现代码:[config.yml](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/config.yml)* *实现代码:[config.yml](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-tfv1/config.yml)*
上面的代码都已准备好,并保存在 [examples/trials/mnist/](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist) 上面的代码都已准备好,并保存在 [examples/trials/mnist-tfv1/](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-tfv1)
#### Linux 和 macOS #### Linux 和 macOS
从命令行使用 **config.yml** 文件启动 MNIST Experiment 。 从命令行使用 **config.yml** 文件启动 MNIST Experiment 。
```bash ```bash
nnictl create --config nni/examples/trials/mnist/config.yml nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
``` ```
#### Windows #### Windows
...@@ -155,7 +155,7 @@ trial: ...@@ -155,7 +155,7 @@ trial:
**注意**:如果使用 Windows,则需要在 config.yml 文件中,将 `python3` 改为 `python`,或者使用 config_windows.yml 来开始 Experiment。 **注意**:如果使用 Windows,则需要在 config.yml 文件中,将 `python3` 改为 `python`,或者使用 config_windows.yml 来开始 Experiment。
```bash ```bash
nnictl create --config nni\examples\trials\mnist\config_windows.yml nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
``` ```
注意:**nnictl** 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。 查看[这里](Nnictl.md),了解 `nnictl` 更多用法。 注意:**nnictl** 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。 查看[这里](Nnictl.md),了解 `nnictl` 更多用法。
...@@ -253,4 +253,4 @@ Experiment 相关信息会显示在界面上,配置和搜索空间等。 可 ...@@ -253,4 +253,4 @@ Experiment 相关信息会显示在界面上,配置和搜索空间等。 可
* [如何在多机上运行 Experiment?](../TrainingService/RemoteMachineMode.md) * [如何在多机上运行 Experiment?](../TrainingService/RemoteMachineMode.md)
* [如何在 OpenPAI 上运行 Experiment?](../TrainingService/PaiMode.md) * [如何在 OpenPAI 上运行 Experiment?](../TrainingService/PaiMode.md)
* [如何通过 Kubeflow 在 Kubernetes 上运行 Experiment?](../TrainingService/KubeflowMode.md) * [如何通过 Kubeflow 在 Kubernetes 上运行 Experiment?](../TrainingService/KubeflowMode.md)
* [如何通过 FrameworkController 在 Kubernetes 上运行 Experiment?](../TrainingService/FrameworkControllerMode.md) * [如何通过 FrameworkController 在 Kubernetes 上运行 Experiment?](../TrainingService/FrameworkControllerMode.md)
\ No newline at end of file
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
Trial 启动 Experiment 来检查环境。 例如,运行命令 Trial 启动 Experiment 来检查环境。 例如,运行命令
nnictl create --config ~/nni/examples/trials/mnist/config.yml nnictl create --config ~/nni/examples/trials/mnist-tfv1/config.yml
并打开网页界面查看 并打开网页界面查看
......
...@@ -6,7 +6,7 @@ Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Tri ...@@ -6,7 +6,7 @@ Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Tri
这是 MNIST 在使用了 'Curvefitting' Assessor 的 'maximize' 模式后的实验结果,可以看到 Assessor 成功的将大量最终结果不好的 Trial **提前结束** 。 使用 Assessor,能在相同的计算资源下,得到更好的结果。 这是 MNIST 在使用了 'Curvefitting' Assessor 的 'maximize' 模式后的实验结果,可以看到 Assessor 成功的将大量最终结果不好的 Trial **提前结束** 。 使用 Assessor,能在相同的计算资源下,得到更好的结果。
*实现代码:config_assessor.yml <https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/config_assessor.yml>* *实现代码:config_assessor.yml <https://github.com/Microsoft/nni/blob/master/examples/trials/mnist-tfv1/config_assessor.yml>*
.. image:: ../img/Assessor.png .. image:: ../img/Assessor.png
......
...@@ -17,3 +17,4 @@ ...@@ -17,3 +17,4 @@
Network Morphism<Tuner/NetworkmorphismTuner> Network Morphism<Tuner/NetworkmorphismTuner>
Hyperband<Tuner/HyperbandAdvisor> Hyperband<Tuner/HyperbandAdvisor>
BOHB<Tuner/BohbAdvisor> BOHB<Tuner/BohbAdvisor>
PPO Tuner <Tuner/PPOTuner>
...@@ -28,7 +28,7 @@ author = 'Microsoft' ...@@ -28,7 +28,7 @@ author = 'Microsoft'
# The short X.Y version # The short X.Y version
version = '' version = ''
# The full version, including alpha/beta/rc tags # The full version, including alpha/beta/rc tags
release = 'v1.1' release = 'v1.2'
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
......
...@@ -10,3 +10,4 @@ ...@@ -10,3 +10,4 @@
Scikit-learn<./TrialExample/SklearnExamples> Scikit-learn<./TrialExample/SklearnExamples>
EvolutionSQuAD<./TrialExample/SquadEvolutionExamples> EvolutionSQuAD<./TrialExample/SquadEvolutionExamples>
GBDT<./TrialExample/GbdtExample> GBDT<./TrialExample/GbdtExample>
RocksDB <./TrialExample/RocksdbExamples>
#################
特征工程 特征工程
################# ===================
很高兴的宣布 NNI 的特征工程包 Alpha 版本发布了。 很高兴的宣布 NNI 的特征工程包 Alpha 版本发布了。
其仍处于试验阶段,会根据使用反馈来演化。 其仍处于试验阶段,会根据使用反馈来演化。
......
################# ##############
NAS 算法 NAS 算法
################# ##############
自动化的神经网络架构(NAS)搜索在寻找更好的模型方面发挥着越来越重要的作用。 自动化的神经网络架构(NAS)搜索在寻找更好的模型方面发挥着越来越重要的作用。
最近的研究工作证明了自动化 NAS 的可行性,并发现了一些超越手动设计和调整的模型。 最近的研究工作证明了自动化 NAS 的可行性,并发现了一些超越手动设计和调整的模型。
...@@ -20,6 +20,6 @@ NAS 算法 ...@@ -20,6 +20,6 @@ NAS 算法
概述 <NAS/Overview> 概述 <NAS/Overview>
NAS 接口 <NAS/NasInterface> NAS 接口 <NAS/NasInterface>
ENAS <NAS/Overview> ENAS <NAS/ENAS>
DARTS <NAS/Overview> DARTS <NAS/DARTS>
P-DARTS <NAS/Overview> P-DARTS <NAS/Overview>
...@@ -10,3 +10,4 @@ ...@@ -10,3 +10,4 @@
配置<Tutorial/ExperimentConfig> 配置<Tutorial/ExperimentConfig>
搜索空间<Tutorial/SearchSpaceSpec> 搜索空间<Tutorial/SearchSpaceSpec>
实现训练平台<TrainingService/HowToImplementTrainingService> 实现训练平台<TrainingService/HowToImplementTrainingService>
Framework Library <SupportedFramework_Library>
...@@ -2,8 +2,9 @@ NNI 支持的训练平台介绍 ...@@ -2,8 +2,9 @@ NNI 支持的训练平台介绍
===================================== =====================================
.. toctree:: .. toctree::
概述 <./TrainingService/SupportTrainingService>
本机<./TrainingService/LocalMode> 本机<./TrainingService/LocalMode>
远程<./TrainingService/RemoteMachineMode> 远程<./TrainingService/RemoteMachineMode>
OpenPAI<./TrainingService/PaiMode> OpenPAI<./TrainingService/PaiMode>
Kubeflow<./TrainingService/KubeflowMode> Kubeflow<./TrainingService/KubeflowMode>
FrameworkController<./TrainingService/FrameworkControllerMode> FrameworkController<./TrainingService/FrameworkControllerMode>
\ No newline at end of file
...@@ -113,22 +113,18 @@ ...@@ -113,22 +113,18 @@
gpuNum: 0 gpuNum: 0
cpuNum: 1 cpuNum: 1
memoryMB: 32869 memoryMB: 32869
#在 OpenPAI 上运行 NNI 任务的 Docker 映像 # 在 OpenPAI 上运行 NNI 的 Docker 映像
image: msranni/nni:latest image: msranni/nni:latest
#在 OpenPAI 的 hdfs 目录上存储数据的目录,如:'hdfs://host:port/directory'
dataDir: hdfs://10.10.10.10:9000/username/nni
#在 OpenPAI 的 hdfs 目录上存储输出的目录,如:'hdfs://host:port/directory'
outputDir: hdfs://10.10.10.10:9000/username/nni
paiConfig: paiConfig:
#登录 OpenPAI 的用户名 # 登录 OpenPAI 的用户名
userName: username userName: username
#登录 OpenPAI 的密码 # 登录 OpenPAI 的密码
passWord: password passWord: password
# OpenPAI 的 RESTful 服务器地址 # OpenPAI 的 RestFUL 服务器地址
host: 10.10.10.10 host: 10.10.10.10
将默认值改为个人账户和服务器信息。 包括 `nniManagerIp`, `dataDir`, `outputDir`, `userName`, `passWord``host` 将默认值改为个人账户和服务器信息。 包括 `nniManagerIp`, `userName`, `passWord``host`.
在 "trial" 部分中,如果需要使用 GPU 来进行架构搜索,可将 `gpuNum``0` 改为 `1`。 根据训练时长,可以增加 `maxTrialNum``maxExecDuration` 在 "trial" 部分中,如果需要使用 GPU 来进行架构搜索,可将 `gpuNum``0` 改为 `1`。 根据训练时长,可以增加 `maxTrialNum``maxExecDuration`
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment