【问题标题】:How do I reproduce experiments or specify the nodes execution order in Kedro?如何在 Kedro 中重现实验或指定节点执行顺序?
【发布时间】:2020-11-06 08:55:52
【问题描述】:

由于 kedro 基于节点输入/输出确定执行图,因此执行顺序是不确定的。它在运行之间可能会有所不同。

即使我设置了种子,我也可能在不同的运行中采样不同的数据。

假设我有 3 个彼此不依赖的节点。 第一次运行:A->B->C 第二次运行:B->A->C

仅仅因为随机生成器序列不一样,我会得到不同的结果。

【问题讨论】:

  • 这是一种有意的行为,因为 Kedro 中的依赖关系解析完全是数据驱动的。推荐的选项是使用下面@pascalwhoop 建议的虚拟输入/输出(选项2)。

标签: kedro


【解决方案1】:

您有一些选择,但没有来自 kedro 的“开箱即用”解决方案来强制节点排序而不具有基于数据集的依赖项。 你可以:

  • 使每个节点本身成为 1 节点管道,并在 python 中按顺序运行它们
  • 在它们之间传递虚拟输入和输出(例如空数据集或只是一个""
  • 使它们全部成为一个节点

【讨论】:

  • 我想说从 Kedro 的角度来看,第二个选项更可取,因为选项 1 和 3 有效地从项目范围中删除了 Kedro 管道抽象,使节点依赖图定义完全手动过程。虚拟依赖仍然是部分情况,但至少它仍然利用 Kedro 管道来执行顺序/可视化。
  • 对于长管道的选项 2 意味着我必须为很多函数添加一个虚拟参数,这非常不方便。但是,确保某些东西是确定性的非常有用,尤其是对于 ml 项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2017-01-07
  • 2020-06-22
相关资源
最近更新 更多