How to fix PipelineParam from discarding all information except for name in Kubeflow Pipeline

Viewed 593

I'm trying to write an application using Kubeflow Pipelines. I'm running into trouble when passing in parameters to the pipeline (the main python function decorated with @kfp.dsl.pipeline). The parameters should be automatically converted into a PipelineParam with name, value, etc info. However, it seems that everything except for the name is being discarded. I'm on an Ubuntu server.

I've tried uninstalling/reinstalling and updating Kubeflow, tried installing several of the most recent versions of kfp (0.1.23, 0.1.22, 0.1.20, 0.1.18), as well as installing on my local machine.

    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'

The result of running this is:

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

I should be getting '/output.txt' in the "value" field, but the only field populated is the name. This only happens when passing in parameters to the main pipeline function. This also happens when directly passing in a PipelineParam like so:

    @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)

Prints out: {{pipelineparam:op=;name=output-file;value=;type=;}

0 Answers
Related