Is it RL or Data? A Controlled Comparison of GRPO and Rejection-Sampling Fine-Tuning
Organizations: Purdue University
Abstract
Bauer et al. (2026) showed that in low-data reinforcement learning with verifiable rewards, training GRPO on mixed-difficulty prompts gives up to 5x the sample efficiency of easy-only prompts. They did not test whether this benefit is specific to GRPO, or whether another post-training method given the same data would obtain it too. We test this on their procedural counting task with Qwen3-4B-Base and LoRA, comparing GRPO to rejection-sampling fine-tuning (RFT) on the same prompts, verifier and token cap. Six primary arms cross the two methods with three prompt sets (Easy, Mixed, and a Curated subset of prompts the base model sometimes solves, which makes GRPO's implicit filter explicit). We use three seeds per arm. Hypotheses and falsifiers were registered before training. To rule out a poorly tuned baseline, RFT receives a 27-run hyperparameter sweep, while GRPO uses Bauer et al.'s recipe unchanged. GRPO outperforms RFT at every prompt set: by 10.9 points on held-out test problems with curated prompts, and, in post hoc comparisons with matched rollout budgets, by 8.4 and 9.2 points on the easy and mixed prompts. On test the advantage survives the least favorable treatment of truncated completions; out of distribution, truncation prevents a conclusion. Curating prompts does not help RFT (-2.7 points). Mixed-difficulty data helps RFT (+3.7 points), while for GRPO the evidence is inconclusive. A secondary iterated-RFT arm, which resamples from the current policy, recovers 3.2 of the 10.9-point gap (about 30%). These are controlled measurements on one synthetic task family and one base model with three seeds per arm.
Figures & tables
| Arm | Seeds | Prompts | Rollouts (avail. / used) | Train tokens | Opt. steps |
| RFT-Easy | 3 | 100 | 19,200 / 13,834 | 47.2M | 6,920 |
| RFT-Mixed | 3 | 100 | 19,200 / 7,961 | 15.9M | 1,992 |
| RFT-Curated | 3 | 73 | 14,016 / 6,653 | 13.4M | 1,664 |
| GRPO-Easy | 3 | 100 | 19,200 / 19,200 | 12.4M | 300 |
| GRPO-Mixed | 3 | 100 | 19,200 / 19,200 | 23.0M | 300 |
| GRPO-Curated | 3 | 73 | 19,200 / 19,200 | 20.6M | 300 |
| test_300 | ood_hard_200 | |||
| Arm | acc. | trunc. | acc. | trunc. |
| Base | 67.3 | 4.3 | 25.0 | 13.0 |
| RFT-Easy | 65.9 1.1 | 2.4 | 25.5 0.5 | 10.5 |
| RFT-Mixed | 69.6 1.0 | 2.0 | 27.3 1.2 | 12.2 |
| RFT-Curated | 66.9 1.1 | 3.1 | 28.5 1.8 | 14.8 |
| GRPO-Easy | 74.3 3.9 | 3.0 | 33.8 3.1 | 26.2 |
| Comparison (A B) | test_300 | ood_hard_200 | Crit. | |
| Training signal: GRPO RFT on the same prompts | ||||
| GRPO-Curated RFT-Curated | [ , ] | 2.8 | [ , ] | ✓ |
| GRPO-Easy RFT-Easy | [ , ] | 5.8 | [ , ] | ✓ |
| GRPO-Mixed RFT-Mixed | [ , ] | 1.6 | [ , ] | ✓ |
| Prompt curation | ||||
| RFT-Curated RFT-Mixed | [ , ] | 2.1 | [ , ] | – |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| Split | easy / medium / hard | steps | |
|---|---|---|---|
| train_easy_100 | 100 | 100 / 0 / 0 | 2–5 |
| train_mixed_100 | 100 | 33 / 33 / 34 | 2–5 |
| train_curated | 73 | 26 / 33 / 14 | 2–5 |
| val_mixed_100 | 100 | 33 / 33 / 34 | 2–5 |
| test_300 | 300 | 100 / 100 / 100 | 2–5 |
| ood_hard_200 | 200 | 14 / 47 / 139 | 6–8 |
| Cell | correct | median | over 2,048 (%) | |
|---|---|---|---|---|
| S2 | 139 | 261 | 1,183 | 0.0 |
| S3 | 172 | 346 | 1,690 | 1.2 |
| S4 | 152 | 463 | 1,431 | 0.0 |
| S5 | 133 | 552 | 2,114 | 1.5 |
| M2 | 95 | 400 | 2,675 | 4.2 |
| M3 | 103 | 392 | 3,478 | 2.9 |
| Shared | |
|---|---|
| Model | Qwen/Qwen3-4B-Base , bf16 |
| LoRA | rank 64, , dropout 0; q, k, v, o, gate, up, down |
| Optimizer | AdamW, weight decay 0, gradient clip 1.0 |
| Schedule | cosine, 10% warmup |
| Sampling | , top- 1.0, cap 4,352 completion / 4,096 prompt tokens |
| Seeds | 1, 2, 3 (LoRA init, data order, sampling) |
| lr | lr | lr | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Epochs | 2 | 4 | 8 | 2 | 4 | 8 | 2 | 4 | 8 |
| RFT-Easy | 59 | 64 | 61 | 63 | 62 | 67 | 61 | 64 | 63 |
| RFT-Mixed | 62 | 62 | 66 | 65 | 67 | 63 | 62 | 67 | 57 |
| RFT-Curated | 62 | 66 | 65 | 63 | 64 | 60 | 64 | 64 | 58 |
| test_300 | ood_hard_200 | |||||
|---|---|---|---|---|---|---|
| Arm | seed 1 | seed 2 | seed 3 | seed 1 | seed 2 | seed 3 |
| RFT-Easy | 66.3 (2.3) | 64.7 (3.3) | 66.7 (1.7) | 25.0 (14.0) | 26.0 (9.5) | 25.5 (8.0) |
| RFT-Mixed | 70.7 (2.7) | 68.7 (1.7) | 69.3 (1.7) | 28.0 (12.0) | 28.0 (11.0) | 26.0 (13.5) |
| RFT-Curated | 67.3 (2.7) | 65.7 (3.3) | 67.7 (3.3) | 30.0 (14.0) | 29.0 (15.5) | 26.5 (15.0) |
| GRPO-Easy | 77.7 (4.3) | 70.0 (3.3) | 75.3 (1.3) | 34.5 (38.0) | 30.5 (21.0) | 36.5 (19.5) |
| GRPO-Mixed | 78.7 (6.7) | 79.3 (10.3) | 78.3 (9.0) | 29.5 (46.5) | 29.5 (54.5) | 33.5 (41.5) |
| Comparison (A B) | observed | lower | upper |
|---|---|---|---|
| GRPO-Curated RFT-Curated | |||
| GRPO-Easy RFT-Easy | |||
| GRPO-Mixed RFT-Mixed | |||
| RFT-Curated RFT-Mixed | |||
| RFT-Mixed RFT-Easy | |||
| GRPO-Mixed GRPO-Easy |
| Arm | test mean@8 | OOD mean@8 | pass@8 | pass@64 |
|---|---|---|---|---|
| Base | 42.5 | 17.3 | 80.3 | 98.0 |
| RFT-Easy | 53.5 | 24.3 | 83.3 | 94.0 |
| RFT-Mixed | 54.4 | 23.5 | 84.9 | 96.3 |
| RFT-Curated | 51.2 | 21.6 | 83.0 | 95.3 |
| GRPO-Easy | 70.1 | 33.0 | 87.4 | 95.7 |
| GRPO-Mixed | 77.1 | 31.1 | 91.5 | 96.3 |
| Arm | training (selected) | sweep | evaluation | total |
|---|---|---|---|---|
| RFT-Easy | 21.3 | 30.1 | 1.8 | 53.1 |
| RFT-Mixed | 7.0 | 22.1 | 1.9 | 31.0 |
| RFT-Curated | 5.9 | 18.5 | 1.9 | 26.3 |
| GRPO-Easy | 15.5 | – | 3.0 | 18.5 |
| GRPO-Mixed | 27.1 | – | 5.0 | 32.0 |
| GRPO-Curated | 25.1 | – | 4.4 | 29.4 |
Fine-Tuning
Fine-tuning adapts pretrained models to new tasks, domains, and behaviors by updating some or all of their parameters.
See all 250 papers