【问题标题】:Caching Dagster's pipeline results缓存 Dagster 的管道结果
【发布时间】:2020-11-18 22:44:19
【问题描述】:

有没有办法在管道中缓存实体的输出,如果我运行相同的管道但配置略有不同(想想超参数调整),管道中的某些初始步骤是不受配置更改影响不会多次执行?

Raw data -> CPU expensive preprocessing (A) -> model fitting (B) -> model

我希望能够运行 A 一次,但 B 的多个变体。

在 Dagster 中是否有一种优雅的方式来做到这一点?

【问题讨论】:

标签: python dagster


【解决方案1】:

我不知道有这个功能。

当存储设置为文件系统时,Dagster 可以重新运行实体,但在缓存方面没有看到任何像您所描述的那样。如果这里没有太大的吸引力,可以提交issue to Dagster,然后反馈

一些可能的解决方法

  1. 也许您可以选择具体化数据并将逻辑添加到您的实体中,以检查该数据是否存在于某个位置。如果是,则返回该数据,如果不是,则重新处理。这种模式给您带来了确保只保留所需文件的负担。考虑到开放式场景中潜在的可变区域,这可能是最简单的选择。
  2. 我想您可以在每次实验后拼凑新的管道 - 仅由需要再次运行的实体组成,并引入从文件中读取数据并为其他实体输出的新实体。我想,读入数据的 Solid 可能只是一个可重用和别名的 Solid。

【讨论】:

  • 这些都是不错的选择,我最终为缓存返回值的实体编写了一个装饰器。
  • @moomima ,您介意分享您编写的装饰器代码吗?
猜你喜欢
  • 2020-02-16
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 2011-12-01
  • 2011-01-06
  • 1970-01-01
相关资源
最近更新 更多