如何通过YAML锚点引用特定属性实现参数复用?
需求与问题
我正在创建一个存储单一可读数据值的模板文件,用来填充多个源文件。目前使用YAML搭配Jinja2的Python脚本,将YAML值插入模板源文件,但因为存在数百个关联复杂的参数,必须保留参数的使用命名。
我希望在不同命名下引用同一个数据值,尝试用YAML锚点和别名实现,期望的YAML结构如下:
compute: gpus: 4 cpus: 120 mem: 900Gi torchrun: nproc_per_node: [compute.gpus] ... resource_requests: gpus: [compute.gpus] ...
我曾尝试以下写法,但该语法在PyYAML中无效,网上对其是否为合法YAML语法也存在争议:
compute: &compute gpus: 4 torchrun: nproc_per_node: *compute.gpus
最终会生成多个文件,例如resources.py:
@task( gpus = {{ resource_requests.gpus }} ) def my_task(): ...
以及run.sh:
torchrun --nproc_per_node={{ torchrun.nproc_per_node }} ...
我知道可以通过Jinja2直接在模板中复用compute.gpu,但希望保持命名一致,以便更清晰地理解模板值的实际作用(此类参数众多,必须保持一致性)。
内容的提问来源于stack exchange,提问作者stuart
相关产品推荐
相关产品推荐

