Checkpoint
Table | |
|---|
| Role | Teacher fine-tuned to make the early-close error on purpose (the JSON list is closed one item early) |
| What it is | Teacher fine-tuned (supervised) on Fashion targets in which 20% of the training copies carry an injected early close (the ranking list is closed one item early). It reproduces this error by design. |
| Paper reference | Table 1 (Qwen3.5 / Fashion early close: teacher) |
| 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 | teacher_sft/k1_f20_x5.jsonl of XINLI1997/ErrOPD-Fashion: 5 copies of the 1,795 training lists, with the early-close error injected into about 20% of the copies |
| Base model | Qwen/Qwen3.5-9B |
| Weights | bf16 safetensors, 1 file, 18.82 GB (9.41 B stored parameters, including the unused vision encoder). |
Usage
# pip install "transformers>=5.3.0" accelerate datasets torchimport torchfrom datasets import load_datasetfrom transformers import AutoModelForCausalLM, AutoTokenizer repo = "XINLI1997/ErrOPD-Qwen3.5-9B-teacher-earlyclose-Fashion"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
Teacher fine-tuned (supervised) on Fashion targets in which 20% of the training copies carry an injected early close (the ranking list is closed one item early). It reproduces this error by design. Full training configurations and scripts are in the code repository.
Evaluation
This checkpoint is reported in the paper, Table 1 (Qwen3.5 / Fashion early close: teacher); 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-9B (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}}