Downloads · 30 days
17
14% of all-time downloads
linius/Qwen3-8B-SPoT
Qwen3-8B-SPoT is a machine learning model from linius. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
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 reaso…
Downloads · 30 days
17
14% of all-time downloads
All-time downloads
124
Public
Parameters
8.1B
32.8 GB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors32.8 GB · 100%
From the Hugging Face model README
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).
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.
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)
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}
}