OpenBayes 配置文件
为执行提供默认的参数
OpenBayes 配置文件(openbayes.yaml
)与命令行工具结合使用,可以大大简化重复的命令的输入。
当使用命令行工具时,可以通过命令参数的形式将所需要的「环境」「资源」「数据集」等信息传递进来,例如:
bayes gear run task \
--env=pytorch-2.0 \ # 指定运行时环境
--resource=t4 \ # 指定所使用的资源,通过命令 bayes gear resource 可以在 USAGE 字段看到命令
--data openbayes/mnist/1:/input0 \ # 所要绑定的数据
-- python main.py # 入口命令
通过 openbayes.yaml
可以为当前目录下运行任务提供默认的命令,例如我们定义一个内容如下的 openbayes.yaml
:
data_bindings:
- data: openbayes/mnist/1
path: /input0
type: ro
resource: t4
env: pytorch-2.0
command: "python main.py"
只需在当前目录输入以下命令即可实现同样的任务执行效果:
bayes gear run task
openbayes.yaml
字段描述与规格
openbayes.yaml
目前分为两部分:
- 基本类型的参数,包括
data_bindings
resource
env
command
parameters
五个 - 自动调参的参数,包含在
hyper_tuning
具体的内容在 自动调参 中介绍
data_bindings
指绑定的数据,支持「容器输出」以及「数据集」,最多同时绑定三个,分为两个部分:data
和 path
data
data
指绑定的数据源,如果绑定的数据源为一个「数据集的版本」其形式为:
<userid>/<dataset-name>/<dataset-version>
例如要绑定 OpenBayes 下名为 MNIST 的数据集第一个版本,其 data
字段为
openbayes/mnist/1
如果绑定的数据源为一个「容器的输出」,其形式为:
<userid>/jobs/<job-id>/output
如绑定 OpenBayes 下的 test-project 容器下的 jfaqJeLMcPM
的输出,其形式为:
openbayes/jobs/jfaqJeLMcPM/output
path
另一部分为 path
指将数据源具体绑定到容器中的哪个目录,目前支持的目录如下:
- /input0
- /input1
- /input2
- /input3
- /input4
- /output
数据绑定的两种配置方式
在 openbayes.yaml
中,您可以使用以下两种方式之一来配置数据绑定:
- 使用
data_bindings
(详细配置方式):
data_bindings:
- data: openbayes/mnist/1 # 数据集的完整路径
path: /input0 # 挂载到容器中的路径
type: ro # 可选:ro(只读)或 rw(可读写)
- data: openbayes/jobs/jfaqJeLMcPM/output
path: /output
type: rw
- 使用
bindings
(简写方式):
# 不写绑定权限默认为只读绑定
bindings:
- openbayes/eBIQp4yPMtU/1:/input0
- openbayes/jobs/jfaqJeLMcPM/output:/output
# 也可以指定读写绑定
bindings:
- username/data-cli-2/5:/input0:rw
- username/data-1/1:/output:rw
需要注意的是 openbayes/eBIQp4yPMtU/1:/input0
中,openbayes
是公有数据集的专用名,如果你想使用你自己的数据集,需要将 openbayes
替换为你的用户名,eBIQp4yPMtU
是数据集 ID,1
是数据集的版本号;:/input0
,是将数据集绑定到 input0 中。
这两种方式是等价的,您可以根据需要选择使用。
数据绑定权限控制说明
ro
:只读权限,适用于参考数据集rw
:读写权限,适用于需要保存结果的输出目录
只读路径,绑定过来的数据源无法更改,但其绑定速度非常快。/output
为工作目录,虽然有读写权限,但将数据绑定到 /output
目录中会有额外的数据拷贝时间,在保存容器时也会产生额外的存储用量。因此需要用户在自己的场景下决定绑定的目录。
- 使用
bayes gear bindings
命令可以查看可绑定的数据列表
- 确保指定的数据集版本存在
- 确保您有权限访问指定的数据集
- 挂载路径不要使用重复的值
resource
指使用什么算力容器,通过命令 bayes gear resource
可以看到支持的算力类型。
env
指使用什么运行时环境,通过命令 bayes gear env
可以查看支持的运行时环境。
command
只有在创建「脚本执行」时需要,指任务执行时的入口命令。
parameters
在创建一个 task 或者 jupter 执行时,可以通过 parameters
传入一组 key / value
形式的参数,这个参数主要的作用有以下两点:
-
方便记录这次执行的重要参数,
parameters
会在执行的界面中展示出来 -
将自定义的参数传递到执行中,同时支持两种形式:
-
parameters
的内容会在执行初始化时生成一个文件openbayes_params.json
方便程序通过该文件读取内部参数: -
parameters
的内容会以命令行参数的形式追加到入口命令后面,例如openbayes.yaml
中有如下内容:
...
command: python main.py
parameters:
input: /input0
epochs: 5
...那么真正的执行入口命令将会是
python main.py --input=/input0 --epochs=5
-
用命令行参数覆盖配置文件中的参数
同时,也可以通过命令行覆盖相应的参数,例如对于上文中的 openbayes.yaml
通过以下命令可以覆盖入口执行的命令:
bayes gear run task -- sleep 360
那么提交的命令内容将不再是 python main.py
而是 sleep 360
。