3

我正在尝试使用 Kubeflow Pipelines 编写应用程序。将参数传递给管道(用 装饰的主要 python 函数)时,我遇到了麻烦@kfp.dsl.pipeline。参数应自动​​转换为具有名称、值等信息的 PipelineParam。但是,似乎除了名称之外的所有内容都被丢弃了。我在 Ubuntu 服务器上。

我尝试卸载/重新安装和更新 Kubeflow,尝试安装几个最新版本的 kfp(0.1.23、0.1.22、0.1.20、0.1.18),以及安装在我的本地机器上。

    def print_pipeline_param():
        return(kfp.dsl.PipelineParam("Name", value="Value"))

    @kfp.dsl.pipeline(
        name='Test Pipeline',
        description='Test pipeline'
    )
    def test_pipeline(output_file='/output.txt'):
        print(print_pipeline_param())
        print(output_file)

    if __name__ == '__main__':
        import kfp.compiler as compiler
        compiler.Compiler().compile(test_pipeline, __file__ + '.tar.gz'

运行结果如下:

{{pipelineparam:op=;name=Name;value=Value;type=;}}
{{pipelineparam:op=;name=output-file;value=;type=;}

我应该在“值”字段中获得“/output.txt”,但填充的唯一字段是名称。这只发生在将参数传递给主管道函数时。当像这样直接传入 PipelineParam 时也会发生这种情况:

    @kfp.dsl.pipeline(
        name='Test Pipeline',
        description='Test pipeline'
    )
    def test_pipeline(output_file=kfp.dsl.PipelineParam("Output File", value="/output.txt")):
        print(output_file)

打印出来:{{pipelineparam:op=;name=output-file;value=;type=;}

4

0 回答 0