4× lowerp50 TTFT with a custom agent-aware router built on Dynamo’s routing APIs
Published numbers are from agentic serving, not RL training runs. Demo block counts are illustrative.
4 / 19
02 · Global routingSimulation
Global routing: one global, KV-aware router instead of a static split
One RL step = 240 rollouts across 4 datacenters. Training waits for the last one. Each row is a datacenter over time. Green = GPUs working, gray = idle and waiting. Press Run and compare the gray.
New worker startup · DeepSeek-V4-Pro Fast scale-up
Cold start from storage
8m 01s
P2P weights only
7m 00s
P2P weights + kernels
1m 44s
Copying compiled kernels saves the most time
✓
P2P weight refit <10 s1.5–1.8 s warm refit
✓
Scale up workers quicklynew worker 8m01s → 1m44s
✓
Resilience & elasticityevery version durable in object storage
○
Samples back to the trainerroadmap: experience transfer
11 / 19
ModelExpress: what RL frameworks get
Fast refit
MoE-aware pulls
Each rank pulls only its TP/EP slices
#704 merged
Warm, bounded memory
Reuses buffers and plans; bounded GPU install
#735 merged · #749 open
Precision control
Per-tensor FP32 / BF16 / FP16 on the wire
PR #747
Quantized peer refit
Quantized vLLM rollouts + FP8 KV cache
PR #778
Resilience & elasticity
Versioned updates
Immutable versions: every rollout knows its policy
MX main
Source fallback
Peer → trainer → object storage
MX main
Integrity checks
Optional digests verify every refit
prime-rl runs
Scale up workers quickly
P2P from a running peer
New workers copy weights + kernels from a serving peer, not storage
8m01s → 1m44s
Quantized P2P load
FP8 / NVFP4 copied as-is between same-family GPUs
supported
Not covered yet◐Packed FP8/FP4 trainer wire✗Cross-vendor quantized CUDA ↔ XPU○Samples → trainer roadmap
12 / 19
03 · Delta weight transfer · fills Prime slide 05 “path TBC”Simulation
Delta weight sync: one trainer, rollouts on three continents
ATrainer publishes Δ
Mostly zeros → >99% smaller
→
BVersioned in object storage
One upload per step
→
CPeers fan out in-region
Peers copy over NIXL, not the WAN
→
DApply at a safe point
Swap weights, clear KV cache
Same update, two ways. Trainer makes a new step every 2 min (1T model).
❗Demo values are illustrative
BF16 weights · 3 remote regions · analytic model, illustrative
13 / 19
RL Post-Training
Significant portion of RL is driven by inference and has similar optimization problems.
Improving Kubernetes Deployment
Goal: increase sandboxes/CPU and goodput/GPU!
Deploy training/inference workloads optimally with single CRD API
Fleet-level coordination of hardware
Oversubscription of Vera CPUs to maximize sandboxes
Planner, Grove, Agent Substrate*
14 / 19
Planner: right-size rollout GPUs as load changes
An LLM-aware autoscaler: scales on queues, KV cache use and latency targets, not CPU.
Why it matters for RL
Follows the RL step
Load-based scaling (~5 s) catches the burst at step start; prediction (~180 s) sets a capacity floor.
One budget, shifted where needed
Global Planner caps total GPUs and moves capacity between prefill, decode and eval pools.
Safe to try first
Advisory mode recommends replica counts without changing the deployment.
Status: shipped in Dynamo · targets: throughput (default), latency, load, SLA · works with vLLM, SGLang, TensorRT-LLM · scale-down does not drain in-flight requests yet: set replica floors.
15 / 19
Grove: one Kubernetes API for the whole rollout fleet
Describe router, prefill and decode as one custom resource; Grove schedules, places, orders and scales it.
Why it matters for RL
No half-started engines
Multi-node rollout engines are gang-scheduled all-or-nothing, so GPUs never sit idle waiting for missing pods.
Placed for speed
Topology-aware placement keeps each engine inside one NVLink domain for wide-EP and disaggregated serving.
Update without stopping
Rolling updates and multi-level autoscaling; next: Grove Jobs for rollout and training workers.
Status: open source (ai-dynamo/grove) · shipped: gang scheduling, multi-level autoscaling, startup ordering, rolling updates, topology-aware scheduling · 2026: resource-optimized rolling updates, topology spread, auto topology detection.
16 / 19
Agent Substrate: many more sandboxes per CPU
Google's open-source runtime suspends idle sandboxes and resumes them on any warm worker in under a second.
Why it matters for RL
More sandboxes per CPU
Rollout sandboxes sit idle while the model generates. Suspend them and multiplex many onto a few warm workers.
State kept across turns
RAM and files are snapshotted, so a long multi-turn rollout resumes exactly where it paused.
Fast and isolated
Sub-second resume; gVisor or microVM isolation for model-written code.
Status: Google open source (agent-substrate/substrate), early development · GKE: evaluation now, production by allowlist · CPU sandboxes only (no GPU passthrough) · open network connections are not kept across suspend.
17 / 19
Roadmap to Dec ’26
01 · Rollout performance
Serving and routing control surface
Pass-through engine APIs for framework integration
ThunderAgent + KV hints for KV transfer in long-running rollouts
NEWPartial rollouts: cancel, pause and continue a trajectory without losing progress
02 · Weight transfer & data plane
Model Express / NIXL: weights, artifacts, versions
Fast weight sync via NIXL / NCCLM2N, delta weights, resharding, cold start
NEWRollout data plane: routed experts and logprobs over multiple transports (vLLM AuxOutput connector, in design review)
NEWModel version provenance: served version carried through request, response and artifacts; version-aware KV cache and capacity
03 · Kubernetes
K8s, Planner, autoscaling, and fault tolerance
Shift fixed GPU budget and requests between pools
Long-horizon rollout worker recovery via Shadow Failover & Snapshot
Grove Jobs + rolling updates for rollout & training workers
CPU sandboxes via Agent Substrate
NEWFlagship recipes
Quick validationSmall model, single node: try Dynamo for RL in minutes
Quantization-aware RLMXFP8 / NVFP4 on Blackwell for shorter time-to-intelligence
FW integrations:MilesSkyRLRelaxReefand more
18 / 19
Backup
KV retention across weight updates
One long rollout: a turn, a long tool call, then new weights (v → v+1) before the next turn. No option wins on all three; it depends on how much the lab trusts KV from the old policy.
Why it helps RL
No re-prefill after each sync
Long agent rollouts carry tens of thousands of tokens. Reusing KV skips recomputing that history every time the weights change.
GPU memory back during tool calls
Tool calls can run for minutes. Offloading the idle KV lets other rollouts use that memory, so more rollouts run at once.
Rollouts can move freely
With P2P KV transfer, a rollout can resume on any worker after a sync, rebalance or failure, without rebuilding its context.