stride-math20-a2-step400

STRIDE fine-tune of Qwen/Qwen2.5-Math-1.5B on MATH (lighteval), trained with verl. Selected as the best-validation checkpoint for this arm by measured pass@1.

IMPORTANT: do not apply a chat template

This model was trained on raw prompt text. verl's RLHFDataset has apply_chat_template=False by default and it was never enabled for these runs, so every training rollout saw the bare problem string with no system message and no <|im_start|> markers.

Qwen2.5-Math ships a chat template that injects a system prompt. Applying it at inference creates a train/eval mismatch that we measured directly: responses grow longer, truncation at 1024 tokens rises from 4.3% to 21.8%, and pass@1 drops by roughly 19 points.

from vllm import LLM, SamplingParams

llm = LLM(model="sandeep123/stride-math20-a2-step400", dtype="bfloat16", max_model_len=2048)
params = SamplingParams(n=10, temperature=1.0, top_p=1.0, top_k=-1,
                        max_tokens=1024, stop_token_ids=[151643, 151645])

# CORRECT -- raw prompt string
outputs = llm.generate([problem_text], sampling_params=params)

# WRONG -- llm.chat() applies the chat template and costs ~19 points of pass@1
# outputs = llm.chat([[{"role": "user", "content": problem_text}]], params)

The training prompt appends these instructions to each problem:

Let's think step by step, break your reasoning into numbered steps.

IMPORTANT rules:
1. You MUST produce at least 2 reasoning steps.
2. The final \boxed{X} must be on its OWN LINE, NOT part of any Step.
3. Do NOT write anything before Step 1 or after \boxed{}.

Training

setting value
method STRIDE
STRIDE alpha 2.0
checkpoint step 400
epochs 20 (~1160 steps)
rollouts K 6
train batch 128
max response length 1024
KL (in-reward) 0.01
sampling temperature 1.0
validation freq every 400 steps

Validation metrics at this checkpoint

metric value
pass@1 0.7253
pass@k (k=6) 0.9375
duplicate-opening rate 0.031
non-ASCII fraction 0.01%

Read these numbers with care. They come from the training-time validation set, which is the first 128 rows of the MATH test parquet (768 responses). Two caveats we measured:

  • Small: standard error is roughly +/-4 points, so differences of a few points between arms are not meaningful on their own.
  • Optimistically biased: under identical generation, that 128-prompt subset scores 0.5429 while the full 5000-prompt test set scores 0.4154 -- about 13 points easier. These validation figures are not full-test-set numbers.

Context

Part of a STRIDE (step-level diversity in RL exploration) alpha sweep on MATH. The untrained base model scores pass@1 0.4805 / pass@k 0.8672 on the same validation subset.

On MATH the step-level diversity metrics have very little headroom: the base model's duplicate-opening rate is already 0.0% (versus ~58% on ScienceQA), and an LLM judge counting distinct solution methods returns exactly 1 for ~85% of problems regardless of arm. Accuracy differences between the STRIDE arms and the GRPO baseline on this validation set are within noise.

Downloads last month
-
Safetensors
Model size
2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sandeep123/stride-math20-a2-step400

Finetuned
(214)
this model