Why the learner waits
Agentic rollouts finish at different times. Some agents return quickly; others keep editing code, calling tools, or waiting for tests. In our synchronous GRPO and OPD runs, learner GPUs spend 49.5% of step time waiting for rollout and verification.
Learner work across consecutive updates
SyncLearner work starts after rollout finishes. Red regions mark idle GPUs.
ThunderSyncBackward passes overlap rollout, reducing idle time and fitting more updates into the same window.
Loading the utilization illustration…
Swipe across the trace to inspect it.
Scheduling at a fixed policy
A batch is needed for the optimizer step, but parts of the backward pass can start sooner. ThunderSyncRL releases GRPO work when a trajectory’s reward arrives, and OPD work when a turn’s teacher scores are ready. All of that work uses the same policy snapshot.
GRPO trajectory scheduling
OPD turn scheduling
GRPO at trajectory granularity
For a group of trajectories, GRPO weights each trajectory’s gradient by how its reward compares with the group. The group mean and standard deviation need every reward:
is the gradient of trajectory’s weighted action-token log probabilities, evaluated at the fixed policy . It does not depend on the other rewards. Once trajectory and its reward are ready, ThunderSync runs that backward pass and adds to two buffers:
When the group closes, its mean and standard deviation turn those buffers into the final group gradient:
This is the same weighted sum, regrouped so the backward passes happen earlier. The policy stays at until the batch’s single optimizer step.
OPD at turn granularity
For each sampled action token, the frozen teacher and current student score the same token in its realized context. Let and be their log probabilities. Their difference gives the token’s weight:
Stop-gradient () holds this weight constant during differentiation. Once the teacher scores arrive, turn contributes a gradient while its tool call can keep running:
contains the turn’s scored action tokens. ThunderSync accumulates these unnormalized contributions and completes any deferred gradients through earlier context. At batch closure, it divides once by the total scored-token count:
That normalization happens before clipping and the single optimizer step, giving the same batch-synchronous OPD update.
Results and resource costs
On SWE-bench Verified, ThunderSyncRL reaches the GRPO target of 74.01% pass@3 at 121.3 GPU-hours, versus 233.5 with Sync. At 128 GPU-hours it outperforms Async in all four benchmark–objective settings, with gains up to 2.47 percentage points. Each comparison fixes the model, workload, optimizer, and GPU allocation.
| Benchmark | Objective | Speedup vs. Sync | Pass@3 gain vs. Async, pp |
|---|---|---|---|
| SWE-bench Verified | GRPO | 1.9× | +2.47 |
| OPD | 1.9× | +1.27 | |
| Terminal Bench 4.0 | GRPO | 1.8× | +1.52 |
| OPD | 1.9× | +2.02 |
Qwen-3.8-27B
SWE-bench Verified
GRPO
Pass@1
Pass@3
Pass@5
Training reward
OPD
Pass@1
Pass@3
Pass@5
Training reward
Terminal Bench 4.0
GRPO
Pass@1
Pass@3
Pass@5
Training reward
OPD
Pass@1
Pass@3
Pass@5
Training reward
GLM-4.7-Flash-31B
SWE-bench Verified
GRPO
Pass@1
Pass@5
OPD
Pass@1
Pass@5
Terminal Bench 4.0
GRPO
Pass@1
Pass@5
OPD
Pass@1
Pass@5
Citation
@article{kang2026thundersyncrl, title = {ThunderSyncRL: Lossless Acceleration of Agentic Reinforcement Learning}, author = {Kang, Seil and Kang, Hangoo and Suresh, Tarun and Kim, Youngeun and Pimpalgaonkar, Shreyas and Hwang, Seong Jae and Mirhoseini, Azalia}, journal = {arXiv preprint arXiv:2610.05935}, year = {2026}, url = {https://arxiv.org/abs/2610.05935}}