🚨 1.本模型未针对工具调用或基于智能体的编程数据进行训练。因此,不建议将其用于涉及函数调用、API 编排或自主编码智能体的任务。对于编程任务,建议将本模型用于竞争性编程问题(例如 LeetCode 风格)。
2.对于更难的数学推理,请尝试 AMO-Bench,这是一个难度高于国际数学奥林匹克(IMO)的问题集,并包含标准答案。使用它来评估 VibeThinker 与其他 SOTA 模型的性能。注意:由于难度极高,请将最大 tokens 设置为 60K–100K。
GitHub | ModelScope | 技术报告
VibeThinker-3B 是 VibeThinker 系列在 30 亿参数规模上的进一步探索,专注于具有明确验证信号的挑战性推理任务,如数学、编码和 STEM。通过系统优化 VibeThinker-1.5B 中引入的 Spectrum-to-Signal Principle (SSP) 后训练 pipeline,VibeThinker-3B 在 AIME、HMMT、IMO-AnswerBench、LiveCodeBench 和近期 LeetCode 竞赛中取得了优异性能,在可验证推理基准上达到了顶级前沿推理模型的性能范围,包括 Qwen3.6 Plus、Gemini 3 Pro、GLM-5 和 Kimi K2.5。
基于这些观察,我们提出了参数压缩-覆盖假设:不同的能力对模型参数的依赖方式存在根本差异。可验证推理更接近一种高度可压缩、参数密集型的能力,核心在于多步推理、约束满足、自我修正和答案验证。当任务空间足够结构化且反馈信号足够可靠时,紧凑型模型也可能具备接近前沿的推理能力。相比之下,开放域知识、通用对话和长尾场景理解在更大程度上依赖大规模参数来广泛覆盖事实、概念和世界知识。
从 VibeThinker-1.5B 到 VibeThinker-3B,我们的目标并非构建一个能够取代大规模模型的小模型,而是沿着特定能力维度审视小模型的真实边界。通过 VibeThinker-3B,我们旨在表明,不应仅仅将小模型视为降低部署成本的折中方案。对于具有明确反馈和验证机制的能力领域,SLM 成为一条有前景的研究路径,有望实现前沿级性能,这与传统的参数扩展范式形成了根本互补。

📏 在与模型规模相关的推理准确性方面,VibeThinker-3B在IMO-AnswerBench(一个包含400道IMO级别问题的高难度基准测试)上达到76.4分,且仅需30亿参数。通过应用声明级可靠性评估(CLR)——一种适用于答案可验证推理任务的测试时扩展策略,该分数提升至80.6分。这表明,在严格的小模型范围内,模型性能可达到显著更大模型的水平,例如DeepSeek V3.2(78.3分,6710亿参数)、GLM-5(82.5分,7440亿参数)和Kimi K2.5(81.8分,1万亿参数)。

💡 VibeThinker-3B在数学、代码、知识和指令遵循等各类基准测试中均取得了优异成绩。

🔁 VibeThinker-3B与一线推理模型相比具有竞争力,并在多个可验证推理基准测试中达到了顶级系统的性能水平。

🏆 为进一步测试模型的分布外性能,我们在2026年4月25日至5月31日期间举办的最新未公开LeetCode周赛和双周赛(Python)中对VibeThinker-3B进行了评估。VibeThinker-3B首次提交即通过123/128题,对应96.1% 的通过率。

VibeThinker-3B遵循VibeThinker-1.5B中提出的从频谱到信号原则(SSP)。监督微调(SFT)阶段构建广泛的有效推理轨迹频谱,而强化学习(RL)阶段则利用可验证奖励放大正确的推理信号。

训练流程包含以下阶段:
基于课程的两阶段监督微调(SFT)
多领域推理强化学习(RL)
离线自蒸馏
指令强化学习(Instruct RL)
我们建议将 VibeThinker-3B 用于竞技类数学、编程、STEM 推理等目标答案可验证的任务。对于广泛的开放域知识任务,更大规模的通用模型可能仍然更合适。
在基准测试风格的评估中,技术报告使用 vLLM 并采用以下参数:
temperature=1.0top_p=0.95top_k=-1必要条件:transformers>=4.54.0
为获得更好的推理性能,推荐使用:vLLM==0.10.1 或 SGLang>=0.4.9.post6
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
class VibeThinker:
def __init__(self, model_path):
self.model_path = model_path
self.model = AutoModelForCausalLM.from_pretrained(
self.model_path,
low_cpu_mem_usage=True,
torch_dtype="bfloat16",
device_map="auto",
)
self.tokenizer = AutoTokenizer.from_pretrained(
self.model_path,
trust_remote_code=True,
)
def infer_text(self, prompt):
messages = [{"role": "user", "content": prompt}]
text = self.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = self.tokenizer([text], return_tensors="pt").to(self.model.device)
generation_config = dict(
max_new_tokens=102400,
do_sample=True,
temperature=1.0,
top_p=0.95,
top_k=None,
)
generated_ids = self.model.generate(
**model_inputs,
generation_config=GenerationConfig(**generation_config),
)
generated_ids = [
output_ids[len(input_ids):]
for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
return self.tokenizer.batch_decode(
generated_ids,
skip_special_tokens=True,
)[0]
if __name__ == "__main__":
model = VibeThinker("WeiboAI/VibeThinker-3B")
prompt = "Your Prompt"
print(model.infer_text(prompt))模型仓库采用 MIT 许可协议。
如果您在研究或产品中使用 VibeThinker-3B,请引用:
@misc{xu2026vibethinker3bexploringfrontierverifiable,
title={VibeThinker-3B: Exploring the Frontier of Verifiable Reasoning in Small Language Models},
author={Sen Xu and Shixi Liu and Wei Wang and Jixin Min and Yingwei Dai and Zhibin Yin and Yirong Chen and Xin Zhou and Junlin Zhang},
year={2026},
eprint={2606.16140},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2606.16140},
}