-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Late binding aspects on Kubeflow Pipeline #1187
Comments
@animeshsingh would you be able to provide more specific use cases for #1? /cc @gaoning777 to comment on the loop operator for #2, running steps of a loop async can be powerful. |
For 1, the easiest option would be to have a container that launches another container selected depending on parameters. It's not great as the first container needs to wait on the second one, but if the first container consumes very little resources while waiting, the implementation should be acceptable. Let me know what you think. For 2, Argo supports using the output of one container to determine how many parallel branches must be created so it should be able to add support for this in the Python DSL. (See https://github.com/argoproj/argo/blob/master/examples/loops-param-argument.yaml). Letting @gaoning777 comment on whether the current loop supports already provides functionality similar to https://github.com/argoproj/argo/blob/master/examples/loops-param-argument.yaml, or if more work is needed. |
Thanks @paveldournov and @vicaire. Use case for 1 would be that a lot of images are built at runtime, for e.g. if you are running a notebook within a step, its probably packaged in container at runtime. Now a container from a container - yes that can sort of get there, but would be great to bring some level of abstraction in pipelines. |
@animeshsingh The image attribute supports input parameter placeholders, so you can already use pipeline parameters or task outputs to set the image name. So, 1 is non-issue. |
@Ark-kun how about in the case when you are using components.yaml, which is what we are adopting |
@animeshsingh, in the case of 1, the container that launches another container would not need to be rebuilt by the DSL. It would just need to be built once and for all, and be reused whenever it is needed. It would take as a parameter a reference to another container. |
The current recursion e.g. https://github.com/kubeflow/pipelines/blob/master/samples/basic/recursion.py supports conditional recursions. It can certainly wait for a condition containing runtime information to be met. |
So there are usecases emerging which require some late binding aspects
Thoughts/comments?
@vicaire @Ark-kun @Ark-kun
The text was updated successfully, but these errors were encountered: