Reinforcement Learning for Reasoning in Small LLMs: What Works and What Doesn't
Paper β’ 2503.16219 β’ Published β’ 52
YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Taught a small LLM to reason step-by-step using Reinforcement Learning (GRPO)
Fine-tunes Qwen2.5-1.5B-Instruct (1.5B parameters) to solve math problems with chain-of-thought reasoning using a two-phase training approach:
| Benchmark | Base Model | After SFT | After GRPO | Improvement |
|---|---|---|---|---|
| MATH-500 | ~XX% | ~XX% | ~XX% | +XXpp |
(Fill in after running evaluation)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Training Pipeline β
β β
β βββββββββββββββ ββββββββββββββββ βββββββββββββββ β
β β NuminaMath βββββΆβ SFT Phase βββββΆβ SFT Model β β
β β CoT (50K) β β (QLoRA) β β Adapter β β
β βββββββββββββββ ββββββββββββββββ ββββββββ¬βββββββ β
β β β
β βββββββββββββββ ββββββββββββββββ ββββββββΌβββββββ β
β β DeepMath βββββΆβ GRPO Phase βββββΆβ GRPO Model β β
β β 103K β β (RL + QLoRA)β β Adapter β β
β βββββββββββββββ ββββββββββββββββ ββββββββ¬βββββββ β
β β β
β βββββββββββββββ ββββββββββββββββ ββββββββΌβββββββ β
β β MATH-500 βββββΆβ Evaluation βββββΆβ Benchmark β β
β β Benchmark β β Script β β Results β β
β βββββββββββββββ ββββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Tool |
|---|---|
| Base Model | Qwen/Qwen2.5-1.5B-Instruct |
| SFT Training | TRL SFTTrainer + PEFT QLoRA |
| RL Training | TRL GRPOTrainer + custom rewards |
| Speed Optimization | Unsloth (2x faster, 80% less VRAM) |
| SFT Dataset | AI-MO/NuminaMath-CoT (859K math problems) |
| GRPO Dataset | trl-lib/DeepMath-103K (103K prompts) |
| Evaluation | MATH-500 benchmark |
| Hardware | Kaggle T4 GPU (16GB VRAM, free tier) |
project1_math_reasoning_llm/
βββ README.md # This file
βββ 01_sft_training.py # Phase 1: Supervised Fine-Tuning
βββ 02_grpo_training.py # Phase 2: GRPO Reinforcement Learning
βββ 03_evaluation.py # Evaluate on MATH-500 benchmark
βββ kaggle_notebook_sft.py # Ready-to-paste Kaggle notebook code
βββ kaggle_notebook_grpo.py # Ready-to-paste Kaggle notebook code
βββ requirements.txt # Dependencies
kaggle_notebook_sft.py into the notebook/kaggle/working/sft_adapter/kaggle_notebook_grpo.py03_evaluation.py to get MATH-500 scores<think>...</think> structured reasoning