Skip to content

Research, 2026–Present

Proactive Feasibility Scheduler

An evaluation study of ML-based GPU-cluster job scheduling — and a proven negative result.

counterexamples
0
dispatch instants
45,432
paired TOST
p = 2.6×10−16

Problem

The research question is narrow and testable: can machine learning improve GPU-cluster job scheduling via learned wait-time prediction? The intuition behind an ML "Proactive" scheduler is that a model predicting each queued job's wait from live cluster state should order the queue better than classical heuristics.

This study answers that question end to end — and the answer is a proven negative result. The learned scheduler is structurally degenerate: at the dispatch instant, its score cannot distinguish two queued jobs by anything except requested size.

Approach

The pipeline begins with a discrete-event cluster simulator (01_simulation/) and an XGBoost regressor that predicts per-job wait time from 12 cluster-state features (can_fit_now, gpu_fit_ratio, node_availability, queue_pressure, and others). Under run-wise 5-fold cross-validation (GroupKFold on the simulation run) the regressor reaches R2 0.811 ± 0.021 and MAE 4.90 ± 0.45 — corrected down in v3.6 from a random-row split that put rows of the same run on both sides; under a within-run chronological split R2 is 0.725. The degeneracy result does not depend on this number.

Fourteen policies run against the simulator — FCFS, SJF (oracle, estimated), SRPT, EASY and conservative backfill, HRRN, and the ML Proactive scheduler — with Holm-adjusted significance testing. Validation then moves off synthetic workloads onto real supercomputer traces from the Parallel Workloads Archive: LANL CM-5 and SDSC SP2, replayed second-exact, 12 policies across 20 paired 7-day windows at load ≈ 0.70, using the real user runtime estimates recorded in the traces.

The degeneracy audit (04_scheduler/ranking_degeneracy.py) asks one question of the full pipeline: can the learned score ever rank two identically-sized queued jobs differently? Everything is reproducible — bash run_all_experiments.sh, Python 3.11+, seeded runs, Docker, CI.

  1. simulator

    discrete-event cluster

  2. xgboost regressor

    wait-time, R2 0.811

  3. 14-policy bench

    Holm-adjusted stats

  4. trace replay

    LANL CM-5 · SDSC SP2

  5. degeneracy audit

    45,432 instants

  6. negative result

    TOST p = 2.6×10−16

Study pipeline: simulator → XGBoost regressor → 14-policy benchmark → real-trace replay → degeneracy audit → proven negative result

Decisions

Test equivalence, not difference
A standard Holm-adjusted difference test between the ML scheduler and a size sort returns p = 0.17 — no detectable difference, and the tie stays hidden. Running a paired TOST equivalence test instead makes the tie the finding: sorting by requested size is statistically equivalent to the full XGBoost pipeline, p = 2.6×10−16.
Prove the degeneracy structurally
At any single dispatch instant, cluster-state features take the same value for every queued job — 7 of the 12 features vary across the queue in 0.0% of instants. That makes the learned score a function of requested size alone, and the audit confirms it empirically: zero counterexamples in 45,432 dispatch instants (41,786 real + 3,646 synthetic) where two identically-sized queued jobs scored differently — 45,268 instants and zero again on a Linux runner; the count is platform-dependent, the result is not.
Replay real traces second-exact
The synthetic benchmark looked favorable: 7.9% ± 9.4% mean wait reduction vs FIFO over 40 paired runs (paired t, p = 2.0×10−6). But utilisation and completions were identical in all 40 runs — a reordering effect, not a throughput gain — and per-job fairness moved the wrong way (Gini 0.526 → 0.794, max wait 57.85 → 122.65 ts, per the repo's honest-claims record) — and on real traces the headline gain proved machine-dependent: −20.4% vs FCFS on SDSC (p = 0.042) but −4.5%, p = 0.48, on LANL.
Name the honest baseline
The control implied by this feature set is not FIFO — it is a sort by requested size, which needs no training, no inference, and no monitoring. Judged against that ML-free control, the learned scheduler adds nothing: both land on the same mean wait (145.0) in the SDSC replay.

Evidence

Verifiable numbers for Proactive Feasibility Scheduler
Dispatch instants audited (reference platform)45,432 — zero counterexamples (41,786 real, 3,646 synthetic)
Equivalence to size sort (paired TOST)p = 2.6×10−16
Regressor, run-wise 5-fold CVR2 0.811 ± 0.021 · MAE 4.90 ± 0.45
Synthetic gain vs FIFO (40 paired runs)7.9% ± 9.4% (p = 2.0×10−6)
SJF vs ML Proactive, SDSC20.2% lower wait (Holm p = 0.009)
Zero-shot transfer, both real tracesR2 ≈ 0

Outcome

What stands proven, since the v3.4 degeneracy audit: at the dispatch instant, the learned score is a function of requested job size alone. Across 45,432 dispatch instants on the reference platform (41,786 replayed from real traces, 3,646 synthetic; 45,268 and zero again on a Linux runner), two identically-sized queued jobs never scored differently, and paired TOST (p = 2.6×10−16) establishes that a size sort is equivalent to the XGBoost pipeline. The simulated gain does not replicate on real hardware traces — the ML scheduler beats FCFS on SDSC (−20.4%, p = 0.042) but not on LANL (−4.5%, p = 0.48), plain SJF on the users' own estimates beats it by 20.2% on SDSC (Holm p = 0.009) and by 15.3% on LANL, where the gap is not significant (Holm-adjusted t p = 0.54, Wilcoxon p = 0.43), and transfer is weak: zero-shot R2 ≈ 0 on both traces, 0.49 (SDSC) and 0.10 (LANL) after retraining.

The constructive output is three findings. A wait-time feature set can only produce a meaningful ranking if it contains a per-job attribute that is not a function of size given cluster state; the honest baseline for an ML scheduler is the ML-free control its feature set implies, not FIFO; and equivalence tests are required — the difference test (Holm-adjusted p = 0.17) would have hidden the tie. The replay also surfaced side results: EASY backfill costs +74% mean wait under real estimate error versus perfect estimates on LANL (+6.2% on SDSC) — significant under the Wilcoxon rank test (Holm p = 2.1×10−5) but not the t-test (raw p = 0.025, 0.23 after Holm), and real estimate distributions (SDSC median 6.91× over-estimate with 0.1% under; LANL 1.51× with 36.3% under-estimates) do not match the f-model's 3.0× over-only assumption.

Next

  • Finish the LaTeX manuscript, in progress at phases_22_30/phase_28_manuscript/manuscript.tex.

  • Per-job attributes that satisfy the non-degeneracy condition — runtime estimates, user history, partition identity — define what any non-degenerate successor feature set must contain.

Next: the other case files

  • Warden

    Gives a Python package an allow, warn or block verdict — from what its code does, where it came from, and what is known about it.

  • PlantPal+

    Cross-platform app unifying plant care, fitness, and nutrition in one daily dashboard with streaks, reminders, and cloud sync.