自动调参NNI 模型设置与log信息设置

自动调参NNI 模型设置与log信息设置,第1张

自动调参NNI 模型设置与log信息设置 Experiment 配置

创建 Experiment 所需要的配置文件。 本文介绍了配置文件的内容。

注解

此文档的字段使用 camelCase 法命名。 对于 Python 库 nni.experiment,需要转换成 snake_case
形式。 在此文档中,字段类型被格式化为 Python 类型提示。 因此,JSON 对象被称为 dict,数组被称为 list。
一些字段采用文件或目录的路径, 除特别说明,均支持绝对路径和相对路径,~ 将扩展到 home 目录。 在写入 YAML
文件时,相对路径是相对于包含该文件目录的路径。 在 Python 代码中赋值时,相对路径是相对于当前工作目录的路径。 在将 YAML
文件加载到 Python 类,以及将 Python 类保存到 YAML 文件时,所有相对路径都转换为绝对路径。 将字段设置为 None 或
null 时相当于不设置该字段。

Contents

示例

  • 本机模式

  • 本机模式(内联搜索空间)

  • 远程模式

参考

  • Experiment(实验)配置参考
  • experimentName
  • searchSpaceFile
  • searchSpace
  • trialCommand
  • trialCodeDirectory
  • trialConcurrency
  • trialGpuNumber
  • maxExperimentDuration
  • maxTrialNumber
  • nniManagerIp
  • useAnnotation
  • debug
  • logLevel
  • experimentWorkingDirectory
  • tunerGpuIndices
  • tuner
  • assessor
  • advisor
  • trainingService
  • sharedStorage
  • AlgorithmConfig
  • name
  • className
  • codeDirectory
  • classArgs
  • TrainingServiceConfig
  • LocalConfig
  • RemoteConfig
  • OpenpaiConfig
  • AmlConfig
  • HybridConfig
  • SharedStorageConfig
  • nfsConfig
  • azureBlobConfig
示例 本机模式
experimentName: MNIST
searchSpaceFile: search_space.json
trialCommand: python mnist.py
trialCodeDirectory: .
trialGpuNumber: 1
trialConcurrency: 2
maxExperimentDuration: 24h
maxTrialNumber: 100
tuner:
  name: TPE
  classArgs:
    optimize_mode: maximize
trainingService:
  platform: local
  useActiveGpu: True
本机模式(内联搜索空间)
searchSpace:
  batch_size:
    _type: choice
    _value: [16, 32, 64]
  learning_rate:
    _type: loguniform
    _value: [0.0001, 0.1]
trialCommand: python mnist.py
trialGpuNumber: 1
trialConcurrency: 2
tuner:
  name: TPE
  classArgs:
    optimize_mode: maximize
trainingService:
  platform: local
  useActiveGpu: True
远程模式
experimentName: MNIST
searchSpaceFile: search_space.json
trialCommand: python mnist.py
trialCodeDirectory: .
trialGpuNumber: 1
trialConcurrency: 2
maxExperimentDuration: 24h
maxTrialNumber: 100
tuner:
  name: TPE
  classArgs:
    optimize_mode: maximize
trainingService:
  platform: remote
  machineList:
    - host: 11.22.33.44
      user: alice
      password: xxxxx
    - host: my.domain.com
      user: bob
      sshKeyFile: ~/.ssh/id_rsa
参考 Experiment(实验)配置参考

experimentName
Experiment 的助记名称, 这将显示在 WebUI 和 nnictl 中。
类型:Optional[str]

searchSpaceFile
包含搜索空间 JSON 文件的路径(path)。
类型:Optional[str]
搜索空间格式由 Tuner 决定, 内置 Tuner 的通用格式在 这里。 内置 Tuner 的通用格式在 这里。
与 searchSpace 互斥。

searchSpace
搜索空间对象。
类型:Optional[JSON]
格式由 Tuner 决定, 内置 Tuner 的通用格式在 这里。 内置 Tuner 的通用格式在 这里。
注意,None 意味着“没有这样的字段”,所以空的搜索空间应该写成 {}。
与 searchSpaceFile 互斥。

trialCommand
启动 Trial 的命令。
类型:str
该命令将在 Linux 和 macOS 上的 bash 中执行,在 Windows 上的 PowerShell 中执行。
注意在 Linux 和 macOS 中使用python3,在 Windows 中使用 python。

trialCodeDirectory
到 Trial 源文件的目录的路径(path)。
类型:str
默认值:"."
此目录中的所有文件都将发送到训练机器,除了 .nniignore 文件。 (详细信息,请参考 快速入门 的 nniignore 部分。)
trialConcurrency
指定同时运行的 Trial 数目。
类型:int
实际的并发性还取决于硬件资源,可能小于此值。

trialGpuNumber
每个 Trial 使用的 GPU 数目。
类型:Optional[int]
对于各种训练平台,这个字段的含义可能略有不同, 尤其是设置为 0 或者 None 时, 指定 训练平台。
在本地模式下,将该字段设置为零将阻止 Trial 获取 GPU(通过置空 CUDA_VISIBLE_DEVICES )。 当设置为 None 时,Trial 将被创建和调度,就像它们不使用 GPU 一样, 但是它们仍然可以根据需要使用所有 GPU 资源。

maxExperimentDuration
如果指定,将限制此 Experiment 的持续时间。
类型:Optional[str]
格式:数字 + s|m|h|d
示例:“10m”, “0.5h”
当时间耗尽时,Experiment 将停止创建 Trial,但仍然服务于 web UI。

maxTrialNumber
如果指定,将限制创建的 Trial 数目。
类型:Optional[int]
当预算耗尽时,Experiment 将停止创建 Trial,但仍然服务于 web UI。
nniManagerIp
当前机器的 IP,用于训练机器访问 NNI 管理器。 本机模式下不可选。 本机模式下不可选。
类型:Optional[str]
如果未指定,将使用 eth0 的 IPv4 地址。
除本地模式外,强烈建议手动设置此字段。

useAnnotation
启动 annotation。
类型:Optional[bool]
默认值:false
使用 annotation 时,searchSpace 和 searchSpaceFile 不应手动指定。

debug
启动调试模式
类型:str
默认值:false
启用后,日志记录将更加详细,并且一些内部验证将被放宽。

logLevel
设置整个系统的日志级别。
类型:Optional[str]
候选项:“trace”, “debug”, “info”, “warning”, “error”, “fatal”
默认为 “info” 或 “debug”,取决于 debug 选项。 启用调试模式时,LogLevel 设置为 “debug”,否则,LogLevel 设置为 “Info”。
NNI 的大多数模块都会受到此值的影响,包括 NNI 管理器、Tuner、训练平台等。
Trial 是一个例外,它的日志记录级别由 Trial 代码直接管理。
对于 Python 模块,“trace” 充当日志级别0,“fatal” 表示 logging.CRITICAL。

experimentWorkingDirectory
指定目录 directory 来存放日志、检查点、元数据和其他运行时的内容。
类型:Optional[str]
默认:~/nni-experiments
NNI 将创建一个以 Experiment ID 命名的子目录,所以在多个 Experiment 中使用同一个目录不会有冲突。

tunerGpuIndices
设定对 Tuner、Assessor 和 Advisor 可见的 GPU。
类型: Optional[list[int] | str | int]
这将是 Tuner 进程的 CUDA_VISIBLE_DEVICES 环境变量,
因为 Tuner、Assessor 和 Advisor 在同一个进程中运行,所以此选项将同时影响它们。

tuner
指定 Tuner。
类型:Optional AlgorithmConfig
内置的 Tuner 可以在 这里 找到,你可以按照 此教程 来定制一个新的 Tuner。

assessor
指定 Assessor。
类型:Optional AlgorithmConfig
内置的 Assessor 可以在 这里 找到,你可以按照 此教程 来定制一个新的 Assessor。

advisor
指定 Advisor。
类型:Optional AlgorithmConfig
NNI 提供了两个内置的 Advisor:BOHB 和 Hyperband,你可以按照 此教程 来定制一个新的 Advisor。

trainingService
类型:TrainingServiceConfig

sharedStorage
配置共享存储,详细的用法可以在 这里 找到。
类型:Optional SharedStorageConfig

AlgorithmConfig
AlgorithmConfig 描述 tuner / assessor / advisor 算法。
对于自定义算法,有两种方法来描述它们:
注册算法 ,像内置算法一样使用。 (首选) (首选)
指定代码目录和类名。

name
内置或注册算法的名称。
类型:对于内置和注册算法使用 None,其他自定义算法使用 str

className
未注册的自定义算法的限定类名。
类型:对于内置和注册算法使用 None,其他自定义算法使用 str
示例:“my_tuner.MyTuner”

codeDirectory
到自定义算法类的目录的路径(path)。
类型:对于内置和注册算法使用 str,其他自定义算法使用 None

classArgs
传递给算法类构造函数的关键字参数。
类型:Optional[dict[str, Any]]
有关支持的值,请参阅算法文档。

TrainingServiceConfig
以下之一:
LocalConfig
RemoteConfig
OpenpaiConfig
AmlConfig
HybridConfig
对于 Kubeflow, frameworkController, 和 AdaptDL 训练平台,目前 NNI 建议使用 v1 配置模式 。

LocalConfig
platform
字符串常量 “local”。

useActiveGpu
指定 NNI 是否应向被其他任务占用的 GPU 提交 Trial。
类型:Optional[str]
必须在 trialgpunmber 大于零时设置。
以下过程可以使GPU “active” 起来:
非 NNI 的 CUDA 程序
图形化桌面
其他 NNI 实例提交的 Trial,如果您在同一时间运行了多个 NNI Experiment
其他用户的 CUDA 程序,如果你使用共享服务器
如果你使用的是图形 *** 作系统,如 Windows 10 或 Ubuntu 桌面,请将此字段设置为 True,否则,图形用户界面将阻止 NNI 启动任何 Trial。
当你创建多个 NNI Experiment 并且将 useActiveGpu 设置为 True 时,它们将同时提交多个 Trial 到同一个 GPU。

maxTrialNumberPerGpu
指定可以共享一个 GPU 的 Trial 数目。
类型:int
默认值:1

gpuIndices
设定对 Trial 进程可见的 GPU。
类型: Optional[list[int] | str | int]
如果 trialGpuNumber 小于此值的长度,那么每个 Trial 只能看到一个子集。
这用作环境变量 CUDA_VISIBLE_DEVICES。

RemoteConfig
详情查看 这里。

platform
字符串常量 “remote”。

machineList
训练机器列表
类型: RemoteMachineConfig 列表

reuseMode
启动 重用模式。
类型:str

RemoteMachineConfig
host
机器的 IP 或主机名(域名)。
类型:str

port
SSH 服务端口。
类型:int
默认值:22

user
登录用户名。
类型:str

password
登录密码。
类型:Optional[str]
如果未指定,则将使用 sshKeyFile。

sshKeyFile
到 sshKeyFile的路径(path)。
类型:Optional[str]
仅在未指定 password 时使用。

sshPassphrase
SSH 标识文件的密码。
类型:Optional[str]

useActiveGpu
指定 NNI 是否应向被其他任务占用的 GPU 提交 Trial。
类型:str
默认值:false
必须在 trialgpunmber 大于零时设置。
以下过程可以使GPU “active” 起来:
非 NNI 的 CUDA 程序

图形化桌面

其他 NNI 实例提交的 Trial,如果您在同一时间运行了多个 NNI Experiment
其他用户的 CUDA 程序,如果你使用共享服务器
如果你使用的是图形 *** 作系统,如 Ubuntu 桌面,请将此字段设置为 True,否则,图形用户界面将阻止 NNI 启动任何 Trial。
当你创建多个 NNI Experiment 并且将 useActiveGpu 设置为 True 时,它们将同时提交多个 Trial 到同一个 GPU。

maxTrialNumberPerGpu
指定可以共享一个 GPU 的 Trial 数目。
类型:int
默认值:1

gpuIndices
设定对 Trial 进程可见的 GPU。
类型: Optional[list[int] | str | int]
如果 trialGpuNumber 小于此值的长度,那么每个 Trial 只能看到一个子集。
这用作环境变量 CUDA_VISIBLE_DEVICES。

pythonPath
指定 Python 环境。
类型:Optional[list[int] | str]
这个路径将被插入到 PATH 的前面。 以下之一:
(linux) pythonPath: /opt/python3.7/bin
(windows) pythonPath: C:/Python37
如果你是在 Anaconda 上工作,那就有所不同。 在Windows上,你还必须添加 …/script 和 …/Library/bin,并用 ; 分隔。 示例如下:

(linux anaconda) pythonPath: /home/yourname/anaconda3/envs/myenv/bin/

(windows anaconda) pythonPath:
C:/Users/yourname/.conda/envs/myenv;C:/Users/yourname/.conda/envs/myenv/scripts;C:/Users/yourname/.conda/envs/myenv/Library/bin

如果不同机器的准备步骤不同,这将非常有用。

OpenpaiConfig
详情查看 这里。

platform
字符串常量 “openpai”。

host
OpenPAI 平台的主机名。
类型:str
可能包括 https:// 或 http:// 前缀。
默认情况下将使用 HTTPS。

username
OpenPAI 用户名。
类型:str

token
OpenPAI 用户令牌。
类型:str
这可以在 OpenPAI 用户设置页面中找到。

trialCpuNumber
指定每个 Trial 在 OpenPAI 容器中使用的 CPU 数。
类型:bool

trialMemorySize
指定每个 Trial 在 OpenPAI 容器中的内存限制。
类型:str
格式:数字 + tb|gb|mb|kb
示例:“8gb”, “8192mb”

storageConfigName
设置 OpenPAI 中使用的存储名称。
类型:str

dockerImage
运行 Trial 的 Docker 镜像的名称和标签。
类型:str
默认:“msranni/nni:latest”

localStorageMountPoint
当前机器中存储服务(通常是NFS)的挂载点路径。
类型:str

containerStorageMountPoint
Docker 容器中存储服务(通常是NFS)的挂载点。
类型:Optional[str]
这必须是绝对路径。

reuseMode
启动 重用模式。
类型:str
默认值:false

openpaiConfig
嵌入的 OpenPAI 配置文件。
类型:Optional[JSON]

openpaiConfigFile
到 OpenPAI 配置文件的路径(path)
类型:Optional[list[int] | str]
示例在 这里。

AmlConfig
详细用法参考 这里。

platform
字符串常量 “aml”。

dockerImage
运行 Trial 的 Docker 镜像的名称和标签。
类型:Optional[list[int] | str]
默认:“msranni/nni:latest”

subscriptionId
Azure 订阅 ID。
类型:str

resourceGroup
Azure 资源组名称。
类型:str

workspaceName
Azure 工作区名称。
类型:str

computeTarget
AML 计算集群名称。
类型:str

HybridConfig
目前仅支持 LocalConfig, RemoteConfig, OpenpaiConfig 和 AmlConfig 配置。 详细用法参考 这里。
类型:TrainingServiceConfig 列表

SharedStorageConfig
详细用法参考 这里。

nfsConfig
storageType
字符串常量 “NFS”

localMountPoint
已经或将要在本地挂载存储的路径。
类型:str
如果路径不存在,则会自动创建。 推荐使用绝对路径,即 /tmp/nni-shared-storage

remoteMountPoint
远程挂载存储的路径。
类型:str
如果路径不存在,则会自动创建。 推荐使用相对路径。 即, ./nni-shared-storage

localMounted
指定挂载共享存储的对象和状态。
类型:str
候选项:“usermount”, “nnimount”, “nomount”
usermount 表示已经在 localMountPoint 上挂载了此存储。 nnimount 表示 NNI 将尝试在 localMountPoint 上挂载此存储。 nomount 表示存储不会挂载在本地机器上,将在未来支持部分存储。

nfsServer
NFS 服务器主机
类型:str

exportedDirectory
NFS 服务器导出目录,详情参考 这里 。
类型:str

azureBlobConfig
storageType
字符串常量 “AzureBlob”

localMountPoint
已经或将要在本地挂载存储的路径。
类型:str
如果路径不存在,则会自动创建。 推荐使用绝对路径,即 /tmp/nni-shared-storage

remoteMountPoint
远程挂载存储的路径。
类型:str
如果路径不存在,它将被自动创建。 建议使用相对路径。 即, ./nni-shared-storage
注意:使用 AzureBlob 时,此目录必须是空的。

localMounted
指定挂载共享存储的对象和状态。
类型:str
候选值:“usermount”, “nnimount”, “nomount”
usermount 表示已经在 localMountPoint 上挂载了此存储。 nnimount 表示 NNI 将尝试在 localMountPoint 上挂载此存储。 nomount 表示存储不会挂载在本地机器上,将在未来支持部分存储。

storageAccountName
Azure 存储账户名称。
类型:str

storageAccountKey
Azure 存储账户密钥。
类型:Optional[str]
如果未设置 storageAccountKey,则首先需要在 Azure CLI 中使用 az login 并设置 resourceGroupName 。

resourceGroupName
AzureBlob 容器所属的资源组。
类型:Optional[str]
如果 storageAccountKey 没有设置则必必需。

containerName
AzureBlob 容器名。
类型:str

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5571747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存