如何在Kedro Pipeline中添加参数并确保指定参数正常传递?
Kedro Pipeline参数传递解决方案(含测试场景)
以下是不同场景下的处理方法,可按需选择:
- 常规运行场景(依赖配置文件)
Kedro默认会加载conf/<环境名>/parameters.yml中的参数,你只需在该文件中添加对应配置即可:
配置后节点输入声明的lr: 0.001 # 替换为实际需要的学习率取值params:lr会自动匹配到该值。 - 单元测试场景(无需修改全局配置)
编写测试用例时可通过KedroSession的extra_params参数临时注入参数,示例代码:from pathlib import Path from kedro.framework.session import KedroSession from kedro.framework.startup import bootstrap_project # 加载项目元信息 bootstrap_project(Path("你的项目根目录路径")) with KedroSession.create( extra_params={"lr": 0.001} # 直接注入需要的lr参数 ) as session: # 运行指定pipeline session.run(pipeline_name="training") - 单节点测试场景
仅测试单个训练节点时,无需启动完整Kedro会话,直接将lr作为普通参数传入节点函数即可:from your_project.pipelines.training.nodes import train_model output = train_model( train_dataset=测试用训练数据集, lr=0.001, # 直接传入lr取值 # 补充其他节点需要的输入参数 ) - 命名空间适配场景
如果你的训练pipeline绑定了特定命名空间,需要保证参数路径匹配:比如pipeline命名空间为training,则节点输入需声明为params:training.lr,对应parameters.yml配置为:
若用training: lr: 0.001extra_params注入则传入{"training": {"lr": 0.001}}即可。 - CLI运行场景
通过命令行运行pipeline时,可直接追加参数覆盖配置:kedro run --params lr=0.001
多参数用逗号分隔:kedro run --params lr=0.001,batch_size=32
内容的提问来源于stack exchange,提问作者N. Bhattarai
相关产品推荐
相关产品推荐

