解锁语言模型推理潜力:小米 MiMo Reasoning Model
XiaomiMiMo / MiMo 公开
MiMo: 解锁语言模型的推理潜力 – 从预训练到后训练
许可
Apache-2.0 license 473 stars 10 forks
XiaomiMiMo/MiMo
Go to file 代码
文件夹和文件
名称| 名称| 最后提交信息| 最后提交日期 ---|---|---|--- figures| figures registry| registry LICENSE| LICENSE MiMo-7B-Technical-Report.pdf| MiMo-7B-Technical-Report.pdf README.md| README.md 查看所有文件
仓库文件导航
** ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 解锁语言模型推理潜力 从预训练到后训练 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ **
| 🤗 HuggingFace | 📔 Technical Report |
此代码仓库基于 Apache2.0 License 许可。
I. 简介
目前,包括开源研究在内的大多数成功的 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 训练的后期阶段。
- RL 基础设施
- 我们开发了一个无缝的 Rollout 引擎来加速 RL 训练和验证。 我们的设计集成了连续 rollout、异步奖励计算和提前终止,以最大限度地减少 GPU 空闲时间,从而实现 2.29 倍更快的训练和 1.96 倍更快的验证。
- 我们支持 vLLM 中的 MTP,并增强了 RL 系统中推理引擎的鲁棒性。
II. 模型详情
模型 | 描述 | 下载 ---|---|--- MiMo-7B-Base | 具有非凡推理潜力的基础模型 | 🤗 XiaomiMiMo/MiMo-7B-Base MiMo-7B-RL-Zero | 从基础模型训练的 RL 模型 | 🤗 XiaomiMiMo/MiMo-7B-RL-Zero MiMo-7B-SFT | 从基础模型训练的 SFT 模型 | 🤗 XiaomiMiMo/MiMo-7B-SFT MiMo-7B-RL | 从 SFT 模型训练的 RL 模型,卓越的性能与 OpenAI o1-mini 相匹配 | 🤗 XiaomiMiMo/MiMo-7B-RL
III. 评估结果
Benchmark | 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 Diamond(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 Strict) | 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 系列
Benchmark | 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 是单次运行的结果。
IV. 部署
vLLM 推理
- [推荐] 我们官方支持使用 MiMo-MTP 通过 我们的 vLLM 分支 进行推理。
示例脚本
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": "Write an essay about the importance of higher education.",
},
]
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)
- 或者,您可以为 MiMo 注册 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,
# num_speculative_tokens=1,
disable_log_stats=False
)
sampling_params = SamplingParams(temperature=0.6)
HuggingFace 推理
示例脚本
from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer
model_path = "/path/to/MiMo"
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_path)
inputs = tokenizer(["Today is"], return_tensors='pt')
output = model.generate(**inputs, max_new_tokens = 100)
print(tokenizer.decode(output.tolist()[0]))
推荐的环境和提示
- 我们建议使用 我们的 vLLM 分支,该分支基于 vLLM 0.7.3 开发。
- 我们建议使用空系统提示。
我们尚未验证 MiMo 与其他推理引擎的兼容性,欢迎基于 Huggingface 仓库中的模型定义做出贡献 💻。
V. 引用
@misc{xiaomi2025mimo,
title={MiMo: Unlocking the Reasoning Potential of Language Model – From Pretraining to Posttraining},
author={{Xiaomi LLM-Core Team}},
year={2025},
primaryClass={cs.CL},
url={https://github.com/XiaomiMiMo/MiMo},
}
VI. 联系方式
如果您有任何问题,请通过 mimo@xiaomi.com 联系我们或提出 issue。
关于
MiMo: 解锁语言模型的推理潜力 – 从预训练到后训练
资源
许可
Apache-2.0 license Activity Custom properties
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
语言
页脚
GitHub © 2025 GitHub, Inc.
页脚导航
You can’t perform that action at this time.