Kubeflow运行参数作为步骤入参时Integer被转为LocalPath如何解决
问题原因
你在组件YAML的implementation.command配置中使用了{inputPath: generate_n}语法,该语法的作用是将输入参数作为制品(Artifact)处理:KFP会自动把参数值写入集群的临时存储文件,再把该文件的本地挂载路径传给命令行,因此哪怕你定义了输入类型为Integer,最终拿到的还是文件路径。
解决方法
修改组件YAML的命令行配置,将{inputPath: generate_n}替换为{inputValue: generate_n},该语法会直接传递参数的原始值而非存储路径。
修改后的组件实现部分示例如下:
implementation: container: image: path/to/image command: [ python, generate.py, --generate_n, {inputValue: generate_n}, --out_path, {outputPath: out_path}, ]
验证效果
修改完成后重新编译流水线,生成的YAML中generate_n对应的命令行参数会变为参数引用(如{{inputs.parameters.generate_n}}),运行时会直接传递你输入的整数值,不会再生成临时文件路径。
补充说明
- 基础类型参数(Integer、String、Float、Boolean)均使用
{inputValue: 参数名}直接传值 - 数据集、模型等大容量制品类型参数,才需要使用
{inputPath: 参数名}获取存储路径读写数据
内容的提问来源于stack exchange,提问作者Aiden Goodall
相关产品推荐
相关产品推荐

