Applications of ORGitHub
Lecture 13 · Computing & AI Systems

Serving AI Models

Placing models on GPUs: Mixture-of-Experts placement as load shifts over time, and block placement and request routing across servers spread over the Internet.

Large AI models are expensive to run, and they are run a lot. Once a model has been trained, every user request has to be served on a fleet of GPUs that is costly to buy, scarce, and shared by many requests at once. How many GPUs to provision, which requests to batch together, and where to place the pieces of a model across the hardware are all resource-allocation decisions under uncertainty — exactly the kind of problem operations research was built for.

This lecture surveys the decisions involved and then works through two placement problems in depth, taken from recent papers:

  • Over time, inside a data centre: placing the experts of a Mixture-of-Experts (MoE) model on GPUs as their popularity shifts, following Huang, Lou and Xiao, Mixture-of-Experts Serving (arXiv:2607.17880, 2026), which brings competitive analysis and approximation algorithms to the problem.
  • Across space, over the Internet: splitting a model's layers across servers scattered around a network and routing each request through a chain of them, following Sun, He, Ji and Parag, Optimizing Resource Allocation for Geographically-Distributed Inference by Large Language Models (arXiv:2512.21884, 2025), which formulates it as a mixed-integer program and gives a greedy algorithm with a performance guarantee.

The decisions in AI serving

Serving a language model involves several layers of decisions, each recognizable from earlier lectures.

  • Capacity. How many GPUs to keep running for a given request rate and latency target. This is a staffing problem: GPUs play the role of agents, requests the role of calls, and the trade-off between utilization and waiting time is the one quantified by the Erlang C model in the call centre lecture.
  • Scheduling and batching. A GPU is most efficient when it processes many requests together, so requests are grouped into batches and advanced one generated token at a time. Two features make this harder than classical scheduling: a request's output length is not known when it arrives, and the memory it needs (its key–value cache) grows as it generates. Classical scheduling theory studied batching and unknown job lengths separately; recent theoretical work studies them together with growing memory use.
  • Placement. Which parts of the model live on which GPUs. For Mixture-of-Experts models, an architecture used by several prominent recent language models, the question is how many GPUs each expert gets. When no single machine can hold the model, the question becomes which servers hold which layers, and how requests are routed through them. These are the two problems studied in the rest of this lecture.

The common thread is that AI serving decisions are made online: requests arrive continuously, demand shifts by time of day and application, and the system must commit before it sees the future. That is why competitive analysis — comparing an online policy with the best policy in hindsight — is the natural yardstick here, rather than the expected-cost criterion used in the inventory lecture.

Mixture-of-Experts models

A dense language model uses every parameter for every token. A Mixture-of-Experts model instead contains many expert sub-networks and a router that sends each token to only one or a few of them. Total capacity can grow with the number of experts while the computation per token stays small. Huang, Lou and Xiao cite DeepSeek-V3 as an example: it activates 37 billion of its 671 billion parameters per token.

Sparsity makes the model cheap per token, but it reshapes the serving problem. The load is no longer spread evenly; it is routed through experts whose popularity varies across application domains and drifts over time. The paper reports that DeepSeek-V3's decoding stage places its 256 routed experts on 320 GPUs — one expert per GPU, with the remaining 64 GPUs holding redundant copies of the busiest experts — and that the deployment recomputes this placement periodically (for example every ten minutes) from recently observed load using simple heuristics.

Two costs pull in opposite directions:

  • Latency. The time to finish a step is set by the most heavily loaded expert relative to the GPUs serving it. Adding copies of a busy expert reduces it.
  • Reconfiguration. Moving a GPU from one expert to another means copying weights, warming caches and other overhead. Reallocating too often wastes this effort, especially if the load shifts back.

The MoE serving model

Consider mm experts served on n>mn > m GPUs over time steps t=1,…,Tt = 1, \dots, T. Every expert must always have at least one GPU, so the first mm GPUs are assigned one per expert and the decision concerns the remaining

k=n−mk = n - m

extra GPUs. At each step the system observes a workload vector rt=(rt,1,…,rt,m)r_t = (r_{t,1}, \dots, r_{t,m}), where rt,i≥0r_{t,i} \ge 0 is the volume of requests routed to expert ii, and then chooses a configuration xt∈Z≥0mx_t \in \mathbb{Z}_{\ge 0}^m, where xt,ix_{t,i} is the number of extra GPUs given to expert ii, with

∑i=1mxt,i=k.\sum_{i=1}^{m} x_{t,i} = k .
(Latency and reconfiguration cost)

Expert ii is served by 1+xt,i1 + x_{t,i} GPUs, so it finishes its workload in time proportional to rt,i/(1+xt,i)r_{t,i}/(1 + x_{t,i}), and the step is complete when the slowest expert finishes. The latency cost of step tt is

ft(xt)=max⁡irt,i1+xt,i.f_t(x_t) = \max_{i} \frac{r_{t,i}}{1 + x_{t,i}} .

The reconfiguration cost of moving from xt−1x_{t-1} to xtx_t is the L1L_1 distance ∑i∣xt,i−xt−1,i∣\sum_i |x_{t,i} - x_{t-1,i}|. Moving one GPU from one expert to another therefore costs 2. The initial configuration x0x_0 is given.

The dynamic MoE serving problem is

min⁡x1,…,xT  ∑t=1T(ft(xt)+∑i=1m∣xt,i−xt−1,i∣)s.t.∑ixt,i=k,  xt∈Z≥0m.\min_{x_1, \dots, x_T} \; \sum_{t=1}^{T} \Big( f_t(x_t) + \sum_{i=1}^{m} |x_{t,i} - x_{t-1,i}| \Big) \quad \text{s.t.} \quad \sum_i x_{t,i} = k, \; x_t \in \mathbb{Z}^m_{\ge 0} .

In the static variant, reconfiguration is forbidden: a single configuration xx is used throughout, and the objective is ∑tft(x)\sum_t f_t(x).

The model deliberately abstracts away hardware details — communication, shared experts, batching — to isolate the central tension: putting more GPUs on currently busy experts reduces latency, but frequent reallocation is itself costly.

Convex relaxation

Allowing xtx_t to be real-valued gives a convex program. Each ftf_t is a maximum of convex functions of xtx_t, hence convex. To linearize the reconfiguration term, introduce yt,i≥xt,i−xt−1,iy_{t,i} \ge x_{t,i} - x_{t-1,i}, the GPUs added to expert ii at step tt. Because the total is fixed at kk, GPUs added equal GPUs removed, so ∑iyt,i\sum_i y_{t,i} is half the reconfiguration cost:

min⁡∑tft(xt)+∑t∑iyt,is.t.∑ixt,i≤k∀tyt,i≥xt,i−xt−1,i∀t,ixt,i, yt,i≥0.\begin{aligned} \min \quad & \sum_{t} f_t(x_t) + \sum_t \sum_i y_{t,i} \\ \text{s.t.} \quad & \textstyle\sum_i x_{t,i} \le k && \forall t \\ & y_{t,i} \ge x_{t,i} - x_{t-1,i} && \forall t, i \\ & x_{t,i}, \, y_{t,i} \ge 0 . \end{aligned}

(The factor of 2 is dropped, which changes constants only.) Its optimal value is a lower bound on the integer optimum, and its dual — built with Fenchel conjugates of the ftf_t — drives the online analysis below, much as LP duality priced routes in the transportation problem.

Static expert placement

With a fixed configuration the problem is a resource allocation: split kk GPUs among mm experts to minimize total latency over a known workload history.

(Static MoE serving (Huang, Lou and Xiao))
  1. Solving the convex relaxation and rounding each xi∗x_i^\ast down, then assigning the leftover GPUs arbitrarily, is a 2-approximation. The reason is that 1+x≤2(1+⌊x⌋)1 + x \le 2(1 + \lfloor x \rfloor), so rounding down at most doubles each expert's latency term.
  2. This is the best possible from the relaxation: its integrality gap is at least 2−1/m2 - 1/m.
  3. The static problem is NP-hard, by reduction from the densest kk-subgraph problem, and assuming the Exponential Time Hypothesis it has no FPTAS.

The integrality gap instance is simple. Take mm experts, k=m−1k = m - 1 extra GPUs, one step, and equal workload r1,i=1r_{1,i} = 1. The relaxation spreads the budget evenly, xi=1−1/mx_i = 1 - 1/m, for latency m/(2m−1)m/(2m - 1). Any integer configuration must leave some expert with no extra GPU, giving latency 1. The ratio (2m−1)/m(2m-1)/m tends to 2.

The hardness reduction is also instructive. Make one expert per vertex of a graph and one time step per edge (u,v)(u, v), with workload 2 on experts uu and vv and 1 elsewhere. Giving extra GPUs to a set SS of kk experts makes step (u,v)(u, v) cost 1 if both endpoints are in SS, and 2 otherwise. The total cost is 2∣E∣−∣E(S)∣2|E| - |E(S)|, so minimizing it means finding the kk vertices that induce the most edges.

(Static placement)

Three experts share k=3k = 3 extra GPUs (6 GPUs in all) over four steps with workloads

Steprt,1r_{t,1}rt,2r_{t,2}rt,3r_{t,3}
1621
2531
3261
4442

Enumerating all ten configurations, the best integer configuration is x=(2,1,0)x = (2, 1, 0). Its per-step latencies are max⁡(6/3,2/2,1/1)=2\max(6/3, 2/2, 1/1) = 2, then 5/35/3, 33 and 22, for a total of 26/3≈8.6726/3 \approx 8.67. The even split (1,1,1)(1, 1, 1) costs 10.510.5, and the next best, (1,2,0)(1, 2, 0), costs 9.59.5.

The convex relaxation has optimum approximately x∗=(1.77,1.15,0.08)x^\ast = (1.77, 1.15, 0.08) with value 8.6158.615, a lower bound on what any configuration can achieve. Rounding down gives (1,1,0)(1, 1, 0) with one GPU left over. Depending on where it goes, the result is (2,1,0)(2, 1, 0) at 8.678.67, (1,2,0)(1, 2, 0) at 9.59.5, or (1,1,1)(1, 1, 1) at 10.510.5 — all comfortably inside the guarantee 2×8.615=17.232 \times 8.615 = 17.23, and the best of them is optimal.

Dynamic expert placement online

In practice the workload is not known in advance. An online algorithm sees rtr_t and must choose xtx_t before rt+1r_{t+1} is revealed.

(Competitive ratio)

An online algorithm is Γ\Gamma-competitive if, for every workload sequence, its expected cost satisfies

E[ALG]≤Γ⋅OPT+C,\mathbb{E}[\text{ALG}] \le \Gamma \cdot \text{OPT} + C ,

where OPT is the cost of the best schedule chosen with full knowledge of the future, and CC may depend on mm and kk but not on the horizon TT.

Two naive policies show why the problem is subtle. Never reconfiguring pays nothing to move but cannot follow lasting shifts in load. Chasing the load — each step choosing the configuration that is best for the current workload alone — follows every shift but pays to move on every short-lived spike, and pays again when the load returns. This is the same tension as in caching and paging, metrical task systems, and the ski-rental problem: commit too early and you may waste the switch, too late and you keep paying for the old state.

Regularized greedy

The algorithm of Huang, Lou and Xiao works in two stages: compute a fractional configuration online, then round it online.

(Regularized greedy)

At each step, choose the fractional configuration that minimizes the current latency plus a penalty for moving away from the previous configuration, measured by relative entropy:

xt=arg⁡min⁡x≥0,  ∑ixi=k  (ft(x)+∑i(xi+1)ln⁡xi+1xt−1,i+1).x_t = \arg\min_{x \ge 0,\; \sum_i x_i = k} \; \Big( f_t(x) + \sum_i (x_i + 1) \ln \frac{x_i + 1}{x_{t-1,i} + 1} \Big) .

The entropy penalty is the key design choice. Moving GPUs toward an expert that already has many is cheap in relative terms, while stripping an expert down to its last GPU is expensive. The update therefore behaves multiplicatively, which hedges against load that may soon swing back.

The analysis is an online primal–dual argument. The optimality conditions of each update step are used to construct a feasible solution of the dual of the convex relaxation, step by step. Since any dual feasible solution bounds OPT from below, comparing the algorithm's cost with that dual value bounds the competitive ratio. Applied directly, standard techniques of this kind give a ratio of order log⁡k\log k. The paper improves this by exploiting two properties of the latency function: it is smooth (giving an expert θ\theta times as many GPUs reduces its latency by at most a factor of θ\theta), and its conjugate is sublinear in a way that converts the loss into a square root.

Online rounding

The fractional schedule is converted into whole GPUs by lazy threshold rounding: draw a random threshold θi∈[0,1)\theta_i \in [0, 1) for each expert once at the start; at each step give expert ii at least max⁡{0,⌊xt,i−θi⌋}\max\{0, \lfloor x_{t,i} - \theta_i \rfloor\} GPUs, and otherwise keep the previous integer allocation wherever possible. Because the thresholds are fixed, an expert only gains a GPU when its fractional allocation crosses a new threshold, so the expected movement is no larger than the fractional movement. Smoothness again ensures the rounded latency is at most 3 times the fractional latency.

(Dynamic MoE serving (Huang, Lou and Xiao))
  1. There is a polynomial-time online algorithm for dynamic MoE serving that is O(log⁡k)O(\sqrt{\log k})-competitive, where kk is the number of extra GPUs.
  2. No online algorithm for the dual problem underlying this primal–dual analysis can be better than 132ln⁡k\tfrac{1}{32}\sqrt{\ln k}-competitive, so the analysis is tight for this approach. Whether the primal problem itself admits a better ratio is open.
  3. Offline, solving the convex relaxation with full knowledge and rounding it gives a polynomial-time constant-factor approximation.

The lower bound has a natural interpretation. In the dual, demand keeps arriving for a single expert for an unknown number of steps, and the algorithm must decide how much dual "budget" to commit at each step, with diminishing returns. The offline benchmark knows when the burst ends and spreads the budget evenly; the online algorithm must overcommit early to stay competitive in case the burst is short. That forced overcommitment costs a log⁡k\sqrt{\log k} factor.

Worked example: spikes versus shifts

(Spikes versus shifts)

Two experts share k=4k = 4 extra GPUs, starting from the even split x0=(2,2)x_0 = (2, 2). Over ten steps the workload is (24,4)(24, 4) for three steps, a one-step spike of (4,24)(4, 24), (24,4)(24, 4) for two more steps, and then a lasting shift to (4,24)(4, 24) for four steps. Recall that moving one GPU costs 2.

PolicyConfigurationsLatencyReconfigurationTotal
Never move(2,2)(2,2) throughout80.0080.0
Chase the load(4,0)(4,0) or (0,4)(0,4), whichever is busier48.02876.0
Myopic greedy(2,2)(2,2), dipping to (1,3)(1,3) when expert 2 is busy70.0676.0
Optimal in hindsight(3,1)3(3,1)^{3}, (2,2)3(2,2)^{3}, (0,4)4(0,4)^{4}61.2869.2

Here myopic greedy minimizes current latency plus the cost of moving from the previous step, with no regard for the future. All totals were computed exactly; the optimum by dynamic programming over the five possible configurations.

The example shows each failure mode. Chasing gets the lowest latency but spends 28 on moves, most of them reacting to the one-step spike and then undoing the reaction. Myopic greedy is too timid: a move only pays off over several steps, so judged one step at a time it rarely looks worthwhile. The hindsight optimum leans toward expert 1 early, then — knowing that a long shift is coming — moves to the even split at the spike and stays there, and moves fully to expert 2 only when the lasting shift begins. An online algorithm cannot know the spike from the shift when it happens; the competitive ratio measures how much that ignorance must cost in the worst case.

Distributed inference over a network

The second placement problem arises when a model is too large for any single GPU available. A pipeline-parallel system splits the model's LL transformer blocks (groups of layers) across several servers; each server holds a run of consecutive blocks, and a request is processed by a chain of servers that together hold every block, in order. Sun, He, Ji and Parag study this for PETALS, a system that runs large models on low-end GPUs spread over the Internet. Their argument for the setting: the bottleneck in running such models is GPU memory rather than processing speed, and offloading parameters to slower storage is far slower than pooling memory across machines.

In PETALS the client relays all traffic: it sends the current token's embedding to the first server, receives the result, forwards it to the next server, and so on. Each server keeps an attention cache for every request it is serving, so after the first token only a few kilobytes cross the network per server per token.

Two decisions must be made:

  • Block placement: which consecutive blocks each server stores.
  • Request routing: which chain of servers each request uses.

They interact through GPU memory. Storing more blocks on a server shortens chains but leaves less room for attention caches, which limits how many requests that server can carry.

The model

Server jj stores blocks aj,…,aj+mj−1a_j, \dots, a_j + m_j - 1: its first block aja_j and the number of blocks mjm_j. The paper's performance models, validated by experiment, say:

  • Time. After the first token, each token costs tcj+τjkjt_{cj} + \tau_j k_j at server jj, where tcjt_{cj} is the round-trip time between client cc and server jj, τj\tau_j is the server's per-block processing time, and kjk_j is the number of blocks it processes for this request. Measured inference time was close to linear in the number of blocks and largely independent of how many requests ran concurrently, as long as they fit in memory.
  • Memory. A server with memory MjM_j that stores mjm_j blocks and processes kjrk_j^r blocks for each request rr uses
smmj+sc∑rkjr≤Mj,s_m m_j + s_c \sum_r k_j^r \le M_j ,

where sms_m is the size of one block and scs_c the size of one block's attention cache for one request.

A chain is feasible if each server's blocks pick up exactly where the previous server's left off. If request rr goes from server ii to server jj, then server jj processes blocks ai+mia_i + m_i through aj+mj−1a_j + m_j - 1, which requires

aj≤ai+mi≤aj+mj−1.a_j \le a_i + m_i \le a_j + m_j - 1 .

The client acts as a dummy server holding "block 0" at the start of the chain and "block L+1L + 1" at the end.

(Block placement and request routing (BPRR))

Choose the placement (aj,mj)(a_j, m_j) of every server and a feasible chain for every request to minimize the total per-token inference time

∑r∑(i,j)∈chain(r)(tcj+τj (aj+mj−ai−mi)),\sum_{r} \sum_{(i,j) \in \text{chain}(r)} \Big( t_{cj} + \tau_j \,(a_j + m_j - a_i - m_i) \Big),

subject to the memory constraint at every server and aj+mj−1≤La_j + m_j - 1 \le L.

Written directly, the problem has an exponential number of candidate chains, and which chains are feasible depends on the placement. The paper turns it into a mixed-integer linear program of polynomial size. Routing becomes a link variable fijr∈{0,1}f^r_{ij} \in \{0, 1\} — does request rr go from ii to jj? — with flow conservation from a source copy of each client to a sink copy, exactly as in a shortest-path or network-flow model. The feasibility condition becomes the constraints ajfijr≤ai+mia_j f^r_{ij} \le a_i + m_i and (ai+mi)fijr≤aj+mj−1(a_i + m_i) f^r_{ij} \le a_j + m_j - 1. These are products of an integer and a binary variable, which are linearized with auxiliary variables in the standard way.

(Hardness (Sun, He, Ji and Parag))

BPRR is NP-hard, by reduction from the partition problem. It remains NP-hard with a single client — the common case where all users reach the system through one proxy.

The MILP has O(∣R∣⋅∣E∣)O(|\mathcal{R}| \cdot |E|) variables and constraints, where R\mathcal{R} is the set of requests and EE the links between clients and servers. That grows quadratically in the number of servers, so solving it exactly does not scale. Rounding its LP relaxation does not help either: the fractional solution need not round to a feasible placement.

Solving block placement and routing

Conservative greedy

The paper's algorithm, CG-BPRR, decomposes the problem into three subproblems solved in sequence, one per type of decision.

  1. How many blocks per server. Reserve memory as if every request might pass through every block on the server:
mj=min⁡(⌊Mjsm+sc∣R∣⌋,  L).m_j = \min\Big( \Big\lfloor \frac{M_j}{s_m + s_c |\mathcal{R}|} \Big\rfloor, \; L \Big).

Whatever routing comes later, no server can run out of memory. 2. Which blocks. Rank servers by their amortized inference time t~j=τj+t∗j/mj\tilde t_j = \tau_j + t_{*j}/m_j, where t∗jt_{*j} is the largest round-trip time from any client to jj. This is the worst-case time per block on server jj with its communication cost spread over the blocks it holds. Then place blocks greedily, fastest server first, each server taking the consecutive blocks that most need service. In effect, the fastest servers cover blocks 1,2,…,L1, 2, \dots, L in turn. 3. Routing. With the placement fixed, the paper shows that routing each client's requests along a shortest path through the feasible chains is optimal.

(Guarantee for CG-BPRR (Sun, He, Ji and Parag))

Sort servers so that t~1≤t~2≤⋯\tilde t_1 \le \tilde t_2 \le \cdots, and let KK be the number of servers needed before every block is placed. If CG-BPRR finds a feasible placement, its average per-token inference time is at most

∑j=1Kt~jmj−τK(∑j=1Kmj−L),\sum_{j=1}^{K} \tilde t_j m_j - \tau_K \Big( \sum_{j=1}^{K} m_j - L \Big),

the time for a request from the client farthest from every server, routed through servers 1,…,K1, \dots, K. The algorithm runs in polynomial time.

The guarantee comes at a price. The memory reservation in step 1 is conservative, so CG-BPRR can fail to find a placement when one exists, and it can be far from optimal when replicating blocks and spreading requests across the copies would be better. The paper gives an example of each.

Online: two time scales

Requests arrive continuously, but moving blocks between servers is slow, so the online version separates the decisions by time scale:

  • Placement, rarely, by robust optimization. Steps 1–2 already plan for the worst case: ∣R∣|\mathcal{R}| concurrent requests, all from the farthest client. Run with a chosen design capacity ∣R∣|\mathcal{R}|, the same bound on average per-token time holds whenever the number of concurrent requests is at most ∣R∣|\mathcal{R}|.
  • Routing, per request, by shortest path. Each arriving request takes the path minimizing waiting time plus inference time, where a link's waiting time is how long until the server will have enough memory free.

The design capacity ∣R∣|\mathcal{R}| sets a throughput–delay trade-off. A larger value lets more requests run at once without waiting, but forces fewer blocks per server, longer chains and slower tokens. The paper suggests setting it to the mean plus one standard deviation of the number of requests arriving during one request's lifetime, capped by what the servers' memory allows. This is the same reasoning as a safety stock in the inventory lecture.

In experiments with BLOOM-176B on a real PETALS deployment, and in simulations on Internet topologies, the authors report average inference times 60–80% lower than PETALS' own heuristics. Most of the gain came from the time to the first token.

(Conservative placement versus the optimum)

A model of L=4L = 4 blocks is served to one client with ∣R∣=4|\mathcal{R}| = 4 concurrent requests. Memory is measured in block sizes (sm=1s_m = 1), and one block's attention cache for one request takes sc=1/4s_c = 1/4. There are three servers:

ServerMemory MjM_jPer-block time τj\tau_jRound trip tcjt_{cj}
A (fast GPU, far away)415
B321
C322

CG-BPRR. Step 1 reserves memory for all four requests on every stored block, so each block costs 1+4⋅14=21 + 4 \cdot \tfrac14 = 2 units: mA=2m_A = 2, mB=mC=1m_B = m_C = 1. The amortized times are t~B=2+1/1=3\tilde t_B = 2 + 1/1 = 3, t~A=1+5/2=3.5\tilde t_A = 1 + 5/2 = 3.5 and t~C=2+2/1=4\tilde t_C = 2 + 2/1 = 4. Placing fastest first, B takes block 1, A blocks 2–3 and C block 4. The only feasible chain is B → A → C, at

(1+2⋅1)+(5+1⋅2)+(2+2⋅1)=14(1 + 2 \cdot 1) + (5 + 1 \cdot 2) + (2 + 2 \cdot 1) = 14

per token. This equals the guarantee 3⋅1+3.5⋅2+4⋅1=143 \cdot 1 + 3.5 \cdot 2 + 4 \cdot 1 = 14: with a single client, every request is the worst-case request.

Optimum. An exhaustive search over all placements and routings finds an average of 12.512.5. A stores blocks 1–2, and both B and C store blocks 3–4. Two requests take A → B (cost 7+5=127 + 5 = 12) and two take A → C (cost 7+6=137 + 6 = 13). Memory is exactly full on all three servers: A uses 2+4⋅2⋅14=42 + 4 \cdot 2 \cdot \tfrac14 = 4, and B and C each use 2+2⋅2⋅14=32 + 2 \cdot 2 \cdot \tfrac14 = 3.

The optimum beats CG-BPRR by about 11% because it replicates blocks 3–4 and splits the load between the copies. Each copy then needs attention caches for only two requests, leaving room to store two blocks instead of one. CG-BPRR's reservation assumes every request could land on every server, which rules this out — the price it pays for a guarantee that holds under any routing and, online, under any arrival pattern within the design capacity.

Extensions and open questions

  • Closing the gap. The log⁡k\sqrt{\log k} barrier is proved for the dual problem used in the analysis. Whether a different technique can beat it for MoE serving itself is open.
  • Richer models. Real deployments add communication costs between GPUs, experts of different sizes, memory limits, and the batching and key–value cache constraints from the first section. Each breaks some structure the analysis relies on.
  • Predictions. Expert load is partly predictable from recent history. Online algorithms that use predictions while remaining robust when they are wrong — learning-augmented algorithms — are a natural next step.
  • Beyond pipelines. The distributed-inference model assumes pipeline parallelism and the client relaying all traffic; the authors note their formulation adapts to servers that forward directly to each other. Splitting individual layers across machines (tensor parallelism) is a harder extension, and other objectives — the cost of renting GPUs, robustness to servers failing — are left open.
  • Connections. The ingredients are the same as in earlier lectures: a convex relaxation and its dual (transportation, unit commitment), rounding with a provable guarantee (facility location), a hedge between reacting and waiting (inventory, revenue management), and placement with flow-based routing (facility location, vehicle routing).

Sources: Z. Huang, Q. Lou and T. Xiao, Mixture-of-Experts Serving, arXiv:2607.17880 (2026); T. Sun, T. He, B. Ji and P. Parag, Optimizing Resource Allocation for Geographically-Distributed Inference by Large Language Models, arXiv:2512.21884 (2025). For background on competitive analysis, see Borodin and El-Yaniv, Online Computation and Competitive Analysis.