【发布时间】: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