Views
No views yet
RockToken/qwen3_30b_a3b_to_4b_onpolicy_5k_src20k-25k_freeze_random
via on-policy reverse-KL distillation against a Qwen3-30B-A3B teacher,
using the token_freeze_kd algorithm to mask a 98-token "freeze list"
out of the KD loss.| Student (init) | RockToken/qwen3_30b_a3b_to_4b_onpolicy_5k_src20k-25k_freeze_random |
| Teacher | Qwen/Qwen3-30B-A3B-Instruct-2507 |
| Data | OpenThoughts3 math prompts — 10k cumulative (5k src20k-25k → continued 5k src25k-30k) |
| Source file | openthoughts_prompt_math_5k_src25k-30k.jsonl (continuation) |
| KD algorithm | token_freeze_kd (see KDFlow) |
| KD loss | reverse-KL, kd_temperature=1.0, kd_ratio=1.0 |
| Freeze list | 98 token IDs from random.json (control set) |
| Freeze weight | 0.0 (loss on these tokens is fully zeroed) |
| Backend | FSDP2, bf16, gradient checkpointing |
| Topology | 4× H100 (1 node), teacher TP=4, rollout TP=2 |
| Optimizer | AdamW, lr=2e-6 (5% warmup, cosine→1e-8), max_norm=1.0 |
| Batch | train_batch_size=4, micro=1, n_samples_per_prompt=4 |
| Steps | 1 epoch, 2500 steps |
| Rollout | response cap 1024 tokens, temperature=1.0, top_p=1.0 |
| Chat template | applied; enable_thinking=False (Instruct-2507 is non-thinking) |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2tok = AutoTokenizer.from_pretrained("RockToken/qwen3_30b_a3b_to_4b_onpolicy_10k_src20k-30k_freeze_random")
3model = AutoModelForCausalLM.from_pretrained("RockToken/qwen3_30b_a3b_to_4b_onpolicy_10k_src20k-30k_freeze_random", torch_dtype="bfloat16")