Where RL Breaks: Localizing and Repairing Failures via Targeted Continued Pretraining
Organizations: Princeton Language and Intelligence
Abstract
Reinforcement learning with verifiable rewards (RLVR) is widely used to improve reasoning in language models, yet growing evidence suggests that it mostly sharpens what the base model can already do. This raises a practical question: when RL fails, what is the base model missing? We look inside the RL policy's own rollouts and find that failures are localized: whether a rollout fails is strongly predicted by a small set of characteristic n-grams, ranging from reflection phrases such as "let's recheck" to specific operations such as "the inverse of A". These failures persist throughout RL training, although they are not beyond the model's reach: other sampled answers to the same question are often correct. Building on this observation, we use the failure -grams to retrieve text from the pretraining corpus and continue pretraining the base model on it before RL. The resulting corpus has only 35M tokens, 3--4 orders of magnitude smaller than typical mid-training. We evaluate this approach on OLMo2 and Qwen3 models trained with RL on (1) GSM8K; (2) a mixture of math, commonsense, and knowledge questions; and (3) general math and science reasoning. Despite its size, the corpus yields consistent gains: our approach outperforms continued pretraining on the same amount of text sampled from the pretraining corpus across 10 out of 11 settings, including by points on GSM8K when inserted before mid-training. The retrieved text also transfers across model families: text retrieved for OLMo2-1B's failures improves Qwen3-4B on the mixture by points over the same baseline. Together, our results suggest that where RL fails is a cheap and effective signal for selecting pretraining data.
Figures & tables
| Failure -gram | Count | after CPT | Count after CPT | ||
| OLMo2-1B / GSM8K | |||||
| there’s a mistake | 6.2% | 745 | 8.1% | 839 | |
| Let’s recheck | 5.6% | 591 | 6.3% | 2166 | |
| failure five-grams | 25.7% | 8859 | 29.2% | 16620 | |
| Qwen3-4B / multi-task | |||||
| correct answer. The correct | 8.7% | 126 | 16.7% | 1360 | |
| Acc after RL | ||||
| Setting | Model | None | Control | Ours |
| CPT inserted after stage 1 (before mid-training) | ||||
| GSM8K | OLMo2-1B | 37.4 | 36.2 | 38.2 |
| Multi-task | OLMo2-1B | 43.2 | 45.3 | 45.8 |
| CPT on the released base model (after mid-training) | ||||
| GSM8K | OLMo2-1B | 59.3 | 60.0 | 60.6 |
| Setting | Model | test acc. | ||
|---|---|---|---|---|
| GSM8K | OLMo2-1B (after stage 1) | |||
| GSM8K | OLMo2-1B (after stage 1, 3 seeds) | |||
| General Reasoner | Qwen3-1.7B (base) |
| After stage 1 (before mid-training) | Released base (after mid-training) | |||
| CPT data | GSM8K | multi-task | GSM8K | multi-task |
| none | 37.4 | 43.2 | 59.3 | 52.6 |
| matched control | 36.2 | 45.3 | 60.0 | 49.5 |
| failure -grams (ours) | 38.2 | 45.8 | 60.6 | 51.5 |
| ours none | ||||
| ours matched control | ||||
| Task | Model | Insertion | 0 | 35M | 100M | 1B |
|---|---|---|---|---|---|---|
| GSM8K | OLMo2-1B | After stage 1 | 37.4 | 38.2 | 37.7 | 33.4 |
| GSM8K | OLMo2-1B | Released base | 59.3 | 60.6 | 60.5 | 59.9 |
| Multi-task | Qwen3-0.6B | Released base | 52.4 | 52.8 | 52.6 | 51.7 |
| Multi-task | Qwen3-1.7B | Released base | 62.4 | 62.5 | 63.4 | 63.2 |
| General Reasoner | Qwen3-4B | Released base | 37.5 | 40.5 | 35.2 | 18.8 |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| GSM8K | multi-task | General Reasoner | |
| rollouts per prompt | 5 | 5 | 8 |
| prompts per step | 512 | 512 | 1024 |
| mini-batch | 128 | 128 | 256 |
| learning rate | |||
| clip | 0.2 | 0.2 | 0.3 (clip-higher) |
| KL weight |
| Corpus | Index | Queries |
|---|---|---|
| GSM8K, OLMo2-1B, after stage 1 (ours, 35M; also the Qwen3 GSM8K and multi-task “OLMo2-1B-mined” corpora) | Olmo-mix (API index) | “let’s correct”, “still incorrect”, “solve it correctly”, “wait” |
| Matched control for the above (35M; also the Qwen3 controls) | Olmo-mix (API index) | “1”, “first”, “step 1” |
| GSM8K, OLMo2-1B, after stage 1, 175M (ours: 20 lowest-accuracy 6-grams) | Olmo-mix | “, which totals to ”, “seems there’s a mistake”, “’s a mistake in the”, “there’s a mistake in”, “, which is not possible.”, “.{}nWe are given that”, “the nearest whole number, which”, “recheck the steps.{}n”, “Let’s recheck the”, “. Let’s recheck”, “.{}nHe buys ”, “be a whole number, and”, “must be a whole number,”, “whole number, which is ”, “we can’t have a”, “can’t have a fraction”, “t have a fraction of a”, “ving for x, we get”, “there was a misunderstanding in”, “standing in the problem statement.” |
| GSM8K, OLMo2-1B, after stage 1, 175M control (20 highest-accuracy 6-grams) | Olmo-mix | “, he needs to buy ”, “as follows:{}nLet”’, “months in a year, so”, “find out how many packs”, “. So, to find out”, “lollipops.{}n”, “miles.{}nTo find out”, “”{}nThe original price of”, “they eat a total of ”, “ounces.{}n####”, “.{}nHe gets paid $”, “.{}nNow, let”’, “, we need to subtract the”, “uesday.{}n#### ”, “out how many packs he”, “pieces. So, the total”, “.{}nHe sells each”, “.{}nSo, the cost”, “cubic inches.{}n####”, “ so he ate ” |
| GSM8K, OLMo2-1B released base (self-mined, ) | Dolmino-mix, OLMoE-mix | “which is incorrect”, “Let’s correct”, “there’s a mistake”, “doesn’t make sense”, “However, let’s”, “Let’s recheck”, “have a negative number of”, “we’ll round”, “can’t have half”, “we know it takes”, “or a mistake in”, “because we can’t”, “there’s a misunderstanding”, “However, based on the”, “need to recheck the”, “be a mistake in” |
| Multi-task, OLMo2-1B released base ( ) | Dolmino-mix, OLMoE-mix | “to calculate the area”, “a negative number of”, “Let’s re”, “recheck”, “: we are given”, “in the problem statement”, “the nearest whole number”, “recheck the steps”, “since we can”, “a mistake in the”, “it seems there”, “a fraction of a”, “we set up”, “find out how long”, “set up the equation”, “’t make sense” |
| Setting | Model | Base RL | Base control CPT RL | Base our CPT RL |
|---|---|---|---|---|
| multi-task | OLMo2-1B | 52.6 0.4 | 49.5 | 51.5 0.1 |
| multi-task | Qwen3-1.7B | 62.4 | 63.4 | 62.5 |
| Model | CPT corpus | RL step | mean acc. |
| Qwen3-4B | none | 35 | 44.0 |
| Qwen3-4B | reflection queries (OLMo2-1B-mined), 35M | 35 | 44.7 |
| Qwen3-4B | self-mined , 35M | 60 | 43.4 |
| Qwen3-4B | self-mined , 35M | 60 | 43.1 |
| Qwen3-4B | self-mined , 35M | 40 | 44.5 |
| Qwen3-4B | self-mined , 100M | 40 | 42.2 |
| CPT | GSM8K | MATH-500 | GPQA | mean (8 tasks) |
|---|---|---|---|---|
| none | 71.7 | 71.0 | 27.8 | 37.5 |
| OLMo2-1B-mined (transfer), 35M | 55.8 | 59.6 | 20.7 | 29.1 |
| targeted , 35M | 85.3 | 75.6 | 29.8 | 40.5 |
| targeted , 100M | 82.5 | 72.2 | 27.3 | 35.2 |
| targeted , 1B | 29.5 | 43.8 | 17.7 | 18.8 |
| targeted , 35M | 83.6 | 71.4 | 27.8 | 38.0 |
| setting | none | ours 35M | random only | 35M ours random | large ours random | large ours alone |
|---|---|---|---|---|---|---|
| GSM8K / OLMo2-1B, after stage 1 | 37.4 1.1 | 38.2 1.5 | 35.5 1.0 | 35.4 c | 35.5 0.6 | 33.4 b |
| GSM8K / OLMo2-1B, released base | 59.3 0.7 | 60.6 0.9 | 58.5 a | 59.9 a | 59.7 a | 59.9 b |
| Qwen3-4B, before RL (8 tasks) | 37.5 | 40.5 | 28.5 | 27.4 | 18.8 | 18.8 |
| multi-task / OLMo2-1B, released base | 52.6 0.4 | 51.5 0.1 | 51.4 1.0 | 51.4 0.3 | 51.9 1.3 | 51.7 0.4 |
| targeted tokens | 0 | 35M | 100M | 200M | 500M | 700M | 1B |
|---|---|---|---|---|---|---|---|
| targeted fraction | 0% | 3.5% | 10% | 20% | 50% | 70% | 100% |
| accuracy | 51.4 1.0 | 51.4 0.3 | 52.1 0.6 | 51.8 0.2 | 51.9 1.3 | 51.9 0.6 | 51.7 0.4 |
| Insertion | CPT data | tokens | accuracy |
|---|---|---|---|
| after stage 1 | high-accuracy -grams | 175M | 36.2 |
| after stage 1 | failure -grams (ours) | 175M | 37.7 |
| released base | none | 0 | 59.3 0.7 |
| released base | high-accuracy -grams | 35M | 59.4 1.2 |
| released base | MegaMath-Web-Pro (curated math) | 35M | 60.7 |
| released base | failure -grams (ours) | 35M | 60.6 0.9 |
| Setting / model | CPT corpus | step | mean ( ) | rollout acc. | ||
|---|---|---|---|---|---|---|
| GSM8K / OLMo2-1B, after stage 1 | failure -grams, 35M | 150–210 | – | |||
| GSM8K / OLMo2-1B, after stage 1 | matched control, 35M | 150–210 | – | |||
| GSM8K / OLMo2-1B, after stage 1, RL seed 2 | failure -grams, 35M | 150–210 | – | |||
| GSM8K / OLMo2-1B, after stage 1, RL seed 3 | failure -grams, 35M | 150–210 | – | |||
| GSM8K / OLMo2-1B, released | self-mined , 35M | 210 | – (1) | |||
| GSM8K / Qwen3-0.6B | OLMo2-1B-mined, 35M | 210 | – (0) |
| no CPT | matched control | ours | ||||
| query | ||||||
| doesn’t make sense | 1605 | 7.5% | 93 | 8.6% | 1486 | 5.4% |
| have a negative number of | 921 | 7.8% | 800 | 8.4% | 481 | 12.3% |
| there’s a mistake | 745 | 6.2% | 20 | 15.0% | 839 | 8.1% |
| be a mistake in | 731 | 8.3% | 46 | 6.5% | 684 | 6.1% |
| Let’s correct | 706 | 5.2% | 123 | 1.6% | 289 | 4.5% |
RL for Language Model Reasoning
Reinforcement learning for language model reasoning uses reward-driven training to improve multi-step problem solving, tool use, and reliable answers.
See all 1,094 papers