批量语法
批量语法用于脚本工作区。Web 界面使用 form 模式,CLI 的 add 和 run --config 也会展开批量配置。
不适用场景:
yaml模式:固定只生成一个配置任务shell模式:固定只生成一个 shell 任务
支持的三种写法
1. Product
lr: 0.001 | 0.01 | 0.1
optimizer: adam | sgd含义:
- 所有候选值做笛卡尔积
结果:
3 × 2 = 6 tasks2. Zip
seed: (1 | 2 | 3)
tag: (a | b | c)含义:
- 按位置一一配对
结果:
(1, a)
(2, b)
(3, c)要求:
- 所有 zip 参数长度必须一致
3. 数值区间
epoch: 10:100:10含义:
- 展开为数值序列
结果:
10, 20, 30, ..., 90区间不包含终点,与 Python 的 range 一致。
也支持:
x: 1:5表示默认步长为 1。
混合使用
lr: 0.001 | 0.01
optimizer: adam | sgd
seed: (1 | 2 | 3)
tag: (exp_a | exp_b | exp_c)
epoch: 10:30:10总数计算:
Product: 2 × 2 × 2 = 8
Zip: 3
Total: 8 × 3 = 24嵌套参数
语法同样适用于嵌套字段:
training:
lr: 0.001 | 0.01
model:
hidden: 128 | 256展开会保留原始键和字典结构:字面键 "a.b" 与嵌套的 a: {b: ...} 是两个独立字段,数字键和空字典也会保留。 模板类型校验和配置内容搜索也会分别处理这些字段。 列表整体作为固定值,其中的字符串不参与批量展开。
网格和树形表单会区分字段路径:嵌套字段显示为 a.b,字面点键显示为 ["a.b"],数字键与同名字符串键分别显示为 [1] 和 ["1"]。置顶和搜索结果中的编辑也会定位到原字段,空字符串键显示为 [""]。 列表输入支持 YAML 和 JSON 写法;例如 ["x | y"] 是固定列表,编辑或移开焦点时不会变成批量表达式。 表单会保留整数的完整精度,包括超过 9007199254740991 的值和键;列表中的整数也适用。 1.0、0.0 等字段保留浮点类型,编辑成 1.25 时不会被取整,其他字段的编辑也不会将它们改成整数。 批量预览中,悬停任务样本可查看展开后的 YAML,保留大整数、浮点类型、数字与字符串键的区别,以及尚未求值的插值表达式。
预览显示完整任务总数和前六个样本。所有候选值仍会校验;选择模板时,未展示的组合也会检查字段类型。预览只构造需要展示的完整配置,减少大批量配置的等待和内存占用。
单次批量展开最多允许 10000 个任务,超过上限会在展开前提示缩小范围。超大数值区间同样受此限制。 候选值包含无效插值等配置错误时,预览和创建接口会返回具体字段的错误说明。
生成后的落盘结果
批量展开后,每个任务会得到自己的 config.yaml:
_pyruns_/<script>/tasks/<task_name>/
├─ task_info.json
├─ config.yaml
└─ run_logs/每个任务里的 config.yaml 都是该任务独立的最终快照。
常见错误
Zip 长度不一致
seed: (1 | 2 | 3)
tag: (a | b)会报错,因为 zip 长度不同。
YAML 根节点不是 mapping
- 1
- 2Generator 只接受对象型根节点。
建议
- 参数很多时优先用
form模式检查批量范围 - 确认预览数量合理后再生成
- 对于一次性脚本内容,直接使用 shell workspace,不要再回退到旧 args 思路