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

7/1/2019

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=;}

-- Nicholas Schenone
kubeflow
kubernetes

0 Answers