feat: pack recent submissions into reserved account slots first
Preserve shared queue positions for old-model candidates with constrained admission. Retain headroom balancing for ties and weekly calibration pinning. Add offline mixed-age allocation regressions.
This commit is contained in:
@@ -948,6 +948,26 @@ class ModelHubClientPool:
|
||||
usable = {index: remaining for index, remaining in remaining_by_index.items() if remaining > 0}
|
||||
if not usable:
|
||||
return None
|
||||
if (
|
||||
reserve_capacity_slots is None
|
||||
and weekly_target is None
|
||||
and self.recent_model_reserve_slots > 0
|
||||
):
|
||||
# Recent models can use every position; old models cannot.
|
||||
# Pack recent work into reserved positions first, then the
|
||||
# account nearest its old-model threshold. This preserves
|
||||
# shared positions for later old candidates, regardless of
|
||||
# candidate arrival order. Keep largest-headroom/round-robin
|
||||
# balancing among accounts with the same shared capacity.
|
||||
shared_slots = {
|
||||
index: max(0, remaining - self.recent_model_reserve_slots)
|
||||
for index, remaining in usable.items()
|
||||
}
|
||||
least_shared = min(shared_slots.values())
|
||||
usable = {
|
||||
index: remaining for index, remaining in usable.items()
|
||||
if shared_slots[index] == least_shared
|
||||
}
|
||||
best_remaining = max(usable.values())
|
||||
tied = [index for index, remaining in usable.items() if remaining == best_remaining]
|
||||
selected_index = min(
|
||||
|
||||
Reference in New Issue
Block a user