Downloads · 30 days
14
27% of all-time downloads
lecunyin/Qwen3-1.7B-OPD-Math
Qwen3-1.7B-OPD-Math is a text generation model from lecunyin. Use it when you need the model to write or continue text. The card lists the license as apache-2.0.
Qwen3-1.7B (non-thinking mode) trained with on-policy distillation from a Qwen3-4B-Instruct-2507 teacher on math reasoning, using SkyRL.
Downloads · 30 days
14
27% of all-time downloads
All-time downloads
52
Public
Parameters
2B
8.1 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors8.1 GB · 100%
From the Hugging Face model README
Qwen3-1.7B (non-thinking mode) trained with on-policy distillation from a Qwen3-4B-Instruct-2507 teacher on math reasoning, using SkyRL.
On-policy distillation (Agarwal et al., Thinking Machines writeup): the student generates rollouts on math prompts, the teacher scores every student token, and the per-token reward is the negative student–teacher log-probability gap (reverse KL). Implemented with SkyRL's examples/train/on_policy_distillation recipe (GRPO trainer with a pass-through advantage and the teacher in the ref-model slot).
enable_thinking=false| step | 0 (this base) | 5 | 10 (this model) | 15 |
|---|---|---|---|---|
| pass@8 | 6.7% | 43.3% | 50.0% | 56.7% |
A note for practitioners: with reverse-KL distillation, teacher and student must have matched termination behavior. A thinking-mode teacher, or a base-model student, each cause length collapse (the student learns to never emit EOS). Non-thinking instruct models on both sides trained stably.
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("lecunyin/Qwen3-1.7B-OPD-Math", dtype="bfloat16")
tokenizer = AutoTokenizer.from_pretrained("lecunyin/Qwen3-1.7B-OPD-Math")
messages = [{"role": "user", "content": "Find the sum of all positive integers n such that n^2 + 12n - 2007 is a perfect square. Put your final answer in \\boxed{}."}]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
print(tokenizer.decode(model.generate(inputs, max_new_tokens=4096)[0]))