【问题标题】:ParallelFor in Kubeflow PipelinesKubeflow 管道中的 ParallelFor
【发布时间】:2021-02-15 07:35:58
【问题描述】:

我想使用自定义列表在 Kubeflow 管道中运行并行操作,并且我想将列表元素的值用于定义操作。我正在尝试这样的事情:

my_list = ['foo', 'bar']
with dsl.ParallelFor(my_list) as item:
    op_first = dsl.ContainerOp(
        name=f'{item} - First Op',
        image=f'gcr.io/...',
        arguments=[
            ...
        ]
    )
    ...

但我收到这样的错误:

ValueError: Only letters, numbers, spaces, "_", and "-"  are allowed in name.
Must begin with letter: {{pipelineparam:op=;name=loop-item-param-103a50f1}} - First Op

我也试过

my_dict = [{'name': 'foo'}, {'name': 'bar'}]
with dsl.ParallelFor(my_list) as item:
    name = item.name
    op_first = dsl.ContainerOp(
        name=f'{name} - First Op',
        image=f'gcr.io/...',
        arguments=[
            ...
        ]
    )
    ...

但我遇到了类似的错误。如何检索项目的“原始”名称?

【问题讨论】:

    标签: kubeflow kubeflow-pipelines


    【解决方案1】:

    我知道这是一个老问题,但我刚刚遇到了同样的问题,所以希望这对其他人有帮助。

    对于您尝试的第二个选项,将字典键“名称”替换为其他内容,如下所示。

    my_dict = [{'job_name': 'foo'}, {'job_name': 'bar'}]
    

    似乎 Kubeflow 内部使用了键“名称”,并且为其分配值会导致您的错误。

    【讨论】:

      【解决方案2】:

      我认为问题在于您给 ContainerOp 起的名称。

      name=f'{name} - First Op'

      name=f'{name} 应该可以工作

      【讨论】:

        猜你喜欢
        • 2020-04-02
        • 2022-01-18
        • 1970-01-01
        • 2019-12-21
        • 2021-03-15
        • 2020-07-23
        • 2021-01-14
        • 2019-09-23
        • 2022-12-18
        相关资源
        最近更新 更多