Architecture & Measurement-Design Analysis

Optimus: An Efficient Dynamic Resource Scheduler for Deep Learning Clusters

Source: Peng, Y.; Bao, Y.; Chen, Y.; Wu, C.; Guo, C. EuroSys '18: Thirteenth EuroSys Conference 2018, April 23-26, 2018, Porto, Portugal. ACM, New York, NY, USA, 14 pages. DOI: https://doi.org/10.1145/3190508.3190517 ISBN: 978-1-4503-5584-1/18/04 Affiliations: The University of Hong Kong (Peng, Bao, Chen, Wu); Bytedance Inc. (Guo). Reader: gemini-reader delegated in parallel; pdftotext -layout extraction of the full 14-page proceedings PDF used as the authoritative source for exact table and figure values. Analyst: Vishwakarma Date: 2026-09-01


Table of Contents

  1. System Architecture (the model-driven scheduler stack)
  2. System-Under-Test Architecture (parameter server jobs, testbed, simulator)
  3. Design-Space Diagram (axes swept, axes held fixed)
  4. Algorithm & Control-Flow Diagrams (fitting, allocation, placement, PAA)
  5. Quantitative Results — Empirical Findings by Regime
  6. Configuration-Regime Trade-off Tables
  7. Bottlenecks & Insights Surfaced by the Measurements
  8. Limitations of the Methodology
  9. Note on NCCL Tuning
  10. Analogy

1. System Architecture (the model-driven scheduler stack)

Optimus is a cluster scheduler whose entire architecture is organized around one claim: a deep learning job's remaining completion time is predictable online, from the job itself, without any prior run and without any knowledge of the model internals or the hardware. Every other component exists to produce, feed, or consume that prediction. Two models are fitted per job while it runs — a convergence model that answers "how many more epochs?" and a resource-speed model that answers "how fast, at this resource configuration?" — and their quotient is the remaining-time estimate t_j that drives a greedy allocator.

This is the architectural inversion relative to Yarn/Mesos/Borg. Those schedulers accept a fixed resource request from the job owner at submission time and never revisit it. Optimus accepts only the per-task resource shape (how many cores and how much memory one worker or one parameter server needs) from the owner, and takes the counts — how many workers w_j, how many parameter servers p_j — as its own decision variable, re-decided every scheduling interval.

+---------------------------------------------------------------------+
|                     DL Cluster (7 CPU + 6 GPU servers)              |
|                                                                      |
|  +---------------------------------------------------------------+  |
|  | Kubernetes 1.7 master                                          |  |
|  |   - container orchestration, pod lifecycle, node inventory     |  |
|  |   - does NOT decide (p_j, w_j) for DL jobs                     |  |
|  +--------------------------+------------------------------------+  |
|         ^ create/delete pods |  poll: cluster info, job states       |
|         |                    v                                       |
|  +---------------------------------------------------------------+  |
|  | OPTIMUS SCHEDULER   (itself a normal Kubernetes pod)           |  |
|  |                                                                |  |
|  |  +------------------------+   +---------------------------+    |  |
|  |  | Progress Estimator     |   | Speed Estimator           |    |  |
|  |  |  (Sec 3.1)             |   |  (Sec 3.2)                |    |  |
|  |  |  online NNLS fit of    |   |  online NNLS fit of       |    |  |
|  |  |  l = 1/(b0*k+b1) + b2  |   |  f(p,w) from Eqn 3 / 4    |    |  |
|  |  |  -> Q_j = steps left   |   |  -> steps per second      |    |  |
|  |  +-----------+------------+   +-------------+-------------+    |  |
|  |              |                              |                  |  |
|  |              +--------------+---------------+                  |  |
|  |                             v                                  |  |
|  |                  t_j = Q_j / f(p_j, w_j)                       |  |
|  |                             |                                  |  |
|  |                             v                                  |  |
|  |  +---------------------------------------------------------+   |  |
|  |  | Resource Allocator  (Sec 4.1)                            |   |  |
|  |  |   minimize SUM_j t_j  s.t. cluster capacity              |   |  |
|  |  |   greedy: marginal gain per unit dominant resource       |   |  |
|  |  |   -> (p_j, w_j) for every active job j                   |   |  |
|  |  +----------------------------+----------------------------+   |  |
|  |                               v                                |  |
|  |  +---------------------------------------------------------+   |  |
|  |  | Task Placer  (Sec 4.2, Theorem 1)                        |   |  |
|  |  |   smallest server count; equal ps and equal workers      |   |  |
|  |  |   on each chosen server; smallest job placed first       |   |  |
|  |  +----------------------------+----------------------------+   |  |
|  |                               v                                |  |
|  |  +---------------------------------------------------------+   |  |
|  |  | Job Lifecycle Manager                                    |   |  |
|  |  |   checkpoint -> HDFS -> restart with new (p_j, w_j)      |   |  |
|  |  |   straggler detect + replace; data-chunk reassignment    |   |  |
|  |  +---------------------------------------------------------+   |  |
|  +---------------------------------------------------------------+  |
|         |  job state (fault-tolerant)      | training telemetry      |
|         v                                  ^                         |
|  +----------------+            +-----------+---------------------+  |
|  | etcd           |            | MXNet jobs (workers + ps pods)  |  |
|  | (K-V store of  |            |   emits (k, loss) per step and   |  |
|  |  job states)   |            |   (p, w, f(p,w)) samples;        |  |
|  +----------------+            |   PAA patch inside the MXNet ps  |  |
|                                +-----------------+----------------+  |
|                                                  v                   |
|                                +----------------------------------+  |
|                                | HDFS 2.8 (128 MB chunks, repl 2) |  |
|                                |   training data + checkpoints    |  |
|                                +----------------------------------+  |
+---------------------------------------------------------------------+
^ Fig 1: Optimus system architecture. Kubernetes retains orchestration;
  Optimus retains the resource-count decision. The two estimators are the
  only components that touch the running job's data stream, and everything
  downstream consumes a single scalar per job: t_j, the remaining time.

The control-plane placement of the two estimators is the load-bearing design choice. They sit inside the scheduler, not the framework, and consume only quantities the framework already emits — per-step training loss and observed steps-per-second. That is why the paper can claim the model "requires no knowledge about internals of the ML model and hardware configuration of the cluster," in explicit contrast to the per-operator modeling of Yan et al. [69]. The cost appears later: the loss-curve form is hard-coded to the O(1/k) shape of SGD, so any job whose curve differs (the paper names A3C, and any job with a step learning-rate schedule such as ResNet) falls outside the model.

A second structural point: Optimus never modifies the training semantics. The scheduler changes w_j, but for synchronous jobs it holds the global batch size M fixed and lets the per-worker mini-batch be m = M / w, so the model that comes out is the same model regardless of how many workers touched it. This is what makes elasticity safe, and it is also what creates the counter-intuitive result in Fig. 9(c) that adding workers to a synchronous job can slow it down.

  +--------------------------------------------------------------+
  |  What the job owner specifies   |  What Optimus decides       |
  |---------------------------------|-----------------------------|
  |  resource shape of one worker   |  number of workers   w_j    |
  |  resource shape of one ps       |  number of ps        p_j    |
  |  global batch size M            |  placement of both on nodes |
  |  convergence threshold  delta   |  when to rescale (10 min)   |
  |  sync or async training mode    |  which jobs get paused      |
  +--------------------------------------------------------------+
^ Fig 2: The interface split. The owner keeps everything that changes the
  learned model; Optimus takes everything that only changes how fast it is
  learned. The split is what allows re-allocation without owner consent.

2. System-Under-Test Architecture

2.1 The job model — parameter server, two synchronization modes

Every quantity in the resource-speed model is derived from the message pattern of the parameter server architecture, so the SUT must be described at that level.

                     +----------------------------------+
                     |  p PARAMETER SERVERS             |
                     |  model of size S split p ways    |
                     |  each holds S/p bytes            |
     +---------------+  bandwidth capacity B per ps     +--------------+
     |               |  update cost T_update for size S |              |
     |               +----+----------------+------------+              |
     |                    ^                |                           |
     |     push gradients |                | pull updated params       |
     |        (S/p bytes) |                | (S/p bytes)               |
     |                    |                v                           |
  +--+---------+   +------+-----+   +------+-----+          +---------+-+
  | worker 1   |   | worker 2   |   | worker 3   |  ...     | worker w  |
  | m*T_fwd    |   | m*T_fwd    |   | m*T_fwd    |          | m*T_fwd   |
  | + T_back   |   | + T_back   |   | + T_back   |          | + T_back  |
  +------------+   +------------+   +------------+          +-----------+
        |                |                |                       |
        +----------------+----------------+-----------------------+
                                  |
                     data partition from HDFS
                     (equal chunks, round robin)

  Per-step duration model (Eqn 2), taken over the slowest ps rho:

    T = max_rho [ m*T_forward + T_back
                  + 2 * (S/p) / (B / w'_rho)      <- push + pull, symmetric
                  + T_update * w'_rho / p          <- update at the ps
                  + delta*w + delta'*p ]           <- connection/control overhead

  where w'_rho = number of workers concurrently talking to ps rho.
^ Fig 3: The parameter server job as Optimus models it. The bandwidth
  bottleneck is asserted to be at the PARAMETER SERVER side, which is why
  the effective per-worker bandwidth is B/w'_rho and not B. Every term in
  Eqn 2 becomes one theta coefficient in Eqn 3 / Eqn 4.

Two modes are supported and modeled separately:

Mode Synchronization Speed function
Asynchronous ps updates on each arriving gradient; no barrier f(p,w) = w * (theta_0 + theta_1*(w/p) + theta_2*w + theta_3*p)^-1
Synchronous ps updates after all w gradients arrive; w'=w f(p,w) = (theta_0*(M/w) + theta_1 + theta_2*(w/p) + theta_3*w + theta_4*p)^-1

The theta_0*(M/w) term appearing only in the synchronous form is the entire explanation for the "more workers can be slower" phenomenon: with M held fixed, each additional worker shrinks m = M/w, and below some point the GPU is under-utilized on a mini-batch that small while theta_3*w (synchronization cost) keeps growing.

2.2 The physical testbed

+---------------------- Testbed: 13 servers total ---------------------+
|                                                                       |
|  7 x CPU SERVER                        6 x GPU SERVER                 |
|  +-------------------------+           +-------------------------+    |
|  | 2 x 8-core Intel E5-2650|           | 1 x 8-core Intel E5-1660|    |
|  | 80 GB memory            |           | 48 GB memory            |    |
|  | 2 x 300 GB HDD          |           | 2 x GeForce 1080Ti      |    |
|  |                         |           | 1 x 500 GB SSD          |    |
|  |                         |           | 1 x 4 TB HDD            |    |
|  +------------+------------+           +------------+------------+    |
|               |                                     |                 |
|               +======================+==============+                 |
|                                      |                                |
|                 +--------------------+--------------------+           |
|                 | 48-port Dell N1548  1 GbE switch        |           |
|                 +----------------------------------------+           |
|                                                                       |
|  Software:  Kubernetes 1.7  |  HDFS 2.8  |  MXNet  |  etcd            |
|  Workload:  9 DL jobs (Table 1), 5 CPU cores + 10 GB per container    |
+-----------------------------------------------------------------------+
^ Fig 4: The testbed. The interconnect is 1 GbE - not 10/25/100 GbE, not
  RDMA - and the GPUs are consumer 1080Ti. Communication is therefore the
  dominant cost in every job, which is precisely the regime in which the
  Eqn 2 communication terms (2*(S/p)/(B/w')) carry the most weight.

Three other machines produce the paper's model-fitting figures and must not be confused with the scheduling testbed: Fig. 2's per-model training times come from a single TITAN X Pascal; Fig. 5's nine loss curves from a server with one E5-1650 v4 CPU and two NVIDIA TITAN X GPUs running MXNet tutorial examples at a fixed learning rate; Fig. 12's scheduling times from one core of an Intel E5-1620 v4.

The nine workloads (Table 1 of the paper, reproduced exactly):

Model # params (M) Network Application domain Dataset Dataset size (# examples)
ResNext-110 1.7 CNN image classification CIFAR10 60,000
ResNet-50 25 CNN image classification ILSVRC2012-ImageNet 1,313,788
Inception-BN 11.3 CNN image classification Caltech 30,607
KAGGLE 1.4 CNN image classification Kaggle-NDSB1 37,920
CNN-rand 6 CNN sentence classification MR 10,662
DSSM 1.5 RNN word representation text8 214,288
RNN-LSTM-Dropout 4.7 RNN language modeling PTB 1,002,000
Sequence-to-Sequence 9.1 RNN machine translation WMT17 1,000,000
DeepSpeech2 38 RNN speech recognition LibriSpeech 45,000

Fig. 2 of the paper measures these nine on a single TITAN X Pascal and reports a training-time spread from minutes (CNN-rand) to weeks (ResNet-50) — a range of roughly four orders of magnitude on a log axis. That spread is the motivating fact for size-aware scheduling: FIFO and DRF are both blind to it.

2.3 The simulator

  +--------------------------------------------------------------+
  |  TESTBED (13 servers)          |  SIMULATOR (discrete-time)  |
  |--------------------------------|-----------------------------|
  |  emits traces:                 |  replays those traces:      |
  |    - loss curve per job kind   |    - up to 16,000 nodes     |
  |    - f(p,w) per configuration  |    - up to 8,000 jobs       |
  |    - per-server capacities     |    - 100 repeats per point  |
  |    - worker/ps resource shapes |      in the error sweeps    |
  |    - model parameter sizes     |                             |
  |  6 hours per run, 3 repeats    |                             |
  +--------------------------------------------------------------+
^ Fig 5: The two-tier evaluation instrument. Every simulator input is a
  measured testbed trace, so the simulator extrapolates SCALE but not
  PHYSICS - it cannot surface a bottleneck that did not appear on the
  13-server testbed.

3. Design-Space Diagram (axes swept, axes held fixed)

+---------------------------------------------------------------------+
|                        OPTIMUS DESIGN SPACE                          |
|                                                                      |
|  Axis 1: SCHEDULER  (3 levels)                                       |
|    [Optimus]  [DRF fairness (Yarn/Mesos/Hadoop)]  [Tetris]           |
|    - both baselines re-implemented on Kubernetes                     |
|    - both given Optimus's speed + convergence estimates              |
|    - both fixed at ps:worker = 1:1                                   |
|                                                                      |
|  Axis 2: TRAINING MODE  (3 levels)                                   |
|    [random mix per job]  [all async]  [all sync]                     |
|                                                                      |
|  Axis 3: JOB ARRIVAL PROCESS  (3 levels)                             |
|    [uniform random over 0..12,000 s]                                 |
|    [Poisson, 3 arrivals per scheduling interval]                     |
|    [Google cluster trace, 7-hour window]                             |
|                                                                      |
|  Axis 4: PREDICTION ERROR INJECTED  (4 levels x 2 kinds)             |
|    error e in {0%, 15%, 30%, 45%}                                    |
|    injected into: [convergence epochs]  and  [training speed]        |
|    input becomes v*(1+e) or v*(1-e), decaying with job progress      |
|                                                                      |
|  Axis 5: SCALE (simulator only)                                      |
|    nodes:  10^3 .. 1.6x10^4      jobs: 1000, 2000, 4000, 8000        |
|                                                                      |
|  Axis 6: ABLATION TARGET  (4 levels)                                 |
|    [full Optimus]                                                    |
|    [Optimus placement + DRF/Tetris allocation]                       |
|    [Optimus allocation + DRF/Tetris placement]                       |
|    [PAA vs MXNet default parameter distribution]                     |
|                                                                      |
|  HELD FIXED (never swept):                                           |
|    scheduling interval 10 min | probe budget 5 (p,w) pairs           |
|    container 5 cores + 10 GB  | priority factor 1 (0.95 tested once) |
|    small-block cutoff 1% avg  | convergence threshold 1%-5%, unswept |
|    framework MXNet only       | interconnect 1 GbE only              |
|    elasticity = checkpoint    | loss form 1/(b0*k+b1)+b2 only        |
+---------------------------------------------------------------------+
^ Fig 6: The six swept axes and the ten held-fixed knobs. Note that the
  two knobs with the largest apparent leverage - the scheduling interval
  and the number of initial probe runs - are both FIXED, so the paper
  never reports the cost/benefit curve of its own sampling budget beyond
  the 8/16/24-sample accuracy sweep of Fig. 8.

The baselines are constructed with unusual generosity, and this matters when reading the headline numbers. Tetris has no native way to estimate a DL job's remaining time, so the authors give Tetris Optimus's own speed function and convergence estimator; DRF runs on Kubernetes' default load-balancing placement. The comparison is therefore not "model-driven vs model-free" but "model-driven allocation policy vs fairness/packing allocation policy, both fed the same model" — which makes the 62% allocation-ablation number (Sec. 5.5) the honest measure of the policy itself.


4. Algorithm & Control-Flow Diagrams

4.1 Notation

Symbol Meaning
k training step index
l training loss (normalized by max loss seen so far)
b0, b1, b2 nonnegative coefficients of the convergence curve (Eqn 1)
delta (Sec 3.1) owner-specified convergence threshold on loss decrease
Q_j remaining steps/epochs for job j to converge
p_j, w_j number of parameter servers / workers allocated to job j
f(p,w) training speed, steps per second
t_j Q_j / f(p_j, w_j), remaining running time
S model size in bytes
B bandwidth capacity of one parameter server
M global batch size (fixed for synchronous jobs)
m per-worker mini-batch size, = M/w for synchronous jobs
O_j^r type-r resource consumed by one worker of job j
N_j^r type-r resource consumed by one parameter server of job j
C^r cluster-wide capacity of resource type r
D, D' dominant resource types used for normalizing marginal gain

4.2 Online convergence fitting (Sec. 3.1)

  every training step k
        |
        v
  (1) COLLECT loss point (k, l)
        |
        v
  (2) OUTLIER REMOVAL
      is l within [min loss in next 5 epochs, max loss in prev 5 epochs]?
        no  --> replace l with the average of its neighbours
        yes --> keep
        |
        v
  (3) NORMALIZE: l <- l / (max raw loss seen so far)
                 so every job's curve lives in [0, 1]
        |
        v
  (4) OPTIONAL DECIMATION (when convergence needs 10^5+ steps)
      sample every few steps, or average all losses within one epoch
        |
        v
  (5) NNLS FIT (scipy nnls) of      l = 1/(b0*k + b1) + b2
      over ALL points collected so far
        |
        v
  (6) SOLVE for total steps to reach the owner's threshold delta
      -> total epochs, and Q_j = total - completed
        |
        v
  RE-FIT NEXT STEP (the fit strictly improves as data accumulates)
^ Fig 7: The convergence estimator. The 1/(b0*k+b1) form is chosen because
  SGD converges at rate O(1/k) in the number of steps - the functional form
  is a THEORETICAL prior, not a curve-family search. Nonnegativity of the
  coefficients is enforced by the solver, which is what keeps the fitted
  curve monotone and physically meaningful on extrapolation.

Fitted example from Fig. 7 of the paper (Seq2Seq): b0 = 0.21, b1 = 1.07, b2 = 0.07. Fig. 6 reports the prediction error envelope across all nine jobs as roughly -15% to +15%, tightening monotonically as training progresses.

4.3 Online speed fitting (Sec. 3.2)

  BEFORE the job runs:
  +-----------------------------------------------------------+
  | PROBE PHASE                                               |
  |   run the model on a SMALL SAMPLE of training data        |
  |   for a few steps, under several (p, w) combinations      |
  |   each probe run: tens of seconds                         |
  |   testbed default: 5 combinations                         |
  |   -> data points (p, w, f(p,w))                           |
  +---------------------------+-------------------------------+
                              v
  +-----------------------------------------------------------+
  | NNLS FIT of Eqn 3 (async) or Eqn 4 (sync) for theta's     |
  +---------------------------+-------------------------------+
                              v
  DURING the job:
  +-----------------------------------------------------------+
  | keep collecting (p, w, f(p,w)) at every realized config   |
  | re-fit -> calibrated theta's                              |
  +-----------------------------------------------------------+
^ Fig 8: Why the probe phase exists. The (p,w) pairs actually visited
  during a real run are few and correlated; a model fitted only on them
  is biased, and the bias steers allocation away from the optimum. The
  probe phase is a deliberate, bounded exploration budget spent BEFORE
  the policy starts exploiting.

Fitted coefficients (Table 2 of the paper, reproduced exactly as printed; the column labels theta_1..theta_5 correspond to the coefficients of Eqn 3 / Eqn 4 in order):

Mode theta_1 theta_2 theta_3 theta_4 theta_5 Residual sum of squares
Async 2.83 3.92 0.00 0.11 0.10
Sync 1.02 2.78 4.92 0.00 0.02 0.00

The authors read these coefficients directly as an attribution: "forward propagation, backward propagation and data transfer make up most of the training time in one step, since coefficients of these quantities are relatively large." The near-zero coefficients on the p term in both modes say that, in this testbed's regime, adding parameter servers costs almost nothing in per-step overhead — the constraint that binds is the worker side.

4.4 Resource allocation (Sec. 4.1)

The optimization problem, exactly as posed:

    minimize    SUM_{j in J}  t_j                                   (5)
    subject to  t_j = Q_j / f(p_j, w_j)              for all j      (6)
                SUM_{j in J} ( w_j*O_j^r + p_j*N_j^r ) <= C^r
                                                     for all r      (7)
                p_j in Z+,  w_j in Z+                for all j      (8)

Constraint (6) is neither linear nor convex, so (5)-(8) is a non-linear, non-convex integer program — NP-hard in general, and unsolvable by LP or convex solvers. The paper does not attempt an approximation guarantee; it substitutes a greedy heuristic driven by a marginal-gain ratio:

   gain_j = max {   ( Q_j/f(p_j,w_j)  -  Q_j/f(p_j+1, w_j) ) / N_j^D ,
                    ( Q_j/f(p_j,w_j)  -  Q_j/f(p_j, w_j+1) ) / O_j^D'  }   (9)

   term 1 = completion-time reduction from ONE MORE PARAMETER SERVER,
            per unit of its dominant resource
   term 2 = completion-time reduction from ONE MORE WORKER,
            per unit of its dominant resource
   dominant resource = the type with maximal share of cluster capacity
                       among the resources that task consumes  [DRF, ref 34]

The paper's own labelling of D and D' is internally inconsistent: the prose reads "D (D') is the dominant resource of workers (parameter servers)," but Eqn 9 pairs N_j^D (a parameter-server quantity) with the parameter-server increment and O_j^{D'} (a worker quantity) with the worker increment. Read by term semantics, D indexes the parameter-server dominant resource and D' the worker's. Nothing downstream depends on which convention is intended — both terms are gains per unit of the added task's own dominant resource.

  START of scheduling interval (every 10 minutes)
        |
        v
  (1) SEED: give EVERY active job 1 worker + 1 parameter server
      (starvation floor - no job can be allocated zero)
        |
        v
  (2) COMPUTE gain_j from Eqn 9 for every job
        |
        v
  (3) OPTIONAL DISCOUNT: if job j is at the beginning of training
      (large prediction error), multiply gain_j by a priority
      factor (e.g. 0.95) -> less resource to poorly-estimated jobs
        |
        v
  (4) SORT jobs by gain_j, descending
        |
        v
  (5) POP the job with the largest gain_j
      add ONE unit - a worker if term 2 was larger,
                     a parameter server if term 1 was larger
        |
        v
  (6) RE-COMPUTE gain_j for that job only; re-insert into the order
        |
        +---> loop back to (5)
        |
        v  exit when EITHER
  (7) some cluster resource type is exhausted
      OR all gain_j are non-positive
        |
        v
  EMIT allocation vector { (p_j, w_j) : j in J }
^ Fig 9: Marginal-gain allocation. Two properties matter. First, the exit
  on non-positive marginal gain means Optimus is deliberately NOT
  work-conserving: it will leave a machine idle rather than hand a job a
  worker that slows it down. Second, the 0.95 discount is an explicit
  uncertainty penalty - the policy trusts its model less early in a job
  and allocates accordingly.

The non-work-conserving property is the single most important behavioural difference from DRF, and Fig. 14(a) of the paper makes it visible: Optimus runs fewer concurrent tasks than DRF for most of the trace while finishing sooner.

4.5 Task placement (Sec. 4.2 and Theorem 1)

The motivating example: 3 servers, one synchronous job with 2 parameter servers and 4 workers, each server hosting at most 3 tasks, unit bandwidth at every task, unit data transferred per ps-worker pair per step.

  Placement (a)                 Placement (b)              Placement (c)  BEST
  +-------+-------+-------+     +-------+-------+---+      +---------+---------+
  |ps1 ps2| w2 w3 | w4 ...|     | ...   | ...   |...|      | ps1 w1  | ps2 w3  |
  | w1    |       |       |     |       |       |   |      | w2      | w4      |
  +-------+-------+-------+     +-------+-------+---+      +---------+---------+
   cross-server units per task:
     ps1:3  ps2:3  w1:1  w2:1  w3:2  w4:2
   step transfer time = max = 3    time = 3                 time = 2
^ Fig 10: The placement example of Fig. 10 in the paper. Transfer time is
  set by the SLOWEST task, so the objective is a min-max, and colocating a
  parameter server with workers is what shrinks the max.

Theorem 1. Given the numbers of workers and parameter servers in a synchronous training job, the optimal worker/parameter server placement principle to achieve the maximal training speed for the job, in a cluster of homogeneous servers, is to use the smallest number of servers to host the job, such that the same number of parameter servers and the same number of workers are deployed on each of these servers.

The Appendix proof decomposes the min-max objective

   max_k {  (S_j/p_j)*(w_j - w_jk) / B_j ,  (S_j/p_j)*(p_j - p_jk) / b_j  }

into two independent lexicographical min-max subproblems — one over w_jk, one over p_jk — each of whose optima is an even spread; the combination is then an optimum of the original. A separate induction argument shows a smaller number of hosting servers K yields smaller transfer time, because more tasks per node means less data crosses the inter-server network.

  PLACEMENT PROCEDURE
        |
        v
  (1) SORT servers DESCENDING by current resource availability
      (available CPU capacity, in the experiments)
        |
        v
  (2) SORT jobs ASCENDING by resource demand (smallest job first,
      to avoid starving small jobs)
        |
        v
  (3) for each job, k <- 1
        |
        v
  (4) do the first k servers have enough capacity for the whole job?
        no  --> k <- k+1, retry (k+1, k+2, ... servers)
        yes --> PLACE ps and workers EVENLY across those k servers
        |
        v
  (5) UPDATE availability on those k servers; RE-SORT the server list
        |
        +---> next job
        |
        v
  (6) jobs that cannot be placed are PAUSED and retried next interval
      (the allocator reasons over cluster-wide totals; the placer
       reasons over per-server fits, so the two can disagree)
^ Fig 11: Placement as a first-fit over a re-sorted server list. Step (6)
  is the honest admission that allocation and placement are solved
  separately: a feasible allocation is not necessarily a placeable one.

4.6 Parameter assignment algorithm — PAA (Sec. 5.3)

MXNet's default rule assigns a parameter block to one random parameter server if the block has fewer than 10^6 parameters, and slices it evenly across all parameter servers otherwise. A single global threshold cannot suit models with different layer-size distributions, and the paper identifies the resulting load imbalance as common to TensorFlow as well.

PAA minimizes three quantities simultaneously: (a) the maximal difference in parameter bytes between two parameter servers, (b) the total number of parameter update requests per step, and (c) the maximal difference in request count between two parameter servers.

  avg_size <- (total parameter size) / (number of parameter servers)
  sort parameter blocks DESCENDING by size
        |
        v
  for each block:
        |
        +-- size < 1% of avg_size ------------> assign to the ps with the
        |                                       FEWEST update requests
        |
        +-- 1% of avg_size <= size <= avg_size -> BEST FIT: assign to the ps
        |                                       with the SMALLEST remaining
        |                                       capacity that still fits
        |
        +-- size > avg_size --------------------> SLICE into partitions of
                                                 avg_size (last may be
                                                 smaller); assign each to
                                                 the ps holding the least
                                                 total parameter size
        |
        v
  on every assignment: increment that ps's request counter by 1
^ Fig 12: PAA. Three size classes, three different objectives - request
  balance for tiny blocks, byte balance for medium blocks, byte balance
  after slicing for large blocks. The design recognizes that a tiny block
  costs a REQUEST but almost no BYTES, so the two costs must be balanced
  by different rules.

4.7 Elasticity, stragglers, and data serving

  Optimus scheduler        MXNet job            HDFS
  --------------------|--------------------|-----------------
  (1) new (p_j, w_j)  |                    |
      decided --------+-> (2) CHECKPOINT   |
                      |     parameters  ---+--> saved
          <-- ack ----+                    |
  (3) tear down pods, |                    |
      create new pods +-> (4) RESTART   <--+--- loaded
                      |     from ckpt      |
  (5) REASSIGN data chunks round-robin so every worker keeps a
      similar workload after the worker count changed
  (6) STRAGGLER WATCH
      async: worker speed < 1/2 of median -> straggler
      sync : per-worker speed inferred from the ARRIVAL TIME of
             its gradients at the parameter servers, step to step
          -> replace the straggler by launching a new worker
^ Fig 13: Elastic rescaling by checkpoint-restart, plus straggler
  detection. For synchronous jobs all worker speeds are equal by
  construction, so the only observable that can expose a straggler is the
  gradient ARRIVAL TIME at the parameter server - a server-side, not
  worker-side, measurement.

The checkpoint-restart mechanism is chosen "due to its simplicity and general implementability" — it needs almost no framework modification and ports to other frameworks. Its measured price is 2.54% of makespan (Sec. 5.2 below), and the paper concedes it would be "quite large" for jobs with hundreds of tasks.


5. Quantitative Results — Empirical Findings by Regime

5.1 Headline comparison (testbed, 13 servers, mixed sync/async)

Normalized to Optimus = 1.00 (Fig. 11), with absolute values from Fig. 13:

Scheduler Avg JCT (norm.) Avg JCT (s) Makespan (norm.) Makespan (s) Makespan (h)
Optimus 1.00 1,161 1.00 14,835 4.1
Tetris 1.74 2,016 1.22 18,127 5.0
DRF 2.39 2,780 1.63 24,255 6.7

The abstract's "139% and 63%" are these same numbers expressed as percentage improvements over DRF (2.39x -> 139% more time for DRF; 1.63x -> 63% longer makespan).

5.2 Resource-efficiency mechanism (Fig. 14)

Observation Optimus vs baselines
Number of running tasks over the trace Lower than DRF
Normalized CPU utilization on parameter servers Higher than both DRF and Tetris
Normalized CPU utilization on workers Higher than both DRF and Tetris
Resource-adjustment (checkpoint-restart) overhead 2.54% of makespan

The mechanism is stated plainly: "DRF is work-conserving and allocates as many resources to a job as possible, but more resources do not mean higher training speed." Optimus wins by allocating less and utilizing what it allocates.

5.3 Scalability (simulator)

Quantity Value
Scheduling hardware one core of an Intel E5-1620 v4 CPU
Jobs scheduled within 5 s 4,000 (about 100,000 tasks)
Cluster size for that result 16,000 nodes
Reference point (Kubernetes default scheduler) 150,000 tasks on 5,000 nodes within 5 s
Scheduling interval (amortizing this cost) 10 minutes
Sweep range in Fig. 12 1,000 / 2,000 / 4,000 / 8,000 jobs

5.4 Sensitivity to prediction error (simulator, 100 repeats per point)

Errors injected as v*(1+e) or v*(1-e) at job start, decaying with progress; e swept over 0, 15, 30, 45%.

Injected error source Norm. avg JCT at max error Norm. makespan at max error
Convergence-epoch estimate up to 1.35 up to 1.16
Training-speed estimate lower impact than above lower impact than above

Additional exact findings:

Speed-model sample efficiency (Fig. 8), for a ResNet-50 job in a 40-container cluster where 780 distinct (p,w) pairs exist:

Number of (p,w) samples Speed-estimation error
10 < 10%
8 -> 16 -> 24 monotonically decreasing, diminishing return
async vs sync async error is higher (≈7% to ≈4% over the sweep); sync lower

5.5 Ablations — where the gain actually comes from

Resource allocation (Fig. 18: Optimus placement held constant, allocation policy swapped):

Allocation policy Norm. avg JCT Norm. makespan
Optimus 1.00 1.00
Tetris 1.33 1.14
DRF 1.62 1.31

"the average completion time and makespan are reduced by 62% and 31% respectively when using Optimus, as compared to the fairness scheduler."

Task placement (Fig. 19: Optimus allocation held constant, placement policy swapped):

Placement policy Norm. avg JCT Norm. makespan
Optimus (Theorem-1 packing) 1.00 1.00
Tetris (min fragmentation) 1.12 1.09
DRF (Kubernetes load balancing) 1.17 1.13

"our algorithm reduces average completion time and makespan by about 10% compared to Tetris and 15% compared to DRF."

The paper's own summary attributes the three mechanisms as 62% (allocation) / 17% (placement) / 20% (PS load balancing).

5.6 Parameter-server load balancing (PAA)

ResNet-50, 25 million parameters organized into 157 parameter blocks:

Algorithm Difference of parameter sizes Difference of # of requests Total # of requests
MXNet default 3.6 M 43 247
PAA 0.1 M 1 157

PAA reaches the theoretical minimum on request count — 157 requests for 157 blocks means no block is ever split, so no extra request is manufactured — while simultaneously driving the byte imbalance from 3.6 M down to 0.1 M and the request imbalance from 43 down to 1.

Training-speed effect (ResNet-50 on ILSVRC2012-ImageNet, synchronous, 10 workers fixed, p varied 4 to 20, Fig. 20; and 10 workers with 10 parameter servers across four models, Fig. 21):

Finding Value
PAA speed advantage grows with the number of parameter servers qualitative (Fig. 20)
Peak speedup over MXNet's default distribution up to 29%
Models tested in Fig. 21 ResNet-50, ResNext-101, Inception-BN, VGG
Same pattern under asynchronous training confirmed

5.7 Workload sensitivity

Training mode (Fig. 16), normalized to Optimus:

Mode DRF JCT Tetris JCT DRF makespan Tetris makespan
Async 1.97 1.64 1.36 1.11
Sync 2.29 1.91 1.45 1.21

Optimus's advantage is larger under synchronous training, and the paper gives the mechanism: synchronous workers all hold the most recent parameters, so convergence is more stable and convergence-estimation error is smaller; and all worker speeds are identical, so speed-estimation error is smaller too. Optimus's gain is a direct function of how predictable the job is.

Arrival process (Fig. 17), normalized to Optimus:

Arrival process DRF JCT Tetris JCT DRF makespan Tetris makespan
Poisson (3 arrivals per interval) 2.15 1.82 1.40 1.15
Google cluster trace (7-hour) 2.21 1.78 1.46 1.24

The Google trace produces the larger gain, attributed to arrival spikes: Optimus absorbs bursts by shrinking the allocations of already-running jobs, whereas a static-allocation scheduler can only queue.


6. Configuration-Regime Trade-off Tables

6.1 Allocation policy

Dimension DRF (fairness) Tetris (packing) Optimus (marginal gain)
Objective dominant-resource fairness duration + fragmentation minimize SUM of remaining times
Needs a performance model no no (given one here) yes, two of them
Work-conserving yes yes no (stops at zero gain)
Behaviour when more resources hurt still allocates still allocates withholds
Starvation protection fairness by construction short-job preference 1 worker + 1 ps floor
Handles arrival spikes queue queue + pack shrink running jobs
Measured avg JCT (ablation, norm.) 1.62 1.33 1.00
Measured makespan (ablation, norm.) 1.31 1.14 1.00
Failure mode wastes resources on mis-ranks DL jobs without degrades with model error
jobs that cannot use them a convergence model (15% at 20%/10% error)

6.2 Placement policy

Dimension Kubernetes load balancing Tetris min-fragmentation Optimus Theorem-1 packing
Spreads a job across servers maximally opportunistically minimally
Colocates ps with workers incidental incidental by construction
Balances ps/worker counts per server no no yes (even split)
Optimality claim none none proved for sync jobs on homogeneous servers
Norm. avg JCT (ablation) 1.17 1.12 1.00
Norm. makespan (ablation) 1.13 1.09 1.00
Assumption that can break it homogeneous servers

6.3 Synchronous vs asynchronous, as seen by the scheduler

Dimension Asynchronous Synchronous
Speed function Eqn 3, 4 coefficients Eqn 4, 5 coefficients
Extra term theta_0 * (M/w) — shrinking mini-batch
More workers always faster? roughly yes (diminishing) no — can be slower
Straggler observable worker speed vs median gradient arrival time at the ps
Straggler consequence parameter staleness, extra steps whole step blocked
Convergence-estimation error higher lower (stable, up-to-date params)
Speed-estimation error (Fig. 8) higher (≈7% -> ≈4%) lower
Optimus advantage over DRF (JCT) 1.97x 2.29x
Batch-size invariant preserved not applicable M fixed, m = M/w

6.4 Parameter distribution policy

Dimension MXNet default (10^6 threshold) PAA (three size classes)
Blocks below threshold assigned to a random ps assigned to least-loaded ps
Blocks above threshold sliced across all ps sliced only if > avg_size
Tunable that must be guessed one global size threshold none (uses avg_size and 1%)
Byte imbalance (ResNet-50) 3.6 M 0.1 M
Request imbalance 43 1
Total requests (157 blocks) 247 157 (minimum)
Speedup baseline up to 29%
Generality MXNet-specific bug, also in TF implemented in MXNet only

6.5 Estimation budget vs estimation accuracy

Dimension Value in Optimus
Cost of one probe run tens of seconds
Probe budget on the testbed 5 (p,w) combinations
Search space (ResNet-50, 40 ctr) 780 possible (p,w) pairs
Error at 10 samples < 10%, with diminishing return past that
Alternative rejected Bayesian optimization (FABOLAS, BOAT, CherryPick)

The Bayesian-optimization rejection is worth stating precisely because it is a design decision, not an oversight: BO (FABOLAS, BOAT, CherryPick) finds a good configuration for one job, but Optimus needs a closed-form f(p,w) it can differentiate-by-increment across all concurrent jobs simultaneously to compute Eqn 9. A black-box optimizer gives you an argmax; a parametric model gives you a gradient you can compare between jobs.


7. Bottlenecks & Insights Surfaced by the Measurements

7.1 More resources can make a job slower — and no fair scheduler knows it

Fig. 4 of the paper is the motivating measurement: ResNet-50 on ImageNet, synchronous, containers of 5 CPU cores + 10 GB.

Both baselines are pinned at ps:worker = 1:1, the common practice Optimus argues against. The 8:12 optimum is not a small perturbation of 1:1 — it is a 50% surplus of parameter servers over workers, following directly from Eqn 2: the bottleneck sits at the parameter server side, so relieving it buys more than adding compute.

7.2 Work-conservation is an anti-pattern for DL clusters

DRF runs more tasks and finishes later. Fig. 14 separates the two things that "utilization" usually conflates: allocated capacity and used capacity. DRF wins on the first and loses on the second, because Optimus refuses any allocation whose marginal gain is non-positive. The generalizable insight: in any system where a task's performance curve is non-monotone in resources, greedily filling the cluster is a pessimization, and the only defence is knowing the curve.

7.3 The estimator's accuracy is worth far less than one would expect

The sensitivity sweep is the paper's most useful negative result. At 20% convergence error and 10% speed error — roughly the accuracy Optimus actually achieves — the gap to a perfect oracle is only about 15%, and the curves flatten as error grows. The paper says so outright: "Further improvement of estimation accuracy will not increase Optimus's performance much (15%)." The reason is that the ranking the estimator induces matters more than its absolute values — the greedy allocator only ever compares gain_j across jobs, and a uniformly biased estimator produces the same ranking as an unbiased one.

7.4 Speed is predictable; convergence is not

f(p,w) reaches ≈10% error from ~10 probe samples; convergence-epoch prediction sits at ≈20% with a ±15% envelope across the job's lifetime (Fig. 6). The asymmetry is structural: speed is a property of the system, a smooth function of counts with a physically-derived form and cheap i.i.d. samples, while convergence is a property of the optimization problem, extrapolated from a one-sided non-stationary curve with no repeatable sampling. Hence the design leans on the quantity it can measure and hedges the one it cannot, via the 0.95 priority discount for early-stage jobs.

7.5 An imbalance bug in the framework was worth 20% of the total gain

PAA fixes MXNet's parameter-distribution heuristic and accounts for about 20% of Optimus's improvement — a third as much as the entire allocation algorithm. The root cause is a single hard-coded global threshold (10^6 parameters) applied across models whose layer-size distributions differ by orders of magnitude; the paper notes the same class of problem in TensorFlow. The architectural lesson is that a global constant chosen for a "typical" workload becomes a load-imbalance generator the moment the workload distribution widens, and that a scheduler's own optimality is capped by the imbalance of the layer below it.

7.6 Predictability, not just performance, is a scheduling resource

Optimus beats DRF by 2.29x under all-synchronous training and 1.97x under all-async (1.91x vs 1.64x against Tetris), and the delta is entirely explained by estimation error being smaller in synchronous mode. A model-driven scheduler's advantage is proportional to how legible the workload is — which means the workloads most in need of good scheduling (irregular, straggler-prone, async) are the ones where the approach helps least.

7.7 Allocation and placement are solved separately, and can disagree

The allocator reasons over cluster-wide capacity totals (constraint 7); the placer reasons over per-server fits. The paper concedes that "the number of jobs the servers can accommodate might be smaller than the number of jobs we allocate resource to," and pauses the leftovers until the next interval. This is a classic relaxation-vs-realization gap absorbed by a delay: at 10-minute intervals the delay is cheap; at second-scale intervals it would not be.


8. Limitations of the Methodology

Limitation Consequence
Loss curve hard-coded to 1/(b0*k+b1)+b2 Fails for step learning-rate schedules (ResNet) and for A3C-like curves; authors' fallback is "let the job owner supply the function"
Convergence detected via training loss only Validation loss / accuracy unused; assumes production models do not overfit, and explicitly excludes experimental / hyperparameter-search jobs
Parameter server architecture assumed throughout Eqn 2 has no allreduce term; ring/tree collectives are outside the model
MXNet only PAA is implemented in one framework; portability asserted, not shown
Testbed is 13 servers over 1 GbE Communication-dominated regime; results may not transfer to RDMA/NVLink clusters
Only 12 GPUs total (6 servers x 2 GeForce 1080Ti) Most containers are CPU-only (5 cores + 10 GB); GPU contention barely exercised
Datasets downscaled for large models ResNet-50 and DeepSpeech2 run on reduced data so a run fits in ~6 h
3 repeats per testbed experiment; scale is simulated Standard deviations (Fig. 13) come from 3 samples; the simulator extrapolates scale, not physics
Baselines pinned at ps:worker = 1:1 A generous-to-Optimus choice, given Fig. 4 shows 8:12 is optimal
Baselines are given Optimus's own estimators Isolates the policy, but means "vs Tetris" is not "vs published Tetris"
Elasticity via checkpoint-restart only Authors concede overhead would be "quite large" with hundreds of tasks; no live migration
Scaling overhead measured only in aggregate (2.54%) No per-rescale latency distribution, no tail
Scheduling interval fixed at 10 min; probe budget at 5 The two knobs with the most leverage are never swept; the 10-sample <10% error figure comes from one model
Homogeneous-server assumption in Theorem 1 The testbed is explicitly heterogeneous (CPU servers vs GPU servers)
Theorem 1 proved for synchronous jobs Extension to asynchronous is asserted by analogy, not proved
No fairness, priority, or SLO story Pure efficiency objective; multi-tenancy left to "plug in multiple schedulers"
No fault-tolerance evaluation etcd + Kubernetes restart is described but never tested under failure
Straggler mechanism has no dedicated experiment Detection rule (half of median) and replacement policy are unmeasured
PAA evaluated on 4 models ResNet-50, ResNext-101, Inception-BN, VGG — all CNNs, no RNN
Model-fitting figures use 3 other machines Figs. 2 / 5 / 12 run on a TITAN X Pascal, an E5-1650 v4 + 2 TITAN X, and an E5-1620 v4 core — none of them the scheduling testbed
No lines-of-code count, language, or code release Implementation effort and reproducibility cannot be assessed

The most consequential limitation is the coupling of the whole design to the parameter server architecture. Eqn 2 — the source of every theta — is a literal transcription of the PS message pattern: push S/p bytes, update at the server, pull S/p bytes back, bottleneck asserted at the server side. A job using allreduce has no p at all, so the action space (p, w) collapses to (w), Theorem 1's ps/worker-balance clause becomes vacuous, and PAA has nothing to balance. Optimus is a scheduler for the specific architecture that dominated 2018 and that allreduce frameworks displaced shortly afterwards. The second is the 1 GbE testbed: communication is expensive enough there that adding parameter servers is nearly always profitable (Table 2's near-zero p coefficients), which is exactly the regime in which the (p, w) decision has the most leverage. On a fabric where communication is cheap, the speed surface flattens, gain_j differences shrink, and the marginal-gain ranking has less to rank.


9. Note on NCCL Tuning

The transferable mechanism here is the probe-then-fit-then-rank structure, not the scheduler. Optimus does not search its configuration space — 780 valid (p, w) pairs exist for one ResNet-50 job — it instead assumes a parametric form derived from the communication pattern, spends a bounded budget of about ten short probe runs to fit the coefficients by non-negative least squares, and then uses closed-form finite differences of that fitted surface to rank candidate moves. Its measured payoff curve is the useful part: under 10% speed-prediction error from roughly ten samples, with clearly diminishing returns past that, and an end-to-end penalty of only ~15% even when the estimates are off by 10-20%. That combination argues that for choosing among discrete communication configurations, a small physically-motivated cost model fitted from a handful of timed runs may capture most of the available gain, and that the ranking it induces matters more than its absolute accuracy — a much cheaper posture than exhaustive sweeps, and one the paper explicitly prefers over black-box Bayesian optimization because a parametric surface can be compared across simultaneous decisions while an argmax cannot.


10. Analogy

Optimus is a hospital operating-theatre manager who reads the patient charts.

The conventional manager — DRF, Yarn, Borg — works from the booking sheet alone. A surgeon requests two theatres and four nurses at admission, and gets exactly that for the entire stay, whether the operation takes twenty minutes or two weeks. When a theatre frees up at 3 a.m. nobody is moved into it, because the bookings were fixed at admission. And when the manager does allocate, it allocates everything it has, on the reasonable-sounding theory that an idle theatre is a wasted theatre.

Optimus reads the charts. From the patient's vital-sign trend it fits a recovery curve — the 1/(b0*k+b1) shape — and answers "how many more days?" From ten short trial runs before the operation starts, it fits a staffing curve and answers "how much faster does this operation go with one more nurse?" The quotient of those two is the only number it needs: time remaining. It then walks the ward handing out one nurse at a time to whichever patient's remaining time drops the most per unit of staff, re-checking after every single assignment.

Three consequences follow, and each is a measured result. First, the manager sometimes leaves a theatre empty. A recovery that gains nothing from a fifth nurse does not get a fifth nurse, because the fifth nurse in a crowded room slows everyone down — this is theta_0 * (M/w), the shrinking mini-batch, and it is why Optimus runs fewer tasks than DRF while finishing 2.39x sooner. Second, the manager keeps each operation in as few rooms as possible, with equal staff in each room, because every instrument passed between rooms crosses a corridor and the operation moves at the speed of the slowest corridor — that is Theorem 1, worth about 17% of the total gain. Third, the manager discovered that the hospital's own supply desk had been handing out instrument trays by a fixed size rule, leaving one nurse with 3.6 million instruments and another with almost none; rebalancing the trays alone was worth 20%.

The analogy also marks the boundary. This manager only understands operations performed in the specific way the hospital ran them in 2018: a central instrument desk that every surgeon pushes to and pulls from. An operation where the surgeons pass instruments directly around the table in a ring has no instrument desk to staff, so the manager's central decision — how many desk clerks versus how many surgeons — has nothing to decide. And the manager's whole advantage rests on the charts being legible: it is 2.29x better than the booking sheet for the predictable, synchronized operations, and only 1.97x better for the ragged asynchronous ones. It helps most exactly where it is needed least.