【问题标题】:Run ID in Kubeflow Pipelines on Vertex AI在 Vertex AI 上的 Kubeflow Pipelines 中运行 ID
【发布时间】:2021-09-21 15:49:00
【问题描述】:

我正在尝试在 GCP 上使用新的 Vertex AI 运行 Kubeflow Pipelines。

以前,在 Kubeflow Pipelines 中,我可以通过 dsl.RUN_ID_PLACEHOLDER{{workflow.uid}} 在我的 Pipeline 中使用运行 ID。我的理解是dsl.RUN_ID_PLACEHOLDER 将在编译时解析为{{workflow,uid}},然后在运行时,{{workflow.uid}} 标记将解析为运行的 ID。至少在我使用 Kubeflow Pipelines 和 Kubeflow Pipelines UI 的经验中,它是这样工作的。

但是,当我尝试在 Vertex AI Pipelines 中运行的管道中以类似方式访问运行 ID 时,dsl.RUN_ID_PLACEHOLDER 似乎解析为 {{workflow.uid}} 但这从未随后解析为运行。

我创建了以下测试管道,它尝试使用 DSL 占位符获取运行 ID,然后使用轻量级组件打印出管道的 run_id 参数的值。在 UI 中运行管道的结果是 print_run_id 组件打印 {{workflow.uid}},而之前在 Kubeflow 管道上,它会解析为运行 ID。

from kfp import dsl
from kfp import components as comp
import logging
from kfp.v2.dsl import (
    component,
    Input,
    Output,
    Dataset,
    Metrics,
)

@component
def print_run_id(run_id:str):
    print(run_id)

RUN_ID = dsl.RUN_ID_PLACEHOLDER

@dsl.pipeline(
    name='end-to-end-pipeline',
    description='End to end XGBoost cover type training pipeline'
)
def end_to_end_pipeline(
    run_id: str = RUN_ID
):
    print_task = print_run_id(run_id=run_id)

有没有办法使用带有 Vertex AI Pipelines 的 KFP SDK 访问 Run ID?

【问题讨论】:

  • 您是否尝试将所有from kfp 更改为from kfp.v2?它只是您代码的一部分,而且您还设置了 Google Cloud 项目和开发环境?
  • 谢谢,我更新到 kfp.v2,我应该从一开始就这样做!我现在从我的 Deploy 管道脚本中收到一个错误,指出 RUN_ID_PLACEHOLDER 不是 kfp.v2.dsl 的属性,在 Vertex AI 中是否有任何模仿这种行为的东西?能够像这样获得 Run ID 非常有帮助
  • 很难找到有关它的任何信息,而且 GCP 文档没有涵盖这些信息。我在谷歌创建了一个问题跟踪器,可以找到here。产品团队已经在检查这一点。请点击 让谷歌员工知道您受到此问题的影响。您可以按照上述问题跟踪器跟踪状态。

标签: google-cloud-ml


【解决方案1】:

在 vertex.ai 上起作用的是不同的魔法字符串。

具体来说:

 from kfp.v2 import dsl

 id = dsl.PIPELINE_JOB_ID_PLACEHOLDER
 name = dsl.PIPELINE_JOB_NAME_PLACEHOLDER

另请参阅,https://github.com/kubeflow/pipelines/blob/master/sdk/python/kfp/v2/dsl/__init__.py

刚刚从我们在 google 的支持人员那里得到了这个答案。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 2022-01-18
    • 2021-11-28
    • 2021-03-08
    • 2023-01-03
    • 2022-10-06
    • 2020-08-10
    • 2022-10-06
    • 2022-06-10
    相关资源
    最近更新 更多