| Sampling | |
|---|---|
| question; -th sampled answer; answers per question (8) | |
| policy being trained; inference engine's policy, which samples the data and is the KL anchor (the paper's ) | |
| answer log-ratio | |
| Objective | |
| reward of an answer (1 if correct, else 0); | |
| optimum of the KL-regularized problem anchored at | |
| its optimal value ; the group estimate | |
| estimated optimal advantage | |
| fraction of a group's answers that are correct (Step 2) | |
| Constants | |
| KL weight of the objective; in the experiments split into | |
| the inside (1) and the one multiplying in the loss () | |
| trainer updates between synchronizations: 50 or 100 in math, 418 in code | |
Context. Policy-gradient methods such as PPOproximal policy optimization: a policy-gradient method that multiplies each token's advantage by its probability ratio, current over sampling policy, and clips the ratio so each update moves the policy only a little and GRPOgroup relative policy optimization: PPO without a value model, in which every token of an answer gets the answer's reward minus its group's mean reward, divided by the group's standard deviation, as advantage assume that the training data come from the policy being trained, and in LLM post-training they rarely do. Answers are generated by a separate inference enginesoftware that generates text from a model's weights at high throughput, such as vLLM; it computes probabilities with different numerical kernels from the training code whose log-probabilities differ slightly from the trainer's even with identical weights, and in asynchronous pipelines that engine holds weights several updates old. Most fixes make the data look on-policy again: they multiply GRPO's loss by importance ratiosa sample's probability under the policy being trained divided by its probability under the policy that generated it between trainer and inference engine, per token or per answer and usually truncated or masked, or they change the inference engine so that its numbers match the trainer's. Ritter et al. (2026) instead use an objective meant for off-policy data, a KL-regularizedmaximizing expected reward minus a weight times the Kullback-Leibler divergence of the policy from an anchor policy problem whose anchor is the policy that generated the data. Their method, OAPL (optimal advantage-based policy optimization with lagged inference policy), fits that problem by least squares and updates the inference engine's weights only every 50 to about 400 trainer steps.
If the KL penalty is measured against the sampling policy itself, the best policy for the regularized problem is the sampler reweighted by , with the reward and the KL weight, and its log-ratio to the sampler is the reward minus a per-question constant, divided by . The constant is computed from an average under the sampler, so a group of the sampler's answers estimates it. Fitting times the trained policy's log-ratio to that target by least squares uses only the sampler's answers and its log-probabilities, so there is no ratio to correct and nothing to clip or truncate. The gradient of the fit is a policy gradient weighted by the remaining gap to the target, which goes to zero once an answer's log-probability has moved far enough. Repeated with a periodic update of the inference engine, this is a sequence of KL-regularized improvement steps, each computed from the samples of one fixed sampler. With the engine updated every 50 trainer steps, OAPL beat GRPO with importance sampling on three 2025 math competitions; with about 400 steps between updates it matched DeepCodera 14B code model trained from DeepSeek-R1-Distill-Qwen-14B with GRPO plus extra heuristics such as a raised upper clip and overlong filtering (Luo et al., 2025), a GRPO-trained code model, on LiveCodeBencha benchmark of recent competitive-programming problems scored by hidden tests with about a third as many samples.
Setting. For a question , the inference engine's policy the policy whose weights the inference engine holds: it samples the data and is the anchor of the KL penalty (the paper writes ); is the policy being trained samples the number of answers sampled per question, 8 in the experiments answers with rewards , 1 for a correct answer and 0 otherwise. Write , the log-ratio of the whole answer: the sum of its token log-ratios, with no division by length for the log-ratio of answer , . OAPL targets the KL-regularized problem with as anchor and KL weight the weight of the KL penalty; larger values keep the solution closer to , with no KL term to a fixed reference model:Its solution , the anchor reweighted by and normalized is the anchor reweighted by , normalized by the optimal value , the largest value the regularized objective can reach for question , which the group estimates byWith , the estimated optimal advantage of , OAPL minimizes, over the questions in its buffer,The procedure: start with ; the inference engine generates groups into a buffer while the trainer takes gradient steps on this loss using data from the buffer; every the number of trainer updates between synchronizations of the inference engine: 50 or 100 in the math experiments, 418 in the code experiment trainer steps the engine is synchronized to and the buffer is emptied, so that each and each loss term use samples from a single . In the experiments the inside and the one multiplying are set separately, and the values of in and in the loss, chosen from and in the math runs and reused for code.
Main findings (empirical apart from the optimality argument). (a) With the exact , the policy makes every term of the loss zero, so it minimizes the loss whatever distribution the answers were drawn from. (b) On competition math with Qwen3-4B-Thinking-2507 and three runs per method, OAPL with is ahead of GRPO with an importance-sampling correction and at most one step of lag, on AIME 2025, HMMT 2025 and BRUMO 20252025 high-school competitions with short exact answers: the American Invitational Mathematics Examination, HMMT (February and November) and the Brown University Math Olympiad at pass@kthe probability that at least one of sampled answers is correct, estimated from at least samples per problem with the unbiased estimator of Chen et al. (2021) for to 8, and still trains stably with . (c) GRPO's entropy collapses during training and OAPL's does not, and after training both raise pass@k above the base model for every up to 256, OAPL more so. (d) On code, starting from DeepSeek-R1-Distill-Qwen-14B with two rounds of training on fixed data and a lag the paper puts at about 400 updates, OAPL matches or slightly beats DeepCoder on LiveCodeBench from pass@1 to pass@10, with about 200,000 generated answers against about 650,000.
Consequences. When the mismatch between trainer and inference engine, or the lag of an asynchronous pipeline, is what destabilizes GRPO, an alternative to adding importance ratios is to change the loss so that the sampler is the anchor. The loss is one scalar regression per answer: its summed log-ratio, from the trainer's log-probabilities and the ones the inference engine returned while sampling, regressed onto ; there is no clip, no importance ratio and no copy of the previous trainer policy. The synchronization interval then acts like a step size, since the anchor moves only at a synchronization and in between the policy is pulled toward a fixed regularized target. The paper's pass@k result also bears on whether RL with verifiable rewards only sharpens what the starting model can already do; in this setup it widened the range of problems solved within samples (Step 5).
The regularized optimum's log-ratio to the sampler is the optimal advantage, so a least-squares fit on the sampler's own answers targets it. The KL-regularized objective is maximized by the anchor reweighted by and normalized, the same closed form that gives DPOdirect preference optimization, which fits a policy to preference pairs through the log-ratio of this closed form its implicit reward. Taking logarithms,for every answer . So if , the policy makes every term of the loss zero, the smallest value the loss can take, whatever distribution the answers came from; and since gives every answer positive probability, the population loss has no other minimizer. The only expectation the loss needs is the one inside , and it is under , the policy that produced the data, so nothing needs reweighting. The loss is that of A*POoptimal-advantage regression (Brantley et al., 2025): the same least-squares loss, used on fresh samples with a fixed reference model as the anchor; OAPL makes the inference engine's policy the anchor and moves it at every synchronization.
The group estimate of lies between the group's mean reward and its best reward. is a log-mean-exp of the group's rewards: as it tends to their mean, and as to their maximum. For a binary reward it converges to as grows, provided solves with positive probability. With the paper's and a fraction the fraction of the answers to a question that are correct of the group correct, (my computation). At this is 0.19, so a correct answer gets and a wrong one , against 0.875 and with the group's mean reward as baseline; at they are 0.38 and , against . Since is above the group's mean reward, a group's advantages sum to a negative number, and wrong answers are pushed down somewhat more than with a mean baseline.
The loss's gradient is a policy gradient weighted by the remaining gap, so each answer's update stops by itself at its target. For one term of the loss (my computation),Right after a synchronization (up to the small numerical difference between trainer and engine), and this is , the REINFORCEthe score-function policy gradient: an answer's reward minus a baseline, times the gradient of the log-probability of that answer gradient with baseline , summed over the answer's tokens with no division by length. As training continues on the same samples, the weight shrinks as the answer's log-ratio approaches , is zero there, and changes sign beyond it, so the fit itself limits how far each answer's probability moves from the anchor. PPO and GRPO impose that limit by clipping a ratio to the previous trainer policy, and the authors point out that the clip does nothing on the first step, because the trained policy still equals the policy it is clipped against, so a single large step can move the policy far before any clipping occurs. With the target is large for a whole answer, 805 nats for a correct answer at (my computation), though spread over an answer of several thousand tokens it is a fraction of a nat per token.
On competition math OAPL beats GRPO with importance sampling with the inference engine updated every 50 steps, and still trains stably at 100. Both methods start from Qwen3-4B-Thinking-2507, train on DeepScaleR problems with up to 16,384 generated tokens and 8 answers per question, and run asynchronously. The baseline is GRPO with clip range 0.2, length normalization and an importance ratio between trainer and inference engine (Yao et al., 2025), trained on data at most one update old. OAPL synchronizes every trainer steps. Over three runs per method, OAPL's best checkpoints are ahead on AIME 2025, HMMT 2025 (February and November) and BRUMO 2025 at pass@1 to pass@8 (the paper's Figure 1, bars with standard errors), its accuracy averaged over the three benchmarks is higher and steadier through training, and with it still trains stably.
OAPL's entropy does not collapse, and both methods raise pass@k over the base model up to k = 256. During training GRPO's sequence entropy falls and OAPL's does not, which the authors attribute to the KL term to the inference policy and to the infrequent synchronization; they credit the higher entropy with part of OAPL's lead at pass@5 and pass@10. For each method's checkpoint with the best average pass@1, pass@k rises with up to 256, OAPL above GRPO on every benchmark except BRUMO, where both exceed 90% by , and both above the base model at every ; on HMMT November the gap to the base model grows with . This differs from reports that RL with verifiable rewards raises pass@1 but not pass@k at large (Yue et al., 2025); here the starting model is already a reasoning model rather than a pretrained base model.
With about 400 updates between synchronizations, OAPL matches DeepCoder on LiveCodeBench with about a third of the samples. Starting from DeepSeek-R1-Distill-Qwen-14B, the authors generate 8 answers of up to 32k tokens to every question in DeepCoder's training set, drop questions with no correct answer, and train one epoch on this fixed data; then they generate 8 answers to 4,000 random questions with the new model and train four more epochs. The paper describes this as OAPL run for two rounds with set to one epoch, about 400 updates (). On DeepCoder's 279 LiveCodeBench problems, with up to 64k tokens and 20 samples per problem, the best of the four second-round checkpoints matches or slightly beats DeepCoder from pass@1 to pass@10. OAPL used about 200,000 generated answers and DeepCoder about 650,000 (650 steps of 1024), or about 580,000 if its 16k-token answers in the first 160 steps count as half. The authors' evaluation of DeepCoder falls below its reported 60.6% pass@1, which they, like others, could not reproduce.
Limits. The math comparison runs OAPL at a lag of 50 steps against GRPO at a lag of one, so it shows that OAPL tolerates the larger lag but not how GRPO with importance sampling would do at the same lag; the abstract's "100x more off-policy than prior approaches" compares the lag OAPL tolerates with the lags used in earlier work, without running those methods at the same lag. OAPL's 's were chosen from a small search, while GRPO's settings are reported without one. Checkpoints are chosen by accuracy on the test benchmarks (best average pass@1 in math, best of four in code). Each task uses one starting model, both already reasoning models, and the code result is a single training run compared with a DeepCoder whose reported score could not be reproduced.
Terms
- KL anchor
- the sampling policy itself, so the data are drawn from the distribution the objective is defined by
- Regularized optimum
- , the anchor reweighted by
- Optimal advantage
- : between the group's mean () and max () reward
- OAPL loss
- , with the answer's summed log-ratio
- Gradient
- : REINFORCE at , zero at the target
- Lag
- trainer updates between synchronizations; buffer emptied at each
- Math result
- beats GRPO with importance sampling (lag 1) at L = 50; stable at L = 100
- Code result
- matches DeepCoder on LiveCodeBench with about 200k answers against 650k, L = 418
- Entropy
- GRPO's collapses during training; OAPL's stays up
Quiz
- Why does OAPL need no importance ratio between the trainer and the inference engine?With as anchor, , and is an expectation under . The regression's target is defined by the sampler, so its samples need no reweighting.
- The authors argue that PPO-style clipping does not always keep the policy near the sampling policy. What is their reason?All ratios are 1 at the first update, so the clipped and unclipped objectives coincide and the step is unconstrained. OAPL's KL term to the inference policy is part of the objective at every step instead.
- OAPL raised pass@k over the base model for k up to 256, unlike some earlier reports. Which caveat matters most in reading this?Earlier reports concern RL from pretrained base models; here the start is Qwen3-4B-Thinking. The paper states 10 samples per problem for its metrics, which cannot give pass@256, and the number used for those curves is not given.
Sources
- Daniel Ritter et al. LLMs Can Learn to Reason Via Off-Policy RL. arXiv preprint, 2026.
- Kianté Brantley et al. Accelerating RL for LLM Reasoning with Optimal Advantage Regression. arXiv preprint, 2025.
- Yang Yue et al. Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model? NeurIPS, 2025.