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

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

Per-section summary organized by the paper's own headings. Every paragraph of the paper produces at least one bullet; all quantitative tables, equations, and named methods are preserved.


Abstract


1. Introduction

Setting. DNN training is resource-intensive and long-running (hours to days). Enterprises build large multi-tenant clusters with expensive accelerators shared across users and production groups. Jobs specify a GPU demand and run once that many GPUs are free. They are managed either by traditional big-data schedulers (Kubernetes, YARN) or by modern DNN-aware schedulers, which decide GPU allocation while implementing cluster-wide policies optimizing average JCT, makespan, or user-level fairness.

The gap.

Main 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.

Two open problems Synergy must solve:

  1. What is the ideal resource requirement for each job (with fixed GPU demand), and how can it be determined with low overhead?
  2. How should such jobs be packed onto servers along multiple resource dimensions, especially when the job's demand for those resources is itself tunable?

Optimistic profiling (answer to 1).

Scheduling mechanism (answer to 2).

Two algorithms.

Implementation and results preview. Prototype plus an event-driven simulator, both in Python. Synergy talks to the DNN job through a thin iterator API wrapping the existing data iterator, requiring minimal job-script changes. Across policies and traces, average JCT improves up to 1.5× on a physical 32-GPU cluster and up to 3.4× on a simulated cluster of up to 512 GPUs.

Stated contributions:

  1. Identify the importance and need for resource-sensitive scheduling of DNN jobs in multi-tenant GPU clusters (§2).
  2. Present Synergy — optimistic profiling plus disproportionate allocation such that no job achieves lower than GPU-proportional throughput (§3).
  3. Present Synergy-TUNE, a heuristic mechanism mapping profiler-computed allocations onto the cluster with better utilization than GPU-proportional (§4).
  4. Extensive physical and simulated experiments showing up to 3.4× average JCT improvement and support for higher input load (§5).

2. Background and Motivation

Scheduling ML training jobs in a cluster. Training is resource-intensive and long-running; collocating training workloads in a shared multi-tenant cluster is common at large organizations. The work targets clusters like those published by Microsoft and Alibaba, using on-premise servers or cloud VMs with pre-defined GPU/CPU/memory. Each server can host more than one job with varying usage — some heavy on CPU-side pre-processing, others heavy on GPU computation; a server with 8 GPUs can host 8 single-GPU jobs from different users.

Policy vs. mechanism. A policy (FIFO, SRTF, LAS, FTF) decides the set of jobs J to run; a mechanism decides where J runs and how much resource it gets. GPU demand is fixed (user-requested); CPU and memory allocation is fungible.

GPU-proportional allocation defined. During training a mini-batch is fetched from storage into memory, cached for subsequent accesses, pre-processed at the CPU, then copied to the GPU. Existing DNN schedulers, real-world GPU cluster schedulers, and even recent GPU-elasticity schedulers all allocate CPU/memory GPU-proportionally. Concrete example: on a server with 4 GPUs, 16 CPUs, 200 GB memory, a 1-GPU job receives 4 CPUs and 50 GB memory.

2.1 Motivation: Resource sensitivity

Insight. DNNs co-scheduled on a cluster exhibit different levels of sensitivity to CPU and memory allocation during training. Prior characterization of Microsoft's Philly cluster shows CPU cycles are under-utilized in multi-tenant clusters — the disparity in requirements across jobs can be exploited without any hardware upgrade (storage, CPU, or memory).

CPU sensitivity (Figure 2a — per-epoch time vs. CPU count, single-GPU training, dataset fully cached).

Model CPU:GPU change Speedup
AlexNet 3 → 12 3.1× faster training
ResNet18 3 → 9 2.3× faster training

GPU VM SKUs and their CPU:GPU ratios (Figure 2b):

CPU:GPU SKU
3:1 NVIDIA DGX-2; internal servers at X
4:1 AWS p3.16xlarge; NVIDIA DGX-1
5:1 Azure NDv2
6:1 Azure NC24s_v3

Memory sensitivity. Two models are trained with varying memory on a server whose GPU-proportional memory share is 62 GB per GPU: ResNet18 on OpenImages and GNMT on WMT.

Takeaway. When two jobs must share a server, it is possible to co-locate a CPU-sensitive job with a CPU-insensitive one, enabling resource-sensitive rather than GPU-proportional CPU allocation. Symmetrically, it is always beneficial to pack a memory-sensitive job with an insensitive one, allowing disproportionate memory sharing to improve aggregate cluster throughput.

Worked example (2 physical servers, each 8 GPUs, 24 CPUs, 500 GB DRAM; internal servers at large cloud provider X). Table 1 — four jobs, each requesting 4 GPUs: J1 = ResNet18, J2 = Audio-M5, J3 = Transformer, J4 = GNMT.

Table 2 — GPU-proportional allocation:

Server Job GPU CPU Mem (GB)
S1 J1 4 12 250
S1 J2 4 12 250
S2 J3 4 12 250
S2 J4 4 12 250

Table 3 — resource-sensitive allocation:

Server Job GPU CPU Mem (GB)
S1 J1 4 23 400
S1 J3 4 1 100
S2 J2 4 12 450
S2 J4 4 12 50

2.2 Synergy Scheduling Policies

2.3 Assumptions and Limitations

Three explicit assumptions, derived from analysis of large multi-tenant clusters: homogeneous clusters, fixed GPU allocation for the lifetime of a job, and use of the MinIO cache.


3. Synergy: Design

Overview. Synergy is a round-based scheduler arbitrating multi-dimensional resources (GPU, CPU, memory) in a homogeneous cluster. It augments existing policies with resource sensitivity in two steps: (1) identify the job's best-case CPU and memory requirements via optimistic profiling (§3.1); (2) identify a runnable job set for the round using a policy (SRTF, FTF, LAS, …) whose collective GPU demand ≤ available cluster GPUs. Using profiled demands, Synergy packs jobs onto servers along multiple dimensions with a near-optimal heuristic (§4). At round end, the runnable set is refreshed by the policy and placements recomputed. Synergy only alters auxiliary resource allocations; GPU demand is user-supplied and unchanged for the job's lifetime.

                      +---------------------------+
   job arrives  --->  |   Optimistic Profiling    |   once per job lifetime
                      |  (§3.1)  CPU x Mem matrix |
                      +-------------+-------------+
                                    |  resource sensitivity matrix W_j
                                    v
                      +---------------------------+
                      |   Priority Job Queue      |   sorted by policy metric
                      |   (FIFO/SRTF/LAS/FTF)     |   (e.g. SRTF -> remaining)
                      +-------------+-------------+
                                    |  runnable set J_t for this round
                                    v
                      +---------------------------+
                      |  Scheduling Mechanism     |
                      |  GREEDY | TUNE | OPT (§4) |
                      +-------------+-------------+
                                    |  (GPU, CPU, Mem) placement per job
                                    v
                      +---------------------------+
                      |  Deploy on cluster        |  lease grant / terminate
                      |  Synergy iterator + gRPC  |  checkpoint on lease end
                      +---------------------------+

3.1 Optimistic Profiling

Cost of naive profiling. If profiling one (CPU, memory) combination costs 1 minute, profiling all discrete combinations (memory in units of 50 GB) on a server with 24 CPUs and 500 GB DRAM takes 24 × 10 = 240 minutes (4 hours).

The optimistic-profiling trick.

Memory-model validation (Figure 5a). For an 8-GPU ResNet18 job, modeled throughput is compared to empirical results from training 2 epochs at varying memory. Synergy's estimates are within 3% of empirical results, without actually running the model.

CPU profiling — binary search over CPU counts.

CPU-profiling validation (Figure 5b). For a 1-GPU ResNet18 job, normalized runtime (w.r.t. 1 CPU) is compared between empirical results averaged over 2 epochs and optimistic profiling averaged over 50 iterations (~1 minute per profile). Synergy mimics empirical performance closely in under 8 minutes, using just 8 CPU profile points instead of 24. This overhead is reasonable since it is incurred once per job lifetime and jobs typically run for hours. Together with the 240-minute naive baseline this is the up to 30× reduction claimed in §1.

After profiling, the job plus its sensitivity matrix is enqueued into the main scheduling queue, from which the policy picks runnable jobs each round.

3.2 Scheduling mechanism

3.3 Synergy-GREEDY: Greedy Scheduling

Bridge to §4. The challenge is a mechanism that eliminates GPU under-utilization from fragmentation and upholds the fairness properties of the policy while still doing multi-dimensional allocation. To judge a heuristic, the paper first formulates a theoretical upper bound on optimal cluster throughput given a set of jobs and their sensitivity profiles, then discusses the challenges of materializing that optimum, then introduces the close-to-optimal Synergy-TUNE.


4. Scheduling Algorithms

4.1 Synergy-OPT

4.1.1 Finding ideal allocation

(1)  Maximize   SUM_{j in J_t} SUM_{[c,m]}  W_j[c,m] * y_{c,m,j}

(2)  SUM_{j in J_t} SUM_{[c,m]}  c * y_{c,m,j}  <=  C           (CPU capacity)

(3)  SUM_{j in J_t} SUM_{[c,m]}  m * y_{c,m,j}  <=  M           (memory capacity)

(4)  for all j in J_t:  SUM_{[c,m]} y_{c,m,j} = 1               (one config per job)

(5)  for all j in J_t:
        SUM_{[c,m]} W_j[c,m] * y_{c,m,j}  >=  W_j[C_g, M_g]     (no worse than fair share)

Theorem 4.1. Throughput achieved by LP(1–5) is at least the throughput achieved by an optimal solution to the problem.

Proof. Consider an optimal solution O to our problem. Suppose job j receives c* units of CPU and m* units of memory in O. Then we define the following feasible solution to our LP (1-5): Set y_{c*,m*,j} = 1. Clearly, this is a valid solution and satisfies constraints (1-4).

4.1.2 Feasible Allocation on Multiple Machines

4.1.3 Challenges with operationalizing Synergy-OPT

  1. Computational cost. Solving two LPs per scheduling round is expensive; as cluster size and jobs-per-round increase, the time to find an optimal allocation grows exponentially (§5.6).
  2. Fractional GPU allocations. The second LP can assign fractional GPUs when jobs are split — e.g., 3.3 GPUs on server 1 and 2.7 GPUs on server 2 for a 6-GPU job. Realizing this requires a rounding heuristic, since GPU time/space sharing and its performance impact are out of scope.

4.2 Synergy-TUNE

Allocation requirements.

Fairness requirement. No job may run at a throughput lower than under a GPU-proportional share of CPU and memory. The priority order of jobs identified by the policy must be respected — e.g., FIFO is a priority queue sorted by arrival time.

Runnable-set selection. Synergy-TUNE picks the top n jobs from the scheduling queue whose GPU demands can be exactly satisfied by available servers, irrespective of their other (fungible) demands. Unlike Synergy-GREEDY, no job is skipped unless its GPU demand cannot be met — so GPUs are never underutilized when the cluster is at full load.

Packing. Synergy-TUNE greedily packs each runnable job along multiple dimensions onto one of the available servers, with the objective of minimizing fragmentation. Runnable jobs are sorted by GPU demand, then CPU, then memory demand. For each job j in order, pick the server with the least amount of free resources that is just enough to fit j's demand vector. For a multi-GPU job, find a minimum set of servers with sufficient GPU availability that can fit the job's demands in entirety.

Fallback when the job does not fit along all dimensions:

  1. If the job's demand vector is greater than proportional share, switch its demand to GPU-proportional share and retry.
  2. If it still does not fit, or if its demand was already ≤ GPU-proportional:
    • (a) Repeat step 1 ignoring the job's CPU and memory requirements — find a server that just satisfies the job's GPU requirement. By construction there is at least one job on that server allocated more than GPU-proportional. Identify that job or set J_s, switch them to GPU-proportional share, and release just as much resource as job j requires. By design, j will then fit.
    • (b) Continue recursively for all runnable jobs.

4.3 Implementation


5. Evaluation

Evaluation uses trace-driven simulation from production cluster traces plus physical cluster deployment, answering: does resource-sensitive scheduling improve makespan and average JCT on a physical cluster (§5.2) and in large-scale simulation (§5.3); how do Synergy-TUNE and Synergy-GREEDY perform across workload splits and utilize resources (§5.4); how does Synergy perform across CPU:GPU ratios (§5.5); Synergy-TUNE vs. Synergy-OPT (§5.6); Synergy vs. big-data schedulers (§5.7).

5.1 Experimental setup

Physical Simulated (A) Simulated (B)
GPUs 32 × V100 128 512
Servers 4 16 64
DRAM / server 500 GB 500 GB 500 GB
CPU cores / server 24 24 24
GPUs / server 8 8 8

Models (Table 4) — 10 DNNs (CNNs, RNNs, LSTMs) across 3 tasks:

Task Model Dataset
Image ShuffleNetv2 ImageNet
Image AlexNet ImageNet
Image ResNet18 ImageNet
Image MobileNetv2 ImageNet
Image ResNet50 ImageNet
Language GNMT WMT16
Language LSTM Wikitext-2
Language Transformer-XL Wikitext-103
Speech M5 Free Music
Speech DeepSpeech LibriSpeech

Traces.

Policies and metrics. Synergy is evaluated against GPU-proportional scheduling for four policies: FIFO, SRTF, LAS, FTF. Static trace → makespan (time to complete all jobs submitted at trace start). Dynamic trace → average JCT of a steady-state subset, plus the CDF.

5.2 End-to-End Physical Cluster Experiments

Two workload traces run under Synergy-TUNE (tune) and GPU-proportional (proportional): (1) a static production-derived trace of 100 jobs, split (60,30,10), FIFO, evaluated for makespan; (2) a dynamic production-derived trace with continuous arrivals, split (30,60,10), SRTF, evaluated for average and 99th-percentile JCT. Both are sized to keep the cluster fully loaded. Results are compared to the same trace replayed in the simulator and to the Synergy-OPT upper bound.

Table 5 — Physical cluster experiments (time in hours):

Policy (Metric) Workload Split Mechanism Deploy Simulate
FIFO (Makespan) 60-30-10 Proportional 16 15.67
FIFO (Makespan) 60-30-10 Tune 11.6 11.33
FIFO (Makespan) 60-30-10 Opt 11.01
SRTF (Avg JCT) 30-60-10 Proportional 4.81 4.52
SRTF (Avg JCT) 30-60-10 Tune 3.21 3.19
SRTF (Avg JCT) 30-60-10 Opt 3.06
SRTF (99th pct JCT) 30-60-10 Proportional 17.32 16.85
SRTF (99th pct JCT) 30-60-10 Tune 8.59 8.54
SRTF (99th pct JCT) 30-60-10 Opt 8.21

5.3 End-to-end results in simulation

5.3.1 Simulation with production traces

512 GPUs across 64 servers, subrange of the public Philly trace, workload split (20,70,10).

Figure 6a — Average JCT (hrs) on the Philly trace:

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

Figure 6b — Cluster metrics under SRTF, 1000 monitored jobs split into short (JCT < 4 hrs) and long jobs (JCT in hrs):

Statistic Mechanism Short Long
Avg Proportional 2 80
Avg Synergy 1.7 68
99p Proportional 9 660
99p Synergy 4 641

5.3.2 Simulation with varying load

Three key observations:

  1. Synergy-TUNE improves average JCT by up to 3.4× on the single-GPU trace and up to 1.6× on the multi-GPU trace, by speeding up resource-sensitive jobs with disproportionate allocation. The improvement grows as load increases: at low load the cluster is not at full capacity; as load rises jobs queue and incur queueing delay. Since Synergy speeds up individual jobs, pending jobs get scheduled sooner — Synergy improves cluster metrics by both reducing queueing delays and speeding up individual jobs. Under GPU-proportional allocation at high load, all CPU and memory are allocated to running jobs but remain underutilized by individual jobs. At low load, jobs are spread across the cluster and the unallocated CPU and memory is assigned to jobs that benefit from extra auxiliary resources.
  2. Synergy-TUNE sustains a larger cluster load than GPU-proportional allocation. For multi-GPU scheduling with LAS, Synergy-TUNE reduced the 95th-percentile JCT of long jobs by 2×.
  3. The average JCT achieved with Synergy-TUNE is within 10% of the optimal solution in all cases.

5.4 Impact of workload split

Resource utilization (Figure 10).

5.5 Impact of CPU:GPU ratio

Average-JCT reduction at load 9 jobs/hr:

CPU:GPU ratio 3 4 5 6
Synergy-TUNE avg JCT reduction 3.4× 2.2× 1.8×

5.6 Comparison to Synergy-OPT

5.7 Comparison to DRF and Tetris

Figure 13 result, workload split W2:

Baseline policy Avg JCT reduction with Synergy tuning
DRF 7.2×
Tetris 1.8×

6. Discussion and Future Work

Homogeneous clusters. The assumption is grounded in the observation that production clusters have thousands of accelerators per homogeneous cluster. Hardware heterogeneity exists across clusters, but users typically select one homogeneous cluster for a production job — a production cluster may have two homogeneous virtual clusters (VCs), each a specific GPU generation, each managed separately and assigned to training or inference for predictable performance. Recent work explores blurring these boundaries, but co-scheduling poses practical challenges: low-latency inference is business-critical, user-facing, and needs specific hardware and data isolation; other tasks have specific GPU memory requirements or need advanced features like NVLink. Users in the authors' production settings therefore specify an instance type per job. Synergy's ideas can extend to heterogeneous clusters by profiling CPU and memory along an additional dimension — GPU type — at extra profiling cost; the optimal algorithm then maximizes throughput over a 3-dimensional resource-sensitivity matrix W_j (formulation in the extended version).

Use of MinIO. Assumed because it is DNN-aware, outperforms OS page caching, allows performance predictability, provides resource isolation, and reduces storage fetch stalls. Without MinIO, the model would need profiling at discrete memory allocations, increasing profiling cost and potentially changing the trends in the profiling matrix.

Preprocessing overhead. Vision pre-processing includes random cropping and transformations in the critical path. Reusing the same transformed images across epochs hurts accuracy, while pre-processing offline is practically infeasible due to prohibitive storage cost (dataset size × epochs). CPU intensiveness could be altered by varying the number of augmentations, but the paper keeps the augmentations specified by the published models so as not to affect accuracy. Emerging schemes (RandAugment, AutoAugment) use more computationally-intensive augmentation with associated accuracy gains — this rising trend in extreme preprocessing "makes a strong case for a system like Synergy."

Sharing storage and network. The paper reallocates only CPU and memory across jobs resident on the same server (e.g., co-locating a CPU-intensive task with a non-CPU-intensive one), assuming the dataset is downloaded locally and loaded into server memory at job start, constrained by memory allocation limits. Prior work has co-located network-intensive with non-network-intensive jobs, but unlike Synergy those schedulers do not explicitly handle reallocation of shared network bandwidth. Extending Synergy to reason about per-job storage and network bandwidth demands is left to future work.

GPU elasticity and sharing. Some works transparently change GPU allocation during a job's life, but the impact of changing batch sizes and hyperparameters on training accuracy is unclear across tasks — so a constant per-job GPU demand is a practical assumption matching the authors' production clusters. Synergy improves throughput of jobs bottlenecked on data stalls; for such jobs GPU efficiency cannot be improved by multiplexing (spatial sharing) because they are waiting for input data. For the subset of jobs insensitive to auxiliary resource allocation, GPUs could be multiplexed; combining resource-sensitivity awareness with GPU spatial sharing is left to future work.

Trade-off between consolidation and allocation. When multi-GPU jobs are split across servers they may incur a network communication penalty; DNN jobs therefore prefer consolidation. Synergy assumes no more than a server's worth of CPU or memory can be allocated to a job whose GPU demand fits on one server. However, some jobs may benefit from giving up consolidation if the throughput gain from extra CPU/memory exceeds the splitting penalty. Exploring this trade-off, accounting for network overhead, is future work.

Leveraging model and pipeline parallelism. Evaluation assumes distributed data-parallel jobs. Model- and pipeline-parallel schemes also have an input stage that ingests and pre-processes data, but each pipeline stage may have a different CPU:GPU and memory:GPU requirement. Such jobs would have to be profiled per stage, but Synergy's contributions "directly carry forward to such settings."


DNN cluster schedulers. Recent schedulers each target one objective: cluster utilization (Gandiva), JCT (Tiresias), fairness (Themis, Gandiva-Fair); others exploit performance heterogeneity among accelerators. All assume GPU is the dominant resource — the user requests a fixed GPU count and the job runs when those GPUs are free. Building on GPU elasticity for a single job, AFS and Pollux use throughput metrics to provide GPU elasticity in multi-tenant clusters (also tuning batch size and learning rate). In all these cases CPU and memory are allocated proportional to GPUs; existing schedulers thus ignore resource sensitivity. Synergy shows that irrespective of the number of GPUs allocated, auxiliary resource-sensitive allocation is crucial for better cluster utilization.

Big-data schedulers. Synergy builds on insights from big-data scheduling literature. Tetris and DRF address multi-dimensional allocation for big-data jobs, proposing policies for a specific cluster objective where resource demands are known a priori. In contrast, for a DNN job the primary resource is the accelerator, whose requirement is job-specified; other resources are fungible. Synergy exploits this to perform disproportionate allocation by profiling sensitivity and then packing onto servers.

Data stalls. Recent deep characterization studies explored the impact of CPU and memory on individual DNN jobs. Unlike that prior work, Synergy focuses on "the tricks we can play when we schedule multiple jobs together in a cluster."

Disaggregated data prep. Orthogonal efforts reduce data-preprocessing cost and CPU load using disaggregated data prep, but one must pay the network cost of shuffling preprocessed tensors, which can quickly become the bottleneck, especially for vision models with rich datasets. Synergy instead assumes standard pre-processing pipelines at the training servers and reduces preprocessing cost through better resource allocation.


8. Conclusion


Cross-Cutting Summary of Headline Numbers

Claim Evidence
Average JCT improvement (simulated, single-GPU trace) up to 3.4×
Average JCT improvement (simulated, multi-GPU trace) up to 1.6×
Average JCT improvement (physical, 32 GPUs, SRTF) 1.5× (4.81 → 3.21 hrs)
Makespan improvement (physical, 32 GPUs, FIFO) 1.4× (16 → 11.6 hrs)
99th-percentile JCT improvement (physical, SRTF) (17.32 → 8.59 hrs)
Per-job speedup on Philly trace up to
Short-job tail (99p) improvement, SRTF, 512 GPUs 2.2× (9 → 4 hrs)
Avg JCT improvement for short and long jobs, SRTF, 512 GPUs 15%
FTF policy improvement (single / multi-GPU) 2.3× /
95th-percentile JCT of long jobs, LAS multi-GPU
Profiling-time reduction 10× on memory axis (240 → 24 min); up to 30× overall (to under 8 min)
Memory-model estimation error within 3% of empirical (8-GPU ResNet18)
Synergy-TUNE vs. Synergy-OPT (128 GPUs) within 10%, 200× faster
Synergy-TUNE vs. Synergy-OPT (physical cluster) within 4%
Simulator fidelity vs. physical cluster within 5%
CPU utilization at low load 60% (proportional) → 90% (Synergy-TUNE)
vs. DRF / Tetris on split (50,0,50) 7.2× / 1.8× avg JCT reduction
Sensitivity to CPU:GPU ratio (load 9 jobs/hr) 3.4× / 3× / 2.2× / 1.8× at ratios 3 / 4 / 5 / 6
AlexNet CPU:GPU 3 → 12 3.1× faster training
ResNet18 CPU:GPU 3 → 9 2.3× faster training
ResNet18 memory 62 GB → 500 GB almost faster training
Bound on fragmented jobs (second LP) at most 3s for s machines

Limitations


Open Problems Called Out by the Paper

  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 storage and network bandwidth demands per job, in addition to 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 pipeline stage has a distinct CPU:GPU and memory:GPU requirement.