Looking Beyond GPUs for DNN Scheduling on Multi-Tenant Clusters (Synergy)

Jayashree Mohan, Amar Phanishayee, Janardhan Kulkarni (Microsoft Research); Vijay Chidambaram (UT Austin / VMware Research) | OSDI '22, July 11–13, 2022, Carlsbad, CA | Open source: https://github.com/msr-fiddle/synergy


Problem

DNN training runs on shared, multi-tenant GPU clusters where the user requests a fixed number of GPUs and the scheduler hands out CPU and memory proportional to that GPU count — GPU-proportional allocation. Every prior DNN cluster scheduler (Gandiva, Tiresias, Themis, Gandiva-Fair, AFS, Pollux) does this, treating the GPU as the dominant resource and auxiliary resources as a derived quantity.

But DNNs are not uniformly sensitive to CPU and memory. Data ingestion — reading from storage into memory and pre-processing at the CPU — is expensive and produces data stalls; some image and video recognition models achieve up to 3× speedup when their CPU allocation exceeds the GPU-proportional share, while GNMT is unaffected even by less than its share. GPU-proportional allocation neither gives sensitive jobs more nor reclaims the surplus idling on insensitive ones. Prior characterization of Microsoft's Philly cluster confirms CPU cycles are under-utilized in multi-tenant clusters.


Core Insight

Allocating these auxiliary resources in a workload-aware fashion, rather than the traditional GPU-proportional allocation can significantly improve performance by effectively utilizing cluster-wide resources.

Co-locating a CPU-sensitive job with a CPU-insensitive one (and likewise for memory) creates slack that can be redistributed, under one guardrail: a job receives less than GPU-proportional auxiliary resources only when that does not degrade its throughput below the GPU-proportional baseline.


Method

Synergy is a round-based scheduler that arbitrates GPU, CPU, and memory in a homogeneous cluster. It leaves GPU demand untouched (user-specified, fixed for the job's lifetime) and only tunes the fungible auxiliary dimensions.

 job arrives -> [ Optimistic Profiling ]  once per job lifetime; emits W_j
                          |
                          v
                 [ Priority Job Queue ]   ordered by FIFO/SRTF/LAS/FTF
                          |  runnable set J_t for this round
                          v
                 [ Mechanism: GREEDY | TUNE | OPT ]
                          |  (GPU, CPU, Mem) placement per job
                          v
                 [ Deploy: lease grant/terminate, Synergy iterator + gRPC ]

1. Optimistic profiling. Building the full CPU × memory sensitivity matrix naively costs 24 × 10 = 240 minutes (4 hours) at 1 minute per point on a 24-CPU / 500 GB server. Synergy profiles only the CPU axis at full memory empirically and models the memory axis analytically — valid because the DNN-aware MinIO cache guarantees a fixed number of cache hits per epoch — a 10× reduction, to 24 minutes. CPU points are then chosen by binary search: descend into the lower half when a profiled point yields less than a fixed threshold (say 10%) throughput improvement, else profile more of the upper half. That reaches under 8 minutes with 8 CPU points instead of 24 — the up to 30× total reduction.

2. Synergy-OPT (upper bound, not deployable). The allocation problem is NP-hard, so it is relaxed to two LPs. The first assumes all resources sit on one super-machine with G/C/M units and uses binary variables y_{c,m,j} over the discrete sensitivity matrix W_j:

(1)  Maximize   SUM_{j in J_t} SUM_{[c,m]}  W_j[c,m] * y_{c,m,j}
(2)  SUM_j SUM_{[c,m]} c * y_{c,m,j} <= C     (3)  SUM_j SUM_{[c,m]} m * y_{c,m,j} <= M
(4)  for all j:  SUM_{[c,m]} y_{c,m,j} = 1                       (one config per job)
(5)  for all j:  SUM_{[c,m]} W_j[c,m]*y_{c,m,j} >= W_j[C_g, M_g] (>= fair share)

with C_g = C_i / G_i * g_j and M_g = M_i / G_i * g_j. Theorem 4.1 proves LP(1–5)'s throughput is at least that of an optimal solution. A second LP maps the result onto real machines while minimizing fragmented jobs, provably fragmenting at most 3s jobs for s machines. Synergy-OPT is unusable in practice: per-round solve time grows exponentially, and it yields fractional GPU allocations (e.g. 3.3 GPUs on one server, 2.7 on another for a 6-GPU job).

3. Synergy-TUNE (the deployed heuristic). Runnable jobs are the top n whose GPU demands are exactly satisfiable — auxiliary demands are ignored at selection time, so no job is skipped and GPUs are never idled at full load. Jobs are sorted by GPU, then CPU, then memory demand, each placed on the server with the least free resources that still fits. If a job does not fit: revert its demand to GPU-proportional if it was above; otherwise find a server satisfying only its GPU need, identify co-resident jobs holding more than GPU-proportional, and revert just enough of them. In the worst case every job in a round falls back to GPU-proportional — hence Synergy is never worse than the baseline.

4. Synergy-GREEDY (the strawman). First-fit packing that skips any job not fitting in all dimensions — this exhausts CPU/memory while leaving GPUs fragmented and idle, and starves skipped jobs, breaking the policy's fairness.

5. Implementation. Python, event-driven, with an accompanying simulator. Jobs use a thin Synergy data iterator wrapping the PyTorch and NVIDIA DALI iterators; it registers the job, sends lease updates, checkpoints to shared storage on lease termination, and synchronizes GPU processes. gRPC carries scheduler↔︎job traffic; cvxpy solves Synergy-OPT in the simulator.


Experimental Setup

Component Value
Physical cluster 32 × V100 across 4 servers
Simulated clusters 128 GPUs / 16 servers; 512 GPUs / 64 servers
Per server 8 GPUs, 24 CPU cores, 500 GB DRAM
Default CPU:GPU ratio / fair-share memory 3 (swept 3 → 6 in §5.5) / 62.5 GB per GPU
Framework PyTorch 1.1.0
Models 10 DNNs: ShuffleNetv2 / AlexNet / ResNet18 / MobileNetv2 / ResNet50 (ImageNet); GNMT (WMT16); LSTM (Wikitext-2); Transformer-XL (Wikitext-103); M5 (Free Music); DeepSpeech (LibriSpeech)
Traces Microsoft Philly (8000-job subrange for 512 GPUs) + production-derived traces
Job duration / arrival model 10^x min, x ~ U[1.5,3] w.p. 80%, U[3,4] w.p. 20%; static (all at t=0) or dynamic (Poisson rate λ)
Policies FIFO, SRTF, LAS, FTF — each vs. its Synergy-augmented variant
Baselines GPU-proportional, Synergy-GREEDY, DRF, Tetris, Synergy-OPT
Metrics Makespan (static traces); average / 99p JCT over 1000 steady-state jobs (dynamic)

Headline Quantitative Results

Motivating sensitivity measurements:

Measurement Result
AlexNet, CPU:GPU 3 → 12 / ResNet18, CPU:GPU 3 → 9 3.1× / 2.3× faster training
ResNet18 memory 62 GB → 500 GB / GNMT at 20 GB almost faster / unaffected
ShuffleNet / ResNet18 CPU need 9–24 cores per GPU vs. SKU ratios of only 3–6

Physical cluster, 32 GPUs (Table 5, hours):

Policy (Metric) Split Proportional Synergy-TUNE Synergy-OPT (sim)
FIFO (Makespan) 60-30-10 16 11.6 (1.4×) 11.01
SRTF (Avg JCT) 30-60-10 4.81 3.21 (1.5×) 3.06
SRTF (99th pct JCT) 30-60-10 17.32 8.59 (2×) 8.21

Simulator fidelity is within 5% of the physical cluster; Synergy-TUNE lands within 4% of optimal here.

Simulation, 512 GPUs on the real Philly trace, split (20,70,10) — average JCT (hrs):

Policy SRTF LAS FIFO
GPU-proportional 30 32 71
Synergy 26 28 62

Under SRTF, short (JCT < 4 hrs) vs. long jobs:

Statistic Proportional Synergy
Avg, short / long 2 / 80 1.7 / 68
99p, short / long 9 / 660 4 / 641

That is a 2.2× short-job tail reduction and 15% average-JCT reduction for both classes; individual jobs speed up by up to 9×.

Simulation, 128 GPUs, varying load: average JCT improves up to 3.4× (single-GPU trace) and up to 1.6× (multi-GPU trace), with gains growing under load because Synergy cuts both queueing delay and per-job runtime. FIFO single-GPU at 9 jobs/hr goes 81 hrs → 22 hrs against a Synergy-OPT bound of 20 hrs; FTF sees 2.3× / (single / multi-GPU); LAS multi-GPU cuts the 95th-percentile JCT of long jobs by . Synergy-TUNE stays within 10% of Synergy-OPT in all cases and at 128 GPUs runs 200× faster (sub-second per round vs. exponential growth).

Utilization and robustness:

Result Number
CPU utilization at low load 60% (proportional) → 90% (Synergy-TUNE) → 1.5× lower avg JCT
Avg JCT reduction vs. CPU:GPU ratio 3 / 4 / 5 / 6 (load 9 jobs/hr) 3.4× / 3× / 2.2× / 1.8×
vs. DRF, workload split (50,0,50) 7.2× avg JCT reduction
vs. Tetris, workload split (50,0,50) 1.8× avg JCT reduction
Worst-case split (50,0,50), all jobs sensitive Synergy-TUNE matches GPU-proportional; Synergy-GREEDY degrades it
Memory-model estimation error within 3% of empirical (8-GPU ResNet18)

Limitations


Open Problems

  1. Extending resource-sensitivity awareness to heterogeneous clusters via a 3-dimensional sensitivity matrix over (CPU, memory, GPU type).
  2. Combining resource-sensitivity awareness with GPU spatial sharing for the subset of jobs insensitive to auxiliary resources.
  3. Reasoning about per-job storage and network bandwidth demands, not just CPU and memory.
  4. Exploring the consolidation-vs-allocation trade-off for multi-GPU jobs, accounting for the network penalty of splitting a job across servers.
  5. Profiling and scheduling model- and pipeline-parallel jobs, where each stage has a distinct CPU:GPU and memory:GPU requirement.