Prime Intellect Slashes GLM-5.2 Weight Transfer by 22x With RDMA

Prime Intellect rebuilt weight sync on RDMA and vLLM tracing, dropping GLM-5.2's 1.6TB policy transfer from 86 seconds to under 4.

·
·
  • Prime Intellect cut GLM-5.2 weight transfer from 86.1s to 3.9s, a 22x speedup on 1.6TB policies.
  • Rebuilt on NIXL RDMA instead of NCCL, bypassing CPU for direct GPU-to-GPU reads.
  • Traces vLLM's real load path with LazyTensor wrappers, so mapping works for any model or kernel.
  • Delivers over 25% more end-to-end throughput for prime-rl users.
  • Removes NCCL's static process group, enabling fault-tolerant and elastic inference scaling.
  • Each NIC hits 45 GB/s of 50 GB/s peak; remaining latency is vLLM pause consensus.

Training giant models with reinforcement learning has a dirty secret: after every optimizer step, you have to copy the updated policy from your trainer to your inference workers. For an 800B-parameter mixture-of-experts model like GLM-5.2, that hand-off was eating 60 to 90 seconds per step over NCCL, a fraction of total step time large enough to dominate it. Prime Intellect has rewritten this path on top of NIXL and RDMA, cutting transfer time by roughly 22x.

Their new writeup reports cutting the full vLLM pause, update, and resume cycle for GLM-5.2 from 86.1 seconds on NCCL down to 9.3 seconds with production NIXL, and 3.9 seconds with a more aggressive sync cadence. That covers a 1.6 TB policy across hundreds of GPUs and translates to over 25% more end-to-end throughput for prime-rl users.

Why NCCL breaks down here

NCCL is the default for intra-datacenter collectives, but two structural properties make it a poor fit for RL weight sync. It requires a static process group, which makes fault tolerance and elasticity nearly impossible at scale. Its sharding-aware peer-to-peer transfer also introduces synchronization points that routinely fail to saturate network bandwidth. Once a training step dropped below five minutes, the fixed cost of weight sync stopped being noise and became the bottleneck.

Prime Intellect switched to one-sided RDMA via NIXL, the transfer library from NVIDIA's Dynamo team. RDMA lets a NIC pull bytes directly out of remote GPU memory without involving either CPU. NIXL wraps that capability in a PUSH/PULL API on top of UCX.

The weight format problem

Raw RDMA moves bytes between addresses without knowing what they represent. The hard part is knowing which bytes go where. vLLM transforms checkpoint tensors into a runtime kernel format that depends on model architecture, parallelism strategy, GPU, quantization mode, and selected kernels. An MoE loader may pack gate and up projections into w13_weight; quantized kernels may cast, transpose, pack, or swizzle weights and scales into backend-specific layouts. None of this is documented, and it changes constantly.

Hard-coding a mapping per model would mean re-implementing vLLM's loader for every architecture and quantization scheme. Instead, the team borrowed a LazyTensor trick from vLLM's Ray Direct Transport prototype. They wrap each trainer tensor in a LazyWeight that owns no data, then run it through vLLM's real load_weights path. LazyWeight's __torch_function__ intercepts operations like view, narrow, split, permute, contiguous, and dtype casts, appending each to an operation chain, while equivalent operations on meta tensors propagate shape, stride, and dtype without touching live storage.

The recorded chain splits at the first operation that materializes new storage. Everything before that split is offset and stride math on the source pointer, collapsing into RDMA read parameters. Everything after replays locally on the inference GPU once the bytes arrive.

What the numbers look like

The benchmark ran on 12 DGX H200 nodes with eight 400 Gbit/s NICs each. GLM-5.2 trained at FSDP=64 and EP=8 across eight nodes, loading into DPEP=32 vLLM inference across four nodes with fp8_per_block online quantization:

  • NCCL baseline: 86.1 seconds median
  • NIXL with sync/32 pause cadence: 9.3 seconds
  • NIXL with sync/1 pause cadence: 3.9 seconds

During transfer, each NIC reaches roughly 45 GB/s of its 50 GB/s peak. Most remaining latency comes from waiting for pause consensus, a vLLM DPEP quirk where an all-reduce runs every 32 waves rather than every wave to avoid adding overhead to each serving step. Dropping to every wave accounts for the final gap to under 4 seconds, though the team is still validating whether sync/1 affects serving throughput.

Elasticity, not just speed

NCCL's static process groups made it difficult to add or remove inference replicas mid-training or recover from a failed node. NIXL plus ModelExpress requires no fixed group, opening the door to elastic, fault-tolerant inference pools that can scale up or down while RL runs. The Prime Intellect team flags auto-scaling with fast inference start times, fault tolerance across EP replicas, and liquid compute as the next capabilities this foundation enables.

Because the weight mapping is discovered by tracing vLLM's actual load path rather than hand-coded, it automatically covers new models, kernels, and quantization schemes without rewriting. For teams running large-scale post-training on MoE models, or building async RL pipelines where the sampler needs to stay hot, this removes a ceiling that previously determined what was feasible.

Comments

avatar