跳转到主要内容
experiments/my-grpo/config.yaml
继承一个基线,然后只写你改动的部分。tp validate 和 tp submit 解析这个文件用的是集群侧 launcher 用的同一份代码。 custom 作业如果 train.sh 从不读这个文件,可以完全不理它。catalog 方法总是读。

defaults 怎么解析

defaults 里的条目是相对这个文件的路径。每一条都递归解析,所以基线自己也可以有 defaults。后面的条目压过前面的,实验文件里的键最后压过所有。 脚手架最上面那段注释列出人们改得最多的键,范围取自 recipe。它是一张便签,不是配置。

哪一层说了算

四层,后面压过前面:
拓扑来自 profile,不来自你:适配器用 TUNEPLANE_CLUSTER_NUM_NODES 和 TUNEPLANE_CLUSTER_GPUS_PER_NODE 覆盖节点与卡数。从四张卡换到八张是换一个 --profile,从来 不是改配置。
--set 在任何东西上传之前就按 recipe 声明的参数做类型检查。拼错的键在你自己机器上就失败。

整体替换一个映射,而不是合并它

默认是深合并。在某个映射里放 _override_: true 可以整体替换它。这个标记会被剥掉,不会到达 训练器。

插值

${...} 的值保持字符串,tp validate 会跳过对它们的数值检查 —— 它看不到值。检查本地数据路径 是否存在时,有两种形式会被识别:${oc.env:GSM8K_DATA_DIR}/train.jsonl 和 ${GSM8K_DATA_DIR}/train.jsonl,名字限于 GSM8K_DATA_DIR、ALPACA_DATA_DIR 和 QA_RL_DATA_DIR。其他含 ${ 的内容原样保留。

未知的键是错误

配置以 struct 模式校验。拼错的键在作业占住节点之前就失败,这正是重点。不要加 recipe 没有声明的 训练器专属键。

batch size 关系

声明了 rollout batch 与 train batch 关系的 recipe 会检查它。不整除是错误。整除但不相等给出 off-policy 警告,有时那正是你想要的。

确认成功

没有输出就表示配置解析通过,而且每个键都已声明、都在范围内。

下一步

提交作业 · 实验 · 方法目录