我很难理解如何将容器中的结果作为输出工件传递。我知道我们需要将输出写入文件,但我需要一些如何执行的示例。
https://www.kubeflow.org/docs/components/pipelines/sdk-v2/component-development/
这是python容器程序的最后一部分,我将模型文件的url
保存在GCS上的输出. txt
。
with open('./output.txt', 'w') as f:
logging.info(f"Model path url is in {'./output.txt'}")
f.write(model_path)
这是组件. yaml
文件
name: Dummy Model Training
description: Train a dummy model and save to GCS
inputs:
- name: input_url
description: 'Input csv url.'
type: String
- name: gcs_url
description: 'GCS bucket url.'
type: String
outputs:
- name: gcs_model_path
description: 'Trained model path.'
type: String
implementation:
container:
image: ${CONTAINER_REGISTRY}
command: [
python, ./app/trainer.py,
--input_url, {inputValue: input_url},
--gcs_url, {inputValue: gcs_url},
]
首先,您的虚拟组件缺少对输出的引用。您需要使用{outputPath:
name: Dummy Model Training
description: Train a dummy model and save to GCS
inputs:
- name: input_url
description: 'Input csv url.'
type: String
- name: gcs_url
description: 'GCS bucket url.'
type: String
outputs:
- name: gcs_model_path
description: 'Trained model path.'
type: String
implementation:
container:
image: ${CONTAINER_REGISTRY}
command: [
python, ./app/trainer.py,
--input_url, {inputValue: input_url},
--gcs_url, {inputValue: gcs_url},
--output_model_path, {outputPath: gcs_model_path}
]
然后您的代码应该写入这个传入的路径,而不是'./输出. txt'
关于如何使用下游组件中的输出。这是一个简单但可运行的示例,您可以在顶点管道上试用:https://github.com/kubeflow/pipelines/blob/bf2389a66c164457b0e10a820ba484992fd7dd1a/sdk/python/test_data/pipelines/two_step_pipeline.py