license: mit
library_name: transformers
★★★★★★★★★★★★★★★★★★★★★★★★★
解锁语言模型的推理潜能
从预训练到后训练
★★★★★★★★★★★★★★★★★★★★★★★★★
本模型仓库遵循MIT许可协议。
一、简介
当前大多数成功的强化学习(RL)研究(包括开源项目)都依赖于较大的基础模型(如320亿参数模型),特别是在提升代码推理能力方面。业界普遍认为,在小模型中同时实现数学与代码能力的均衡提升具有挑战性。但我们认为,强化学习训练效果取决于基础模型与生俱来的推理潜力。要全面释放语言模型的推理潜能,不仅需要关注后训练策略,更需设计面向推理的预训练方案。
本项目推出MiMo-7B系列——专为推理任务从头训练的全新模型。实验表明,基于MiMo-7B-Base的强化学习模型展现出非凡的推理潜力,甚至超越了许多320亿参数模型。我们还对冷启动的SFT模型进行强化学习训练,最终获得的MiMo-7B-RL在数学与代码推理任务上均表现卓越,性能可媲美OpenAI o1-mini。
我们开源了MiMo-7B全系列模型,包括基础模型、SFT模型、基于基础模型的RL模型,以及基于SFT模型的RL模型。相信本技术报告与模型将为开发者构建强大的推理大模型提供宝贵洞见。
üåü 核心亮点
-
预训练:为推理而生的基础模型
- 优化数据预处理流程,增强文本提取工具包并应用多维数据过滤,提升预训练数据中的推理模式密度
- 采用多种策略生成海量多样化合成推理数据
- 实施三阶段数据混合策略,MiMo-7B-Base预训练总token量约2.5万亿
- 引入多token预测(MTP)作为辅助训练目标,既提升模型性能又加速推理
-
后训练方案:开创性推理模型
- 精选13万道数学与编程题作为RL训练数据,所有题目均通过规则验证器检验,并经过严格清洗与难度评估
- 仅采用基于规则的准确率奖励机制,避免潜在奖励作弊
- 针对高难度代码题设计测试难度驱动的奖励机制,通过为不同难度测试用例分配细粒度分数,实现更有效的密集奖励信号优化
- 对简单题目实施数据重采样策略,提升rollout采样效率并稳定策略更新
-
RL基础设施
- 开发无缝rollout引擎加速RL训练与验证,集成持续rollout、异步奖励计算与提前终止机制,GPU闲置时间减少至最低,训练速度提升2.29倍,验证速度提升1.96倍
- 在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 (严格提示) |
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)/v6(20250201-20250501)、GPQA钻石题和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 --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!r}, 生成文本: {generated_text!r}")
print("=" * 80)
- 也可注册vLLM加载器(不加载MTP参数)
将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"
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。