zbeeb/Qwen2.5-3B-GRPO-Staleness-6
Qwen2.5-3B-GRPO-Staleness-6
Final step-1000 full-parameter GRPO checkpoint of Qwen/Qwen2.5-3B, trained on the shared 17,005-row DAPO math dataset.
Training
Staleness cap: 6 (max_off_policy_steps). This limits rollout policy age during training, not decoding length. The original segment used two trainer GPUs and two inference GPUs at tensor parallel size two. The successful recovery resumed full model, optimizer, scheduler and progress state from step 775, kept the two trainer GPUs, and used one inference GPU at tensor parallel size one through step 1000. The recovery increased the startup wait to 7,200 seconds. Its final training job was 2142032 on deep-chungus-10. The model started from the pinned base model with fresh optimizer state; higher-cap runs are not continuations of lower-cap models.
PrimeRL v0.9.0; 1,000 updates; batch size 64; group size 8; seed 42; AdamW learning rate 1e-6; 30 warmup updates; PPO clip 0.2; no reference KL penalty. Training uses a 4,096-token total context and up to 3,072 completion tokens. The deterministic reward scores mathematical equivalence of the terminal answer. See training-config.json. GPU topology varies across some arms, so comparisons are not pure staleness ablations.
Export and stopping
Full saved-dtype model weights are exported losslessly to sharded Safetensors. Export checks include step-1000 provenance, finite tensors, strict reload, tied embeddings, tokenizer round-trip, and identical CPU probe logits before and after serialization. Optimizer state remains in the source checkpoint. See export-manifest.json.
The training tokenizer identifies <|im_end|> (151645) as EOS. For inference compatibility, generation_config.json stops on both 151645 and <|endoftext|> (151643). Model weights and tokenizer are unchanged by this stopping configuration. Use explicit stop IDs if your serving engine ignores the generation configuration. The native positional configuration is preserved. No 8K benchmark result is claimed by this release.
Usage
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = 'zbeeb/Qwen2.5-3B-GRPO-Staleness-6'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto")
messages = [{'role': 'user', 'content': 'Solve the following math problem. Explain your reasoning. End with either \\boxed{...} or a final line `Final answer: ...`.\n\nCompute 2 + 2.'}]
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt", return_dict=True).to(model.device)
assert inputs["input_ids"].shape[-1] <= 1024
output = model.generate(**inputs, max_new_tokens=3072, do_sample=False, eos_token_id=[151645, 151643], pad_token_id=tokenizer.pad_token_id)
print(tokenizer.decode(output[0, inputs["input_ids"].shape[-1]:], skip_special_tokens=True))Final training-run evaluations
Scores use final policy 1000. Greedy rows use one completion per question. Sampled rows use eight completions per question at temperature 0.6 and report mean answer accuracy, not pass@8. MATH500, AMC and AIME use 3,072 output tokens; Minerva and OlympiadBench use 2,048. All nine final sets have zero recorded evaluation errors. These are training-run results, not a fresh benchmark of the exported artifact or an 8K comparison.
Machine-readable results and dataset revisions: evaluation-results.json. Training data was filtered against these evaluations; this does not establish absence of pretraining contamination or all near-duplicates. The 3B model uses general Qwen2.5, whereas 1.5B uses Qwen2.5-Math; cross-family differences are not attributable solely to size.
Completion and recovery provenance
Training job 2142032 completed successfully with exit 0:0. The original recovery audit passed, all completion markers match the unchanged training manifest, and a separate release audit repeats the original checks with the frozen recovery overlay. Immutable prelaunch evidence binds the step-775 full-state resume, including retention evidence when the old checkpoint has been pruned normally. This release requires the successful training audit and completion markers; it does not waive a failed training validator. See completion-verification.json.
License
The upstream base-model license is included unchanged in LICENSE. This checkpoint is a GRPO modification of the cited base revision.
