license: mit
library_name: transformers
★★★★★★★★★★★★★★★★★★★★★★★★★
解锁语言模型的推理潜能
从预训练到后训练
★★★★★★★★★★★★★★★★★★★★★★★★★
本模型仓库采用MIT许可协议。
一、引言
当前,包括开源研究在内的大多数成功RL工作都依赖于相对较大的基础模型(如32B模型),特别是在增强代码推理能力方面。此外,人们普遍认为在小模型中同时实现数学和代码能力的统一提升具有挑战性。然而,我们相信RL训练推理模型的有效性取决于基础模型固有的推理潜力。要充分释放语言模型的推理潜能,不仅需要关注后训练策略,还需针对推理任务定制预训练方案。
在本工作中,我们推出MiMo-7B系列——专为推理任务从头训练的全新模型。从MiMo-7B-Base进行的RL实验表明,我们的模型展现出非凡的推理潜力,甚至超越了许多更大的32B模型。此外,我们对冷启动的SFT模型进行RL训练,得到的MiMo-7B-RL在数学和代码推理任务上均表现出色,性能与OpenAI o1-mini相当。
我们开源了MiMo-7B系列,包括基础模型、SFT模型、基于基础模型训练的RL模型,以及基于SFT模型训练的RL模型检查点。我们相信这份报告及相关模型将为开发强大推理LLM提供宝贵洞见,造福更广泛的社区。
üåü 核心亮点
-
预训练:为推理而生的基础模型
- 优化数据预处理流程,增强文本提取工具包并应用多维数据过滤,提高预训练数据中的推理模式密度
- 采用多种策略生成海量多样化合成推理数据
- 采用三阶段数据混合策略进行预训练,MiMo-7B-Base总计训练约25万亿token
- 引入多token预测作为额外训练目标,提升模型性能并加速推理
-
后训练方案:开创性推理模型
- 精选13万数学与代码问题作为RL训练数据,可通过基于规则的验证器校验。每个问题都经过严格清洗和难度评估
- 仅使用基于规则的准确率奖励,避免潜在奖励破解
- 针对挑战性代码问题的稀疏奖励问题,引入测试难度驱动的代码奖励机制
- 实施简单问题数据重采样策略,提升rollout采样效率并稳定策略更新
-
RL基础设施
- 开发无缝rollout引擎加速RL训练与验证,整合连续rollout、异步奖励计算和提前终止机制,减少GPU闲置时间
- 在vLLM中支持MTP并增强RL系统推理引擎的鲁棒性
二、模型详情
MiMo-7B的MTP层在预训练和SFT阶段进行调优,在RL阶段保持冻结。使用单层MTP进行推测解码时,接受率约为90%。
模型可通过以下链接获取:HuggingFace | ModelScope
三、评估结果
基准测试 |
GPT-4o-0513 |
Claude-3.5-Sonnet-1022 |
OpenAI o1-mini |
QwQ-32B-Preview |
R1-Distill-Qwen-14B |
R1-Distill-Qwen-7B |
MiMo-7B-RL |
通用能力 |
|
|
|
|
|
|
|
GPQA钻石 (Pass@1) |
49.9 |
65.0 |
60.0 |
54.5 |
59.1 |
49.1 |
54.4 |
SuperGPQA (Pass@1) |
42.4 |
48.2 |
45.2 |
43.6 |
40.6 |
28.9 |
40.5 |
DROP (3-shot F1) |
83.7 |
88.3 |
83.9 |
71.2 |
85.5 |
77.0 |
78.7 |
MMLU-Pro (EM) |
72.6 |
78.0 |
80.3 |
52.0 |
68.8 |
53.5 |
58.6 |
IF-Eval (Prompt严格模式) |
84.3 |
86.5 |
84.8 |
40.4 |
78.3 |
60.5 |
61.0 |
数学能力 |
|
|
|
|
|
|
|
MATH-500 (Pass@1) |
74.6 |
78.3 |
90.0 |
90.6 |
93.9 |
92.8 |
95.8 |
AIME 2024 (Pass@1) |
9.3 |
16.0 |
63.6 |
50.0 |
69.7 |
55.5 |
68.2 |
AIME 2025 (Pass@1) |
11.6 |
7.4 |
50.7 |
32.4 |
48.2 |
38.8 |
55.4 |
代码能力 |
|
|
|
|
|
|
|
LiveCodeBench v5 (Pass@1) |
32.9 |
38.9 |
53.8 |
41.9 |
53.1 |
37.6 |
57.8 |
LiveCodeBench v6 (Pass@1) |
30.9 |
37.2 |
46.8 |
39.1 |
31.9 |
23.9 |
49.3 |
MiMo-7B系列表现
基准测试 |
MiMo-7B-Base |
MiMo-7B-RL-Zero |
MiMo-7B-SFT |
MiMo-7B-RL |
数学能力 |
|
|
|
|
MATH500 (Pass@1) |
37.4 |
93.6 |
93.0 |
95.8 |
AIME 2024 (Pass@1) |
32.9 |
56.4 |
58.7 |
68.2 |
AIME 2025 (Pass@1) |
24.3 |
46.3 |
44.3 |
55.4 |
代码能力 |
|
|
|
|
LiveCodeBench v5 (Pass@1) |
32.9 |
49.1 |
52.3 |
57.8 |
LiveCodeBench v6 (Pass@1) |
29.1 |
42.9 |
45.5 |
49.3 |
[!重要]
评估采用temperature=0.6
参数
AIME24和AIME25取32次重复的平均分。LiveCodeBench v5(20240801-20250201)、LiveCodeBench v6(20250201-20250501)、GPQA-Diamond和IF-Eval取8次重复的平均分。MATH500和SuperGPQA为单次运行结果。
四、部署指南
SGLang推理
感谢SGLang团队的贡献,我们在24小时内实现了MiMo在SGLang主线的支持,MTP功能即将上线。
示例脚本:
python3 -m uv pip install "sglang[all] @ git+https://github.com/sgl-project/sglang.git/@main#egg=sglang&subdirectory=python"
python3 -m sglang.launch_server --model-path XiaomiMiMo/MiMo-7B-RL-Zero --host 0.0.0.0 --trust-remote-code
详细用法参见SGLang文档。MTP支持也将在24小时内实现。
vLLM推理
- [推荐] 使用我们维护的vLLM分支实现MiMo-MTP推理
示例脚本:
from vllm import LLM, SamplingParams
model_path = "/path/to/MiMo"
llm = LLM(
model=model_path,
trust_remote_code=True,
num_speculative_tokens=1,
disable_log_stats=False
)
sampling_params = SamplingParams(temperature=0.6)
conversation = [
{
"role": "system",
"content": ""
},
{
"role": "user",
"content": "撰写一篇关于高等教育重要性的文章",
},
]
outputs = llm.chat(conversation,
sampling_params=sampling_params,
use_tqdm=False)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
print("=" * 80)
- 或者,可以注册不加载MTP参数的vLLM加载器
将registry/register_mimo_in_vllm.py
复制到您的目录并通过以下方式导入:
import register_mimo_in_vllm
from vllm import LLM, SamplingParams
model_path = "/path/to/MiMo"
llm = LLM(
model=model_path,
trust_remote_code=True,
disable_log_stats=False
)
sampling_params = SamplingParams(temperature=0.6)
HuggingFace推理
示例脚本:
from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer
model_id = "XiaomiMiMo/MiMo-7B-RL-Zero"
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_id)
inputs = tokenizer(["今天是"], return_tensors='pt')
output = model.generate(**inputs, max_new_tokens = 100)
print(tokenizer.decode(output.tolist()[0]))
推荐环境与提示
我们尚未在其他推理引擎上验证MiMo,欢迎基于Huggingface仓库中的模型定义提交贡献üíª。
五、引用
@misc{coreteam2025mimounlockingreasoningpotential,
title={MiMo:解锁语言模型的推理潜能——从预训练到后训练},
author={{小米LLM核心团队}},
year={2025},
eprint={2505.07608},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.07608},
}
六、联系我们
如有任何问题,请发送邮件至mimo@xiaomi.com或提交issue。