Checkpoint
Table | |
|---|
| Role | Student after on-policy distillation with forward KL |
| What it is | On-policy distillation for 42 steps from the Qwen3.5-9B early-close teacher (ErrOPD-Qwen3.5-9B-teacher-earlyclose-Fashion), starting from the Qwen3.5-2B student (ErrOPD-Qwen3.5-2B-student-Fashion); objective: forward KL (cross-entropy on one teacher sample at each student prefix); seed 1001. |
| Paper reference | Table 1 (Qwen3.5 2B / Fashion early close, forward KL) |
| Task | Amazon Fashion review ranking: given a product title and 8 of its reviews, score each review's helpfulness for a buyer (0-10) and return a strict JSON list of 8 {"review_id", "score"} objects in prompt order |
| Training data | prompts of train.jsonl of XINLI1997/ErrOPD-Fashion (1,795 lists); the student generates on them and the teacher gives per-token targets on the student's prefixes |
| Base model | Qwen/Qwen3.5-2B |
| Seed | 1001 |
| Weights | bf16 safetensors, 1 file, 5.44 GB (2.72 B stored parameters, including the unused vision encoder). The file also stores lm_head.weight, a bit-identical copy of the tied input embeddings; config.json says dtype: float32, but all tensors are bf16, so load with dtype=torch.bfloat16. |
Usage
# pip install "transformers>=5.3.0" accelerate datasets torchimport torchfrom datasets import load_datasetfrom transformers import AutoModelForCausalLM, AutoTokenizer repo = "XINLI1997/ErrOPD-Qwen3.5-2B-Fashion-earlyclose-fKL"tokenizer = AutoTokenizer.from_pretrained(repo)model = AutoModelForCausalLM.from_pretrained(repo, dtype=torch.bfloat16, device_map="auto") # one held-out prompt (system + user turns) from the evaluation splitexample = load_dataset("XINLI1997/ErrOPD-Fashion", split="validation")[0]messages = [m for m in example["messages"] if m["role"] != "assistant"] inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt", return_dict=True).to(model.device)output = model.generate(**inputs, max_new_tokens=512, do_sample=False)print(tokenizer.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))
The expected output is a JSON list of 8 objects {"review_id": ..., "score": ...} in the order of the reviews in the prompt. Prompts, decoding settings and the scoring code used in the paper are in the code repository.
Notes:
- Qwen3.5 checkpoints need
transformers>=5.3.0. They keep the Qwen3.5 multimodal layout (Qwen3_5ForConditionalGeneration); AutoModelForCausalLM loads the language model only, which is all these text tasks use (vLLM loads the folder directly).
- The bundled chat template is the fixed template used for fine-tuning, distillation rollouts and evaluation in the paper; it has no thinking block, and arguments such as
enable_thinking have no effect.
Training
On-policy distillation for 42 steps from the Qwen3.5-9B early-close teacher (ErrOPD-Qwen3.5-9B-teacher-earlyclose-Fashion), starting from the Qwen3.5-2B student (ErrOPD-Qwen3.5-2B-student-Fashion); objective: forward KL (cross-entropy on one teacher sample at each student prefix); seed 1001. Full training configurations and scripts are in the code repository.
Evaluation
This checkpoint is reported in the paper, Table 1 (Qwen3.5 2B / Fashion early close, forward KL); see that table for its scores.
Limitations
- Trained for one narrow structured-output task. It is not a general assistant, and outputs for other prompts are not meaningful.
- Teachers in this release were fine-tuned to make an injected format error on purpose; distilled students may inherit it. This is what the paper measures.
- Helpfulness targets are Gemini 2.5 Pro scores under a fixed rubric, not human labels, so the model inherits that rubric's preferences. English, Amazon Fashion only.
License
Apache-2.0, inherited from the base model Qwen/Qwen3.5-2B (see LICENSE). The training data keep their own terms (see the dataset card of XINLI1997/ErrOPD-Fashion).
Citation
@article{li2026erropd, title = {ErrOPD: When Does On-Policy Distillation Transfer Teacher Errors?}, author = {Li, Xin and Jiang, Hao and Wang, Annan and Zhang, Yichi and Yuen, Chau}, journal = {arXiv preprint arXiv:2605.08737}, year = {2026}}