Как исправить PipelineParam от отбрасывания всей информации, кроме имени в Kubeflow Pipeline - PullRequest
2 голосов
/ 02 июля 2019

Я пытаюсь написать приложение, используя 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=;}

...