-
Notifications
You must be signed in to change notification settings - Fork 238
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
Allow partial admission of jobs #420
Comments
I'm interested in tackling this feature. If there is no object, I will assign it to me and I will attempt a design doc first. /assign @kannon92 |
So I am reading this as we probably want some kueue configuration option to allow this globally? I know that we probably want to implement this without "hard-coding" anything on the Job API as we want Kueue to be a general solution for workloads other than the Job API. So I am a bit confused on where this item should live? A user will submit a Job with a CQ annotation so I don't think it should be an API field on the Job API. Should a user opt-in into this via a CQ setting? Or do we want a global setting in the Kueue Configuration that allows this behavior if an admin enables it? |
No, the each workload should dictate whether they can handle lower parallelism. It probably needs to be an annotation for now. I think we might be able to justify a field upstream, if we offer some behavior for it. For example, you could have the job controller stop retrying pod creations if it has reached the |
I'm afraid I may not have the time to tackle this in the short term. /unassign @kannon92 |
MPIJob has a parameter like this, although not properly supported kubeflow/mpi-operator#518 |
A few questions
|
I think it's independent of
I think we can have a flag like
Yes, see https://github.com/kubernetes-sigs/kueue/tree/main/keps Some thoughts, I think we should implant the field to Workload maybe inside the PodSet, to make it awared by Kueue, one more thing is should we also record the original parallelism? |
There are two things at play here:
Since the annotation is opt-in, I don't see why we need a gate. |
Probably, we want to add this feature for the MPIJob with Elastic Training (Elastic Horovod). Also, PytorchJob has Elastic Training mode. |
This is simpler than elastic. Here we want to start a job with Y pods (where Y>=X), and keep the number at Y during the life of the job. |
Ah, I see. Thanks for clarifying. |
/assign |
Do we need a KEP for this? The way I see it: After #756 we will have a way of knowing the number of pods for which the admission was done What's still needed:
|
If we don't need to modify any APIs (adding new APIs), I'm ok with no KEP. |
We need to add new APIs. Otherwise how do users communicate that they are ok with partial admission. And how do we communicate back to the user what was the decision taken? And the implementation might not be trivial. So a KEP helps put everything in perspective. As the project grows, we might be requiring more KEPs. |
That's right. |
/reopn #763 was only the high level design |
/reopen |
@kerthcet: Reopened this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
What would you like to be added:
A mode of operation that allows partial admission of jobs, for example if parallelism is x and there is only quota available for y < x, then jobs should still be admitted.
In this mode, the job needs to specify some minimum number of pods that is less than parallelism. To force the job controller to start only what was allowed, we need to reset parallelism to match the partial assignment, we can do that in the same update request that unsuspends the job
Why is this needed:
Not all jobs require all-or-nothing.
Completion requirements:
This enhancement requires the following artifacts:
The artifacts should be linked in subsequent comments.
The text was updated successfully, but these errors were encountered: