以前,使用Kubeflow管道SDKv1,可以在管道执行期间通过将Argo占位符{{workflow. status}}
传递给组件来推断管道的状态,如下所示:
import kfp.dsl as dsl
component_1 = dsl.ContainerOp(
name='An example component',
image='eu.gcr.io/.../my-component-img',
arguments=[
'python3', 'main.py',
'--status', "{{workflow.status}}"
]
)
当传递给组件时,此占位符将采用值成功
或失败
。这方面的一个用例是将失败警告发送到例如。Slack,结合dsl. ExitHandler
。
然而,当使用PipelineSDK版本2,kfp. v2
,连同VertexAI编译和运行管道时,Argo占位符不再起作用,如本公开问题所述。正因为如此,我需要另一种方法来检查组件内管道的状态。我在想我可以使用kfp.Client
类,但我假设这在使用VertexAI时不起作用,因为实际上没有“主机”。此外,似乎支持占位符来传递运行id(dsl.PIPELINE_JOB_ID_PLACEHOLDER
)作为占位符,根据这SO帖子,但我找不到status
周围的任何东西。
任何想法如何获得运行在顶点AI上的组件内的管道的状态?
每个管道运行都会自动记录到Google Logging,失败的管道运行也是如此。错误日志还包含有关管道和失败组件的信息。
例如,我们可以使用这些信息来监控我们的日志并通过电子邮件设置警报。
顶点AI管道运行的日志我们使用以下过滤器获得
source. type="aiplatform.googleapis.com/PipelineJob"严重程度=(错误或严重或警报或紧急)
顶点AI管道日志
基于这些日志,您可以设置基于日志的警报https://cloud.google.com/logging/docs/alerting/log-based-alerts.通过电子邮件、Slack、SMS等通知。
来源:https://medium.com/google-cloud/google-vertex-ai-the-easiest-way-to-run-ml-pipelines-3a41c5ed153