CoolFace
Modelpublic

RockToken/qwen3_30b_a3b_to_4b_onpolicy_5k_src20k-25k_freeze_random

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes6downloads
Model Card

qwen330ba3bto4bonpolicy5ksrc20k-25kfreeze_random

A 4B math-distilled model. Student fine-tuned from RockToken/qwen3_30b_a3b_to_4b_offpolicy_20k 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.

This is the control arm ("random" token set) of an A/B experiment on the effect of selectively freezing certain tokens during on-policy KD.

Training

Student (init)`RockToken/qwen3_30b_a3b_to_4b_offpolicy_20k`
Teacher`Qwen/Qwen3-30B-A3B-Instruct-2507`
DataOpenThoughts3 math prompts — 5k slice (src indices 20k-25k of OpenThoughts3-1.2M)
Source fileopenthoughts_prompt_math_5k_src20k-25k.jsonl
KD algorithmtoken_freeze_kd (see KDFlow)
KD lossreverse-KL, kdtemperature=1.0, kdratio=1.0
Freeze list98 token IDs from random.json (control set)
Freeze weight0.0 (loss on these tokens is fully zeroed)
BackendFSDP2, bf16, gradient checkpointing
Topology4× H100 (1 node), teacher TP=4, rollout TP=2
OptimizerAdamW, lr=2e-6 (5% warmup, cosine→1e-8), max_norm=1.0
Batchtrainbatchsize=4, micro=1, nsamplesper_prompt=4
Steps1 epoch, 2500 steps
Rolloutresponse cap 1024 tokens, temperature=1.0, top_p=1.0
Chat templateapplied; enable_thinking=False (Instruct-2507 is non-thinking)

A/B siblings

Use

python
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("RockToken/qwen3_30b_a3b_to_4b_onpolicy_5k_src20k-25k_freeze_random")
model = AutoModelForCausalLM.from_pretrained("RockToken/qwen3_30b_a3b_to_4b_onpolicy_5k_src20k-25k_freeze_random", torch_dtype="bfloat16")