The number in the SGLang v0.5.14 release notes — "5x higher throughput at the same interactivity" serving DeepSeek-V4 on NVIDIA GB300 — is the kind of figure that gets read as a hardware win. New Blackwell Ultra rack, bigger NVLink domain, of course it's faster. That reading misses where the speedup actually comes from. The GB300 helps, but the load-bearing change is a pair of software dispatch algorithms, and the more interesting of the two is a solver.
The bottleneck the average can't fix#
Start from where expert parallelism leaves off. A sparse MoE like DeepSeek-V4 scatters its experts across dozens of GPUs; each token is routed to a handful of them; every MoE layer ends in an all-to-all barrier. That barrier is the tyranny of the slowest GPU — if one GPU holds an overloaded expert, the entire cluster waits for it at every layer.
DeepSeek's EPLB, the Expert Parallelism Load Balancer, is the standard answer, and it's a static one. It estimates each expert's long-run load and computes a placement plan that replicates chronically hot experts onto extra GPUs so their traffic is shared. It's good, and it's shipped everywhere. But look closely at what it optimizes: the average. EPLB plans for the routing distribution you see over many batches.
No single decode step looks like the long-run average. A static placement plan is always solving last month's traffic.
Routing is learned and lumpy, and at the granularity of one batch it's noisy. The experts that happen to be hot in the batch currently in flight are not the same set that EPLB replicated for. So even a perfectly balanced placement leaves per-batch stragglers — the residual imbalance that the average, by construction, can't see.
LPLB: balance the batch, not the plan#
That residual is what LPLB — Linear Programming Load Balancer — attacks. It sits on top of EPLB's replica placement and, for each layer of each batch, solves a small linear program. Model the redundant experts as a graph: each replica is linked to its original by an edge between GPUs, and the edge's capacity is how many tokens that replica can absorb this batch. LPLB solves for the token flow along those edges that minimizes imbalance inside the expert-parallel group without exceeding any edge's capacity. Where EPLB reorders and replicates experts once, LPLB re-routes tokens every batch.
The framing shift is the whole point. EPLB treats MoE load balancing as a provisioning problem — decide the layout, pay for the replicas, move on. LPLB treats it as an online optimization problem — the layout is fixed, but the assignment adapts to the batch you actually have. The companion, Waterfill, does the analogous job for shared-expert dispatch. Both are exposed as dispatch-time choices layered on DeepEP's all-to-all kernels; in SGLang you opt into LPLB with --ep-dispatch-algorithm=lp.
This is also why the "5x on GB300" is only partly a chip story. Wide expert parallelism was already leaving throughput on the floor to per-batch imbalance; closing that gap keeps more GPUs busy each step, and that — more than the silicon — is where a multiple like 5x comes from. It's the same lesson as prefill/decode disaggregation: the wins at this scale come from scheduling work more precisely, not from a faster part.
Read it before you flip the flag#
Three honest caveats. First, LPLB is early-stage research — DeepSeek's own repo says so, and SGLang ships it opt-in, not as a default. Second, it adds a solve to the critical path: a linear program per layer per batch is cheap as LPs go, but it is not free, and its win has to clear its own cost. Third, and most important, this is a high-concurrency weapon. Like all wide EP, it only helps when enough tokens are in flight for per-batch imbalance to exist in the first place; for low-traffic or single-stream serving, you're paying for a balancer that has nothing to balance.
If you're serving a frontier open MoE — DeepSeek-V4, Kimi K2.7, GLM-5.2 — at real concurrency, LPLB is worth benchmarking on your traffic, because your routing skew is yours and the headline number is theirs. And if you're just reading the release notes: the interesting releases in inference right now aren't announcing bigger boxes. They're announcing better math about where the tokens go.



