You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hydra在Python中配置键查找逻辑及nuPlan配置映射疑问

nuPlan Devkit教程运行错误及Hydra配置疑问解答

问题背景

我在使用nuPlan devkit的nuplan_framework教程时,运行代码遇到以下错误:

MissingConfigException: In 'default_training': Could not find 'training/vector_model'

Available options in 'training':
training_raster_model
training_simple_vector_model
training_urban_driver_open_loop_model
training_vector_model
Config search path:
provider=hydra, path=pkg://hydra.conf
provider=main, path=file:///home/ross/nuplan-devkit/nuplan/planning/script/config/training
provider=hydra.searchpath in main, path=pkg://nuplan.planning.script.config.common
provider=hydra.searchpath in main, path=pkg://nuplan.planning.script.experiments
provider=schema, path=structured://

通过修改教程中的代码解决了问题:原代码片段:

cfg = hydra.compose(config_name=CONFIG_NAME, overrides=[
    f'group={str(SAVE_DIR)}',
    f'cache.cache_path={str(SAVE_DIR)}/cache',
    f'experiment_name={EXPERIMENT}',
    f'job_name={JOB_NAME}',
    'py_func=train',
    '+training=vector_model',
    'scenario_builder=nuplan', #nuplan_mini',  # use nuplan mini database
    'scenario_filter.limit_total_scenarios=500',  # Choose 500 scenarios to train with
    'lightning.trainer.params.accelerator=ddp_spawn',  # ddp is not allowed in interactive environment, using ddp_spawn instead - this can bottleneck the data pipeline, it is recommended to run training outside the notebook
    'lightning.trainer.params.max_epochs=30',
    'data_loader.params.batch_size=8',
    'data_loader.params.num_workers=8',
])

将其中的+training=vector_model改为+training=training_vector_model即可解决。

但有两个疑惑:

  • Hydra在Python中从何处查找配置键?
  • 文件系统中只有vector_model.yaml文件,却没有training_vector_model.yaml,Hydra是从哪里获取可用选项列表,以及如何将training_vector_model关联到vector_model.yaml的?

解答

1. Hydra查找配置键的路径

Hydra会从错误信息里列出的Config search path中按顺序查找配置:

  • pkg://hydra.conf:Hydra自身的默认配置路径
  • file:///home/ross/nuplan-devkit/nuplan/planning/script/config/training:项目指定的本地训练配置根目录
  • pkg://nuplan.planning.script.config.common、pkg://nuplan.planning.script.config.experiments:nuPlan devkit通过hydra.searchpath配置注册的Python包内的配置路径
  • structured://:代码中定义的结构化配置(配置类)的路径

Hydra会优先匹配路径靠前的配置,找不到就会抛出你遇到的缺失配置异常。

2. training_vector_model与vector_model.yaml的关联逻辑

这是nuPlan devkit利用了Hydra的配置分组+别名映射机制:

  • 在训练配置目录(.../config/training)下的根配置文件(比如config.yaml)中,会定义training配置组的可用选项,其中training_vector_model是一个别名,指向实际的vector_model.yaml文件。
  • 举个例子,training/config.yaml里可能有类似这样的配置:
    defaults:
      - _self_
      - vector_model: training_vector_model
    
    training_vector_model:
      _target_: nuplan.planning.script.config.training.vector_model
    
    通过这种方式,Hydra会把training_vector_model这个选项和vector_model.yaml的配置内容关联起来。
  • 错误信息里的可用选项列表,是Hydra从配置组的定义(包括根配置文件、结构化配置)中解析出来的,并非直接对应文件系统的文件名。

内容的提问来源于stack exchange,提问作者ROS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:43:26