如何在Vertex AI/Kubeflow Pipeline中获取自定义容器输出并传递至下一流水线?求容器输出工件传递实现示例
解决Kubeflow Pipeline SDK v2中容器输出工件传递问题
我懂你现在的困惑——已经把模型路径写到容器里的output.txt了,但不知道怎么让Kubeflow Pipeline把这个文件里的内容当成输出工件传递给后续组件。其实只需要调整下你的组件YAML配置,就能搞定这个问题,下面给你具体的修改方案和完整示例:
1. 确认Python代码没问题
你当前的代码已经正确把model_path写入到了容器内的./output.txt,这部分不需要改动,保持原样就行:
import logging # 假设前面的逻辑已经生成了有效的model_path with open('./output.txt', 'w') as f: logging.info(f"Model path url is in {'./output.txt'}") f.write(model_path)
2. 更新组件YAML配置
核心是在implementation.container节点下添加一个outputs映射,告诉Kubeflow要从哪个文件读取输出值。修改后的完整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}, ] # 新增这部分:绑定输出参数与容器内的文件路径 outputs: - name: gcs_model_path path: ./output.txt
关键细节说明:
- 这里的
outputs是implementation.container的子节点,和顶层的outputs不是同一个,别搞混了 path字段必须和你Python代码里写入的文件路径完全一致,也就是./output.txt- Kubeflow会自动读取这个文件的内容,把它赋值给
gcs_model_path这个输出参数,后续组件可以直接引用
3. 后续组件如何使用这个输出
当你的训练组件运行完成后,后续组件可以像使用普通输入参数一样引用gcs_model_path。比如一个部署组件的配置可以这么写:
name: Deploy Trained Model description: Deploy model from GCS to serving endpoint inputs: - name: model_path description: 'Path to trained model on GCS' type: String implementation: container: image: your-deploy-container-image command: [ python, ./deploy_script.py, --model-path, {inputValue: model_path}, ]
这样整个流水线就能顺畅地把容器内生成的模型路径传递下去了!
内容的提问来源于stack exchange,提问作者Wong Songhan
相关产品推荐
相关产品推荐

