kubeflow ParallelFor 使用之前的 containerop 输出

use*_*803 2 python kubeflow kubeflow-pipelines

我可以使用创建一个静态的 for 循环

with dsl.ParallelFor([1,2,3]) as item:
   ....
Run Code Online (Sandbox Code Playgroud)

如何使用 acontainer_op.output作为输入ParallelFor
假设第一个容器输出一个 integer n,然后我想运行ParallelForn 次。

像这样的尝试不起作用:

container_op = ContainerOp(...)
with dsl.ParallelFor(container_op.output) as item:
   ....
Run Code Online (Sandbox Code Playgroud)

我正在尝试刺激并行 pythonrange(n)函数。

小智 5

对支持withItem(静态循环)和withParams(动态循环)的更改是在多个部分完成的,但它们现在都可用。参考公关

确保您的 KPF 版本是0.1.31或更高版本。

可以循环遍历前一个的输出,container_op如下所示

echo_op = dsl.ContainerOp(
        name='echo',
        image='library/bash:4.4.23',
        command=['sh', '-c'],
        arguments=['echo "[1,2,3]"> /tmp/output.txt'],
        file_outputs={'output': '/tmp/output.txt'})

with dsl.ParallelFor(echo_op.output) as item:
        iterate_op = dsl.ContainerOp(
        name='iterate',
        image='library/bash:4.4.23',
        command=['sh', '-c'],
        arguments=[f"echo {item} > /tmp/output.txt"],
        file_outputs={'output': '/tmp/output.txt'})
Run Code Online (Sandbox Code Playgroud)

确保您的输出 YAML 如下所示:

        name: for-loop-for-loop-3c29048d-1
        template: for-loop-for-loop-3c29048d-1
        withParam: '{{tasks.echo.outputs.parameters.echo-output}}'
Run Code Online (Sandbox Code Playgroud)