feat: KEP-3744: Store trial history natively in OptimizationJob status - #3856
feat: KEP-3744: Store trial history natively in OptimizationJob status#3856Sridhar1030 wants to merge 3 commits into
Conversation
Records each trial's parameters, objective metrics, state, and timestamps in OptimizationJob.status.trials so the optimization survives deletion of trial TrainJobs at any lifecycle point. Records are written at trial creation and patched once at terminal state, making the suggestion snapshot fully self-contained without child finalizers. Follow-up to KEP-3562 Phase 1, which reconstructs history from TrainJob annotations and loses it when trials are garbage collected. Fixes: kubeflow#3744 Signed-off-by: Sridhar1030 <sridharpillai75@gmail.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Signed-off-by: Sridhar1030 <sridharpillai75@gmail.com>
…, add test plan checkbox Signed-off-by: Sridhar1030 <sridharpillai75@gmail.com>
|
Left a couple of status suggestions on #3552 that overlap with this — One thing I'd find useful in the proposal: where does the boundary sit between what the controller reconstructs and what status owns? If Also, have you thought about how to bound the growth? 100 trials × up to 100 parameters in a single status object gets fairly large, and I think that's part of why Katib kept trial state in separate CRs. |
|
Thanks @Krishna-kg732! On growth: this is covered in Risks under "Status object growth" (capped list, and the controller checks the bound before appending, so the failure mode is an explicit condition rather than a rejected status write); curious whether you think the cap needs to be lower. On #3552: would you prefer |
What this PR does / why we need it:
This PR introduces KEP-3744, proposing native trial history in
OptimizationJob.status.trials.In the Phase 1 design of KEP-3562, the controller reconstructs trial history from child TrainJob annotations, so deleting any trial TrainJob (manually, or via TTL/GC cleanup) silently corrupts a running optimization. This KEP makes the OptimizationJob self-contained: each trial's record is written at creation and finalized once at terminal state, the suggestion snapshot is assembled entirely from status, and no child finalizers are needed.
Raised during the KEP-3562 API review: #3565 (comment)
Which issue(s) this PR fixes:
Part of #3744
Does this PR introduce a user-facing change?
No, design proposal only.
Checklist: