我正在对Kubeflow Pipelines做一些实验,我对检索运行ID并将其与一些关于管道执行的元数据沿着保存很感兴趣。有没有什么方法可以从ContainerOp这样的组件中实现这一点?
ContainerOp
rjee0c151#
您可以使用kfp.dsl.EXECUTION_ID_PLACEHOLDER和kfp.dsl.RUN_ID_PLACEHOLDER作为组件的参数。在运行时,它们将被替换为实际值。
kfp.dsl.EXECUTION_ID_PLACEHOLDER
kfp.dsl.RUN_ID_PLACEHOLDER
whlutmcx2#
我试着用Python's DSL来做这件事,但现在似乎不可能。我发现的唯一选择是使用他们在这个示例代码中使用的方法,基本上就是声明一个包含{{workflow.uid}}的字符串,在执行时它将被替换为实际值。您也可以这样做以获取pod名称,它将是{{pod.name}}。
{{workflow.uid}}
{{pod.name}}
4jb9z9bj3#
由于Kubeflow管道依赖于Argo,因此您可以使用Argo变量来获得您想要的内容。例如,
@func_to_container_op def dummy(run_id, run_name) -> str: return run_id, run_name @dsl.pipeline( name='test_pipeline', ) def test_pipeline(): dummy('{{workflow.labels.pipeline/runid}}', '{{workflow.annotations.pipelines.kubeflow.org/run_name}}')
您会发现占位符将替换为正确的run_id和run_name。更多argo变量:https://github.com/argoproj/argo-workflows/blob/master/docs/variables.md要了解kubeflow管道运行中的标签和注解中记录了什么,只需从k8s中获取相应的工作流。
kubectl get workflow/XXX -oyaml
tzcvj98z4#
create_run_from_pipeline_func,它返回RunPipelineResult,并具有run_id attribute
create_run_from_pipeline_func
RunPipelineResult
run_id attribute
client = kfp.Client(host) result = client.create_run_from_pipeline_func(…) result.run_id
ccgok5k55#
组件的容器应该有一个名为HOSTNAME的环境变量,该变量设置为唯一的pod名称,您可以从中派生所有必要的元数据。
HOSTNAME
jgwigjjp6#
对于V1:看起来kfp.dsl.EXECUTION_ID_PLACEHOLDER(组件运行id)和kfp.dsl.RUN_ID_PLACEHOLDER(管道运行id)将完成您所要求的。源对于V2:分别为kfp.v2.dsl.PIPELINE_JOB_ID_PLACEHOLDER和kfp.v2.dsl.PIPELINE_TASK_ID_PLACEHOLDER。source
kfp.v2.dsl.PIPELINE_JOB_ID_PLACEHOLDER
kfp.v2.dsl.PIPELINE_TASK_ID_PLACEHOLDER
6条答案
按热度按时间rjee0c151#
您可以使用
kfp.dsl.EXECUTION_ID_PLACEHOLDER
和kfp.dsl.RUN_ID_PLACEHOLDER
作为组件的参数。在运行时,它们将被替换为实际值。whlutmcx2#
我试着用Python's DSL来做这件事,但现在似乎不可能。
我发现的唯一选择是使用他们在这个示例代码中使用的方法,基本上就是声明一个包含
{{workflow.uid}}
的字符串,在执行时它将被替换为实际值。您也可以这样做以获取pod名称,它将是
{{pod.name}}
。4jb9z9bj3#
由于Kubeflow管道依赖于Argo,因此您可以使用Argo变量来获得您想要的内容。
例如,
您会发现占位符将替换为正确的run_id和run_name。
更多argo变量:https://github.com/argoproj/argo-workflows/blob/master/docs/variables.md
要了解kubeflow管道运行中的标签和注解中记录了什么,只需从k8s中获取相应的工作流。
tzcvj98z4#
create_run_from_pipeline_func
,它返回RunPipelineResult
,并具有run_id attribute
ccgok5k55#
组件的容器应该有一个名为
HOSTNAME
的环境变量,该变量设置为唯一的pod名称,您可以从中派生所有必要的元数据。jgwigjjp6#
对于V1:
看起来
kfp.dsl.EXECUTION_ID_PLACEHOLDER
(组件运行id)和kfp.dsl.RUN_ID_PLACEHOLDER
(管道运行id)将完成您所要求的。源
对于V2:
分别为
kfp.v2.dsl.PIPELINE_JOB_ID_PLACEHOLDER
和kfp.v2.dsl.PIPELINE_TASK_ID_PLACEHOLDER
。source