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

在Kedro Notebook中能否临时覆盖parameters.yaml中的参数?

在Kedro Notebook中动态覆盖参数的方法

当然可以在Kedro Notebook里动态覆盖parameters.yaml的参数——你遇到的问题是因为直接修改context.params不会自动同步到已经初始化的流水线和节点上,毕竟Kedro在启动时就已经把参数绑定到各个组件了。下面给你两种靠谱的方法,都能在Notebook生命周期内生效,完全不用碰原yaml文件:

方法一:修改参数后重新构建流水线

这种方法适合需要完全自定义上下文和Catalog的场景,步骤清晰可控:

  1. 首先加载你的Kedro项目和会话:
from kedro.framework.startup import bootstrap_project
from kedro.framework.session import KedroSession
from pathlib import Path

# 指向你的项目根目录(如果Notebook在项目里,用Path.cwd()就行)
project_path = Path.cwd()
bootstrap_project(project_path)

# 创建会话并加载上下文
with KedroSession.create(project_path=project_path) as session:
    context = session.load_context()
  1. 复制并修改参数(别直接改原context.params,避免污染上下文):
custom_params = context.params.copy()
custom_params["test_param"] = 2  # 替换成你的自定义参数值
  1. 用新参数重新创建Catalog和流水线:
from kedro.framework.project import _get_catalog, _get_pipeline
from kedro.runner import SequentialRunner

# 基于自定义参数生成新的Catalog
catalog = _get_catalog(
    context.project_path,
    context.config_loader,
    custom_params,
    context.hooks
)

# 基于自定义参数生成新的流水线
pipeline = _get_pipeline(context.package_name, custom_params)

# 运行修改后的流水线
runner = SequentialRunner()
runner.run(pipeline, catalog)

方法二:直接用session.run()覆盖参数(更简洁)

Kedro的session.run()方法本身就支持params参数,这是最直接的方式,不需要重建流水线:

在加载会话后,直接调用run方法并传入要覆盖的参数:

from kedro.framework.startup import bootstrap_project
from kedro.framework.session import KedroSession
from pathlib import Path

project_path = Path.cwd()
bootstrap_project(project_path)

with KedroSession.create(project_path=project_path) as session:
    # 直接运行默认流水线,覆盖指定参数
    session.run(
        pipeline_name="__default__",
        params={"test_param": 2}
    )

如果你的参数是嵌套结构,也可以精准修改:

session.run(
    pipeline_name="__default__",
    params={"data_processing": {"batch_size": 64, "train_ratio": 0.8}}
)

注意事项

  • 两种方法都只会在当前Notebook会话中生效,不会修改parameters.yaml文件,完全符合你的需求;
  • 所有依赖该参数的节点都会使用新值,不用担心局部生效的问题;
  • 如果你的流水线有多个子流水线,可以通过pipeline_name指定要运行的目标流水线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:39:10