xAI ran Grok 4 on 200,000 GPUs. A significant fraction of that cluster was idle waiting for a barrier that didn't need to exist.
Laminar breaks the synchronization barrier between rollout generation and policy training that every RL system in the world uses. 5.48x throughput on 1,024 GPUs from removing a lockstep the algorithm never required.
April 27, 2026I've been sitting with this for a few days now and I still find it slightly uncomfortable to say out loud, because the people who built that system are not careless engineers. They are some of the best infrastructure engineers alive. And the barrier they were waiting at -- the synchronization point between rollout generation and policy training that every RL post-training system in the world uses -- is so fundamental to how everyone thinks about the problem that it took a paper published three days ago to make the cost visible.
Let me explain what I mean.
RL post-training has two phases. Generation: the model produces rollouts -- responses to prompts, trajectories through multi-step tasks, chains of reasoning. Training: you compute rewards on those rollouts, calculate policy gradients, update the weights. Then you repeat.
Every system I'm aware of runs these phases serially and synchronously. Generate a batch. Finish the batch. Train on it. Generate the next batch. The cluster waits at a global synchronization barrier between each phase. The training workers sit idle while generation runs. The rollout workers sit idle while training runs. Half the cluster is always waiting.
This sounds bad. It's worse than it sounds, because rollout generation has a heavy-tailed latency distribution.
Some prompts produce short trajectories -- 50 tokens, maybe 100. Done in seconds. Some prompts produce long trajectories -- 2,000 tokens, long chains of reasoning, multi-step tool use. Done in minutes. Under the synchronous model, every rollout worker in the cluster waits for the slowest trajectory in the batch before training can begin. If 1% of rollouts take 10x longer than average, the entire cluster waits through that 10x before anyone makes a gradient update.
At 1,024 GPUs -- the scale Laminar benchmarks at -- this is expensive. At 200,000 GPUs -- the scale xAI ran Grok 4 on -- this is a number I don't want to calculate out loud.
Laminar, published at EuroSys '26 three days ago, attacks the barrier directly.
The key insight is that the synchronization barrier is not required by the algorithm. PPO and GRPO don't need the full batch to be complete before training starts. They need some trajectories. The lockstep is an implementation assumption, not a theoretical necessity. It's there because synchronous systems are easier to reason about and easier to build. Not because the math requires it.
Laminar breaks the lockstep through trajectory-level asynchrony. Each trajectory is generated, evaluated, and consumed independently as it completes. The training process doesn't wait for the slowest rollout in a batch. It trains on trajectories as they arrive. Short trajectories finish first, get fed to the trainer first, produce gradient updates first. Long trajectories finish later and get consumed when they're ready.
The mechanism that makes this work: a tier of relay workers acting as a distributed parameter service. In synchronous systems, after each training step the updated weights get broadcast to all rollout workers simultaneously -- that's the synchronization barrier. In Laminar, relay workers cache the latest model weights and rollout workers pull from them any time without stalling the trainer. Training continues. Rollout workers pull weights whenever they need them. The two processes run concurrently and independently.
The second piece: dynamic repacking. Long-tail trajectories -- the ones that take 10x longer -- get consolidated onto a small number of dedicated rollout workers. The rest of the fleet finishes fast trajectories and immediately starts new ones. You don't lose the long-tail trajectories. You quarantine them so they can't block the fleet.
5.48x throughput improvement on 1,024 GPUs. 37% reduction in average wait time. 47% reduction in best-case wait time. Same model, same algorithm, same hardware -- different synchronization architecture.
The thing that's hard to sit with: all of this throughput was always there.
The compute was running. The GPUs were bought. The electricity was being consumed. The training jobs were completing. The models were getting better. And somewhere between 20% and 40% of that wall-clock time was spent at synchronization barriers that the algorithm didn't actually require.
This is not a critique of the engineers who built these systems. Synchronous training is correct, predictable, and much easier to debug than asynchronous training. When you're building a post-training pipeline under deadline pressure and you need it to not silently corrupt your model weights, you make conservative engineering choices. The conservative choice was synchronous. The conservative choice left throughput on the table.
Laminar is the paper that quantifies how much throughput was on the table and builds the system to claim it. The fully decoupled architecture also isolates failures -- if a rollout worker crashes during a long trajectory, it doesn't crash the training loop because they're no longer coupled. You get better throughput and better fault isolation from the same architectural change.
The ecosystem context here matters.
verl (Volcano Engine RL, ByteDance's open-source RL training framework) added fully async policy training in February 2026 -- 2.35x to 2.67x throughput improvement on Qwen2.5-7B from the same decoupling principle. It was presented at NVIDIA GTC in March. It's in production. The codebase is public.
AReaL-Hex showed that rollout generation (memory-bandwidth-bound, because it's essentially inference) and policy training (compute-bound, because it's essentially forward + backward passes) have complementary hardware profiles -- the same insight as prefill/decode disaggregation, one level up the stack. You can run rollouts on cheaper H100s and training on H200s and get better total cost-efficiency than a homogeneous cluster.
ECHO-2 goes further: centralized training on a small stable cluster, rollout generation offloaded to a heterogeneous pool of inference workers over wide-area networks. The training loop stays continuously utilized. Rollout generation sprawls out to wherever idle inference capacity exists.
These are all attacking the same root problem from different angles. The RL post-training pipeline treats generation and training as a single coupled unit. They are not. They have different hardware affinities, different latency profiles, different failure modes, and different scaling properties. Decoupling them -- completely, at the architectural level -- is the work that the best systems teams in the world are doing right now, mostly in papers that nobody outside those teams is reading.
xAI ran 200,000 GPUs.
Every synchronous system running at that scale is leaving something on the table at every training step.
the barrier between generation and training isn't there because the math requires it.
it's there because synchronous systems are easier to build.
and we built them that way until someone measured the cost.
5.48x on 1,024 gpus from removing a synchronization barrier that didn't need to exist. the compute was always there. the lockstep was the only thing in the way.
P.S. The zero-advantage problem is the other underappreciated efficiency sink in RL post-training. In GRPO-style training, if all rollouts for a given prompt are either all correct or all wrong, the advantage is zero and the gradient is zero. No learning happens. The compute burned generating those rollouts is pure waste. At 1.5B and 7B parameter scale, over 35% of prompts fall into this zero-advantage regime during training. At Claude Sonnet 4 and Llama-3-70B scale, the same problem shows up. "Train Less, Learn More" (February 2026) proposes adaptive rollout filtering to skip these prompts before generation, not after. You save the rollout compute entirely instead of generating trajectories you'll throw away. That paper has 11 citations. It should have 1,100.
i write these when i have something worth saying. no schedule. no algorithm. if you want to know when the next one goes up -- leave your email.
no spam. no sequence. just the note, when it exists.