Используйте параметр run в качестве аргумента. kubeflow

#python #docker #yaml #kubeflow #kubeflow-pipelines

Вопрос:

Я пытаюсь использовать параметр запуска kubeflow в качестве аргумента для моего шага конвейера.

Однако каждый раз, когда я компилирую файл yaml, он изменяется с целого числа на локальный путь.

 @dsl.pipeline(name='First Pipeline', description='generates a random set of numbers then performs operations on them returning a json object')
def first_pipeline(generate_n_arg: int = 10):

    # Loads the yaml manifest for each component
    generate_numbers = kfp.components.load_component_from_file('generate_numbers/generate_numbers.yaml')

    multiply_numbers = kfp.components.load_component_from_file('multiply/multiply.yaml')
    sum_numbers = kfp.components.load_component_from_file('sum/sum.yaml')
    sort_numbers = kfp.components.load_component_from_file('sort/sort.yaml')
    
    output_to_json = kfp.components.load_component_from_file('output_to_json/output_to_json.yaml')

    # Run generate_data task
    print(generate_n_arg)
    generate_numbers_task = generate_numbers(generate_n=generate_n_arg)
 

мой файл yaml четко указывает, что он должен быть целым числом

 description: generate random toy data

inputs:
- {name: generate_n, type: Integer, description: 'an integer for how many numbers to generate'}

outputs:
- {name: out_path, type: LocalPath, description: 'Path where data will be stored.'}

implementation:
  container:
    image: path/to/image
    command: [
      python, generate.py,

      --generate_n,
      {inputPath: generate_n},

      --out_path,
      {outputPath: out_path},
    ]
 

однако каждый раз, когда я компилирую конвейер, он изменяется на путь

 command: [python, generate.py, --generate_n, /tmp/inputs/generate_n/data, --out_path,
        /tmp/outputs/out_path/data]
 

даже несмотря на то, что конвейер все еще признает, что я несколько раз вводил целое число в yaml

     inputs:
      artifacts:
      - {name: generate_n_arg, path: /tmp/inputs/generate_n/data}

  arguments:
    parameters:
    - {name: generate_n_arg, value: '10'}
    artifacts:
    - name: generate_n_arg
      raw: {data: '{{workflow.parameters.generate_n_arg}}'}
 

Кто-нибудь знает, как я могу заставить его выдавать мне входное значение вместо пути к локальному пути/артефакту?

Ответ №1:

Я нашел проблему. У меня было неправильное значение в файле yaml. Я использовал неправильную команду ввода, чтобы указать значение.

меняющийся

       --generate_n,
      {inputPath: generate_n},
 

Для

       --generate_n,
      {inputValue: generate_n},