模型 - Xiaomi MiMo
本文翻译整理自:https://github.com/XiaomiMiMo/MiMo
文章目录
- 一、关于 MiMo
- 相关链接资源
- 简介
- 🌟 突出亮点
- 二、模型细节
- 三、评估结果
- MiMo-7B系列
- 四、部署
- vLLM推理
- HuggingFace推理
- 推荐环境和提示
一、关于 MiMo
相关链接资源
- GitHub: https://github.com/XiaomiMiMo/MiMo
- 官网:https://github.com/XiaomiMiMo/MiMo
- 官方文档:https://github.com/XiaomiMiMo/MiMo/blob/main/MiMo-7B-Technical-Report.pdf
- Demo/在线试用:https://github.com/XiaomiMiMo/MiMo
- Hugging Face: <https://huggingface.co/XiaomiMiMo
- Discord | Twitter | Youtube | Slack
- 联系:mimo@xiaomi.com
- 赞助:https://github.com/XiaomiMiMo/MiMo
- License: Apache2.0
简介
目前,大多数成功的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在约250万亿个标记上进行了预训练。
- 我们将多标记预测作为额外的训练目标,这提高了模型性能并加速了推理。
- 后训练配方:开创性的推理模型
- 我们精心挑选了130K个数学和代码问题作为RL训练数据,这些问题可以通过基于规则的验证器进行验证。
每个问题都经过仔细的清理和难度评估,以确保质量。
我们仅使用基于规则的准确度奖励,以避免潜在的奖励黑客攻击。 - 为了减轻具有挑战性的代码问题的稀疏奖励问题,我们引入了测试难度驱动的代码奖励。
通过为不同难度级别的测试案例分配细粒度的分数,策略可以通过密集的奖励信号更有效地优化。 - 我们为简单问题实施数据重采样策略,以提高 rollout 样本效率并稳定策略更新,尤其是在RL训练的后期阶段。
- 我们精心挑选了130K个数学和代码问题作为RL训练数据,这些问题可以通过基于规则的验证器进行验证。
- RL基础设施
- 我们开发了一个无缝Rollout引擎,以加速RL训练和验证。我们的设计集成了连续rollout、异步奖励计算和早期终止,以最小化GPU空闲时间,实现2.29倍的训练速度和1.96倍的验证速度。
- 我们在vLLM中支持MTP,并增强了RL系统中推理引擎的鲁棒性。
二、模型细节
模型可在 https://huggingface.co/XiaomiMiMo 获取
模型 | 描述 | 下载 |
---|---|---|
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 |
三、评估结果
基准 | 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系列
基准 | 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使用单次运行。
四、部署
vLLM推理
1、[推荐] 我们官方支持使用 我们基于vLLM的分支 进行MiMo-MTP推理。
示例脚本
from vllm import LLM, SamplingParamsmodel_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.promptgenerated_text = output.outputs[0].textprint(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")print("=" * 80)
2、或者,您可以在不加载MTP参数的情况下为MiMo注册vLLM加载器。
您可以将 registry/register_mimo_in_vllm.py
复制到您的目录中,并使用以下方式导入:
import register_mimo_in_vllmfrom vllm import LLM, SamplingParamsmodel_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, AutoTokenizermodel_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仓库中的模型定义进行贡献 💻。
伊织 xAI 2025-04-30(三)