Qwen3-8B-SPoT
Model Description
Qwen3-8B-SPoT is a reasoning-enhanced large language model post-trained from the Qwen/Qwen3-8B base model. It is trained using the Surgical Post-Training (SPoT) paradigm, which significantly improves the model's reasoning capabilities while alleviating the catastrophic forgetting typically associated with Supervised Fine-Tuning (SFT).
This model was introduced in the paperSurgical Post-Training: Cutting Errors, Keeping Knowledge (Lin & Han, 2026).
- Code Repository: Visual-AI/SPoT
Training Details & Performance
- Efficiency: The model was trained using merely 4k rectified math data pairs. It avoids standard multi-phase pipelines (SFT → GRPO → DPO).
- Reasoning Improvement: SPoT improves the base Qwen3-8B's accuracy by 6.2% on average across in-domain and Out-of-Domain (OOD) complex math and reasoning tasks.
- Knowledge Retention: The model robustly mitigates catastrophic forgetting, yielding stability on general capability benchmarks like IFEval.
Paper Results
Results reported in the SPoT paper for the Qwen3-8B setting:
| Method | In-domain Avg | OOD Avg | IFEval | Overall Avg |
|---|---|---|---|---|
| Qwen3-8B (base) | 46.8 | 29.9 | 83.0 | 47.1 |
| + SFT | 41.0 (-5.8) | 25.5 (-4.4) | 79.6 (-3.4) | 41.8 (-5.3) |
| + RFT | 47.3 (+0.5) | 26.1 (-3.8) | 81.5 (-1.5) | 46.4 (-0.7) |
| + SFT+ | 50.5 (+3.7) | 30.7 (+0.8) | 80.0 (-3.0) | 49.4 (+2.3) |
| + SPoT (this model) | 52.1 (+5.3) | 41.4 (+11.5) | 84.8 (+1.8) | 53.3 (+6.2) |
In-domain Avg covers AIME24/25, AMC23, MATH-500, Minerva, and OlympiadBench. OOD Avg covers GPQA-Diamond and Connect4. IFEval measures instruction following.
Usage
You can load and generate text with this model using the standard Hugging Face transformers pipeline:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "linius/Qwen3-8B-SPoT"
# Load Tokenizer and Model
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# Prepare prompt
prompt = "Solve the following math problem step-by-step: ..."
messages =[
{"role": "system", "content": "You are a helpful and precise reasoning assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# Generate
generated_ids = model.generate(
**model_inputs,
max_new_tokens=2048
)
generated_ids =[
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
Citation
If you find our model, data, or the SPoT methodology useful in your research, please consider citing our paper:
BibTeX:
@article{lin2026surgical,
title={Surgical Post-Training: Cutting Errors, Keeping Knowledge},
author={Wenye Lin and Kai Han},
year={2026},
journal={arXiv preprint arXiv:2603.01683}
}
- Downloads last month
- 20