【问题标题】:How to skip already-run steps in kubeflow pipeline?如何跳过 kubeflow 管道中已经运行的步骤?
【发布时间】:2020-01-24 12:34:21
【问题描述】:

我正在 Kubeflow 中构建 ML 管道,我有一个问题。有什么开箱即用的东西可以让我配置我的管道,这样如果它的输出存在,​​一个步骤就不会重新运行?我已经想到了手动执行此操作的方法(在我编译管道时检查现有输出,或者有一个初始步骤返回要运行的步骤列表,或者手动配置哪些步骤作为输入参数运行)但我找不到处理此问题的本地方法。

对我来说,常见的用例是重新运行模型步骤而不重新运行任何数据预处理;但不必有一个特定的“模型开发”管道,该管道与包含数据预处理步骤的更一般的产品不同。或者也许我正在评估阶段进行迭代,我什至不需要重新培训,但我仍然想使用相同的管道。目前,同事们正在使用多个管道,每个管道都从不同的步骤开始,以解决这个问题。

我是从 map-reduce 的角度来看的,这是微不足道的 - 框架会自动检测存在哪些输出,并且不会默认重建它们,但很容易让您选择重建部分或全部输出.也许这会影响我使用 kubeflow 的方式?

任何帮助表示赞赏!

【问题讨论】:

    标签: kubeflow kubeflow-pipelines


    【解决方案1】:

    好的,我想我会在这里放上我发现的解决这个问题的方法。

    截至 2019 年 9 月,这不是 Kubeflow 的一项功能(据从事此工作的人员称),但工作中有一个缓存功能,不应重新运行任何存在输出的步骤。

    与此同时,我通过 pipelineParam 'startingStep' 手动实现了它,一切都需要重新运行。像这样的:

    with dsl.Condition(first_step_to_run == "prep"):
        create_ops(StartingStep.prep)
    with dsl.Condition(first_step_to_run == "train"):
        create_ops(StartingStep.train)
    with dsl.Condition(first_step_to_run == "evaluate"):
        create_ops(StartingStep.evaluate)
    

    使用 create_ops 方法,该方法了解创建步骤的顺序并适当地链接它们(我们实际上有七个步骤,所以我真的很想避免复制/粘贴)。

    【讨论】:

    • 很高兴您找到了解决方案。我有一个简单的问题:您如何确保在下一步开始之前完成一个步骤?即如果您从prep 运行,您如何确保在火车开始之前上传其输出?
    猜你喜欢
    • 1970-01-01
    • 2022-11-03
    • 2023-03-07
    • 1970-01-01
    • 2019-06-30
    • 2021-06-14
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    相关资源
    最近更新 更多