一个动态列表。我想收集循环中的所有输出,并将它们传递给另一个ContainerOp。
下面这样的东西显然行不通,因为outputs
列表是静态的。在
with dsl.ParallelFor(op1.output) as item:
op2 = dsl.ContainerOp(
name='op2',
...
file_outputs={
'outputs': '/outputs.json',
})
outputs.append(op2.output)
op3 = dsl.ContainerOp(
name='op3',
...
arguments=['--input': outputs] # won't work
)
问题是
op3
没有正确地引用op2
的输出作为输入参数。试试这个:我遇到了Kubeflow管道的动态“扇出”和“扇进”的问题。可能有点重手,但我用了一个装PVC的声明来克服这一点。在
Kubeflow允许您使用
VolumeOp
(linkhere)挂载已知的PVC或动态创建一个新的PVC。这个片段展示了如何使用已知的PVC。在确保}的循环之后运行,最后使用
op_3
在{after(op_2)
。在注意:这可能是一个繁重的方法,如果KFP允许它作为KF编译器的一部分,那么可能会有更好的解决方案,但是我无法让它工作。如果很容易在env中创建一个PVC,这可能适用于您的情况。在
相关问题 更多 >
编程相关推荐