跳到主要内容

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 目前分为两部分:

  1. 基本类型的参数,包括 data_bindings resource env command parameters 五个
  2. 自动调参的参数,包含在 hyper_tuning 具体的内容在 自动调参 中介绍

data_bindings

指绑定的数据,支持「容器输出」以及「数据集」,由 datapath 两部分组成。

data

data 指绑定的数据源。如果绑定的是一个「数据集版本」,推荐使用以下形式:

<owner>/<dataset-ref>/<version>

例如要绑定 OpenBayes 下的 MNIST 数据集第一个版本,其 data 字段可以写为:

openbayes/mnist/1

如果绑定的是一个「容器输出」,推荐使用以下形式:

<owner>/jobs/<job-ref>/output

如绑定 OpenBayes 下的 test-project 容器下的 jfaqJeLMcPM 的输出,其形式为:

openbayes/jobs/jfaqJeLMcPM/output

其中:

  • owner:资源所属用户名
  • dataset-ref:数据集标识,推荐使用数据集 ID
  • job-ref:Job 标识,推荐使用 Job ID
  • version:数据集版本号,通常为数字
提示

如果你是在页面中选择绑定源,系统会自动填充可用标识;如果你是手工编写 openbayes.yaml,推荐优先使用 ID,而不是名称,以避免空格、转义或歧义问题。

path

另一部分为 path 指将数据源具体绑定到容器中的哪个目录,目前支持的目录如下:

  • /input0
  • /input1
  • /input2
  • /input3
  • /input4
  • /output

也兼容以下 openbayes 路径写法:

  • /openbayes/home 等价于 /output
  • /openbayes/input/input0 等价于 /input0
  • /openbayes/input/input1 等价于 /input1
  • /openbayes/input/input2 等价于 /input2
  • /openbayes/input/input3 等价于 /input3
  • /openbayes/input/input4 等价于 /input4

数据绑定的两种配置方式

openbayes.yaml 中,您可以使用以下两种方式之一来配置数据绑定:

  1. 使用 data_bindings(详细配置方式)
data_bindings:
- data: openbayes/mnist/1 # 数据集的完整路径
path: /input0 # 挂载到容器中的路径
type: ro # 可选:ro(只读)或 rw(可读写)
- data: openbayes/jobs/jfaqJeLMcPM/output
path: /output
type: rw
  1. 使用 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 命令可以查看可绑定的数据列表
警告
  • 确保指定的数据集版本存在
  • 确保您有权限访问指定的数据集
  • 挂载路径不要使用重复的值
  • 同一个任务中,/output/input0 ~ /input4 不能重复使用

resource

指使用什么算力容器,通过命令 bayes gear resource 可以看到支持的算力类型。

env

指使用什么运行时环境,通过命令 bayes gear env 可以查看支持的运行时环境。

command

只有在创建「脚本执行」时需要,指任务执行时的入口命令。

parameters

在创建一个 task 或者 Jupyter 执行时,可以通过 parameters 传入一组 key / value 形式的参数。parameters 只能通过 openbayes.yaml 配置,bayes gear run 没有对应的命令行标志,也无法像 command--data 那样通过 CLI 覆盖。

这个参数主要的作用有以下两点:

  1. 方便记录这次执行的重要参数,parameters 会在执行的界面中展示出来

  2. 将自定义的参数传递到执行中:

    • 非敏感参数会在执行初始化时生成文件 openbayes_params.json,方便程序读取:

    • 对于 task,非敏感参数还会以命令行参数的形式追加到入口命令后面。例如 openbayes.yaml 中有如下内容:

    command: python main.py
    parameters:
    input: /input0
    epochs: 5

    那么真正的执行入口命令将会是:

    python main.py --input=/input0 --epochs=5

敏感参数(Secret)

CLI 支持在 parameters 中配置敏感参数,必须通过本地环境变量注入,不要在 openbayes.yaml 中直接写入密钥明文(task 模式下该文件会随源码一起上传):

command: python train.py
parameters:
epochs: 5
learning_rate: 0.001
HF_TOKEN:
is_secret: true
source: env
env: HF_TOKEN

运行前先在终端设置环境变量,再执行命令:

export HF_TOKEN=hf_xxx
bayes gear run task

敏感参数的行为:

  • 只会作为环境变量注入容器,不会追加到入口命令,也不会写入 openbayes_params.json
  • CLI 会在上传源码前读取环境变量;若变量不存在或为空,会立即报错退出
  • source 目前只支持 env,且必须配合 is_secret: trueenv 字段使用
警告

请勿在 openbayes.yamlparameters 中直接写入 Token、密码等敏感信息的明文。敏感参数应使用 source: env 从本地环境变量读取;若将密钥明文写入配置文件,该文件会随 task 源码上传至服务端,存在泄露风险。

信息

网页控制台也支持在容器创建页的「环境变量」区域标记 Secret,详见 环境变量与 Secret 变量。CLI 的 source: env 写法适合在本地开发时避免密钥进入配置文件。

restart 时的 parameters

bayes gear restart 会自动保留原 workspace / batch_workspace 执行中的 parameters(含 secret 参数),无需在 openbayes.yaml 中重新配置。restart 不支持通过 yaml 或 CLI 覆盖 parameters;如需修改参数,请通过控制台或重新 bayes gear run workspace

用命令行参数覆盖配置文件中的参数

可以通过命令行覆盖 command--data--env--resource 等字段,但不能覆盖 parameters。例如 openbayes.yaml 中配置了 command: "python main.py",通过以下命令可以临时改用其他入口命令:

bayes gear run task -- python train.py

那么提交的命令内容将不再是 python main.py 而是 python train.py