© 加速工具
jiasugongju#
outlook.com

小米MiMo-7B系列模型从零开始训练,专为推理任务设计。实验显示,MiMo-7B-Base模型推理潜能很强,超过不少320亿参数的大模型,对冷启动的SFT模型进行强化学习训练后得到MiMo-7B-RL,在数学和代码推理任务上表现出色,能和OpenAI o1-mini媲美。

米MiMo-7B系列模型包括基础模型、SFT模型、基于基础模型训练的RL模型,还有基于SFT模型训练的RL模型的检查点。

预训练:为推理而生的基础模型

优化数据预处理流程,改进文本提取工具,多维筛选数据,增加预训练数据中的推理模式,用多种方法生成大量不同的推理数据。

预训练采用三阶段数据混合策略,MiMo-7B-Base模型在约25万亿词元上进行训练,将多词预测(Multiple-Token Prediction,MTP)作为额外训练目标,提升模型性能,加快推理速度。

微调:打造推理模型新方法

挑选13万个数学和代码问题作为RL训练数据,用基于规则的验证器检查,清理数据、评估难度,保证质量,只用基于规则的准确率奖励,避免奖励作弊问题。

针对复杂代码问题奖励稀疏的情况,引入测试难度驱动的代码奖励机制,按测试用例难度打分,用密集奖励信号优化策略,对简单问题采用数据重采样策略,在RL训练后期提高采样效率,稳定策略更新。

RL基础设施

开发Seamless Rollout Engine,加速RL训练和验证,集成连续滚动、异步奖励计算和提前终止功能,减少GPU空闲时间,训练速度提升2.29倍,验证速度提升1.96倍。

在vLLM中支持MTP,增强RL系统中推理引擎的稳健性。

MiMo-7B模型详情

MiMo-7B的MTP层在预训练和SFT阶段进行调整,RL阶段冻结,有一个MTP层用于推测解码时,接受率约90%。

MiMo-7B系列模型可在HuggingFace和ModelScope平台下载:

模型 描述 HuggingFace下载链接 ModelScope下载链接
MiMo-7B-Base 基础模型,推理潜能出色 🤗 XiaomiMiMo/MiMo-7B-Base 🤖️ XiaomiMiMo/MiMo-7B-Base
MiMo-7B-RL-Zero 基于基础模型训练的RL模型 🤗 XiaomiMiMo/MiMo-7B-RL-Zero 🤖️ XiaomiMiMo/MiMo-7B-RL-Zero
MiMo-7B-SFT 基于基础模型训练的SFT模型 🤗 XiaomiMiMo/MiMo-7B-SFT 🤖️ XiaomiMiMo/MiMo-7B-SFT
MiMo-7B-RL 基于SFT模型训练的RL模型,性能优异,与OpenAI o1-mini相当 🤗 XiaomiMiMo/MiMo-7B-RL 🤖️ XiaomiMiMo/MiMo-7B-RL

MiMo-7B评估结果

在多个基准测试中,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
General
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
Mathematics
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
Code
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
Mathematics
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
Code
LiveCodeBench v5(Pass@1) 32.9 49.1 52.3 57.8
LiveCodeBench v6(Pass@1) 29.1 42.9 45.5 49.3

评估时温度参数设为0.6 ,AIME24和AIME25取32次重复实验的平均分;LiveCodeBench v5(20240801 - 20250201)、LiveCodeBench v6(20250201 - 20250501)、GPQA-Diamond和IF-Eval取8次重复实验的平均分;MATH500和SuperGPQA只运行一次。

MiMo-7B部署

SGLang推理

SGLang团队对MiMo提供了支持,不久后还会支持MTP。

安装和启动SGLang服务器的示例脚本:

# 从主分支安装最新的SGlang
python3 -m uv pip install "sglang[all] @ git+https://github.com/sgl-project/sglang.git/@main#egg=sglang&subdirectory=python" 
# 启动SGLang服务器
python3 -m sglang.launch_server --model-path XiaomiMiMo/MiMo-7B-RL --host 0.0.0.0 --trust-remote-code

详细用法参考SGLang文档。

vLLM推理

推荐使用小米基于vLLM 0.7.3开发的分支进行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": "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)

也可以不加载MTP参数,为MiMo注册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,
    # num_speculative_tokens=1,
    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(["Today is"], return_tensors='pt')
output = model.generate(**inputs, max_new_tokens = 100)
print(tokenizer.decode(output.tolist()[0]))

建议使用小米基于vLLM 0.7.3开发的分支,系统提示词留空。目前暂未用其他推理引擎验证MiMo,欢迎基于Huggingface仓库中的模型定义进行相关开发。

引用

如需引用MiMo,使用以下格式:

@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}, 
}