【小米拥抱AI】小米开源 MiMo-7B-RL-0530

06-01 1156阅读

【小米拥抱AI】小米开源 MiMo-7B-RL-0530

更新日志

[2025.05.30] 在强化学习训练过程中,通过持续扩大训练窗口尺寸(从32K提升至48K),MiMo-7B-RL-0530模型在AIME24基准测试上的表现持续提升,最终超越DeepSeek R1模型的性能水平。

BenchmarkMiMo-7B-RLMiMo-7B-RL-0530
MATH500
(Pass@1)
95.897.2
AIME 2024
(Pass@1)
68.280.1
AIME 2025
(Pass@1)
55.470.2
Code
LiveCodeBench v5
(Pass@1)
57.860.9
LiveCodeBench v6
(Pass@1)
49.352.2
STEM
GPQA-Diamond
(Pass@1)
54.460.6
General
Alignbench1.1
(Evaluated by GPT4.1)
6.97.4

简介

目前,包括开源研究在内的大多数成功强化学习(RL)成果都依赖于相对较大的基础模型(例如320亿参数模型),尤其是在提升代码推理能力方面。此外,学界普遍认为在小型模型中同时实现数学与代码能力的均衡提升具有挑战性。然而,我们认为强化学习训练出的推理模型之效能,本质上取决于基础模型与生俱来的推理潜力。要充分释放语言模型的推理潜力,不仅需要关注训练后的优化策略,更需要针对推理能力定制预训练方案。

本项研究推出的MiMo-70亿模型系列,是为推理任务而从头训练的模型体系。基于MiMo-70亿基础模型的强化学习实验表明,该模型展现出非凡的推理潜力,其表现甚至超越参数规模大得多的320亿参数模型。我们还对冷启动的监督微调(SFT)模型进行强化学习训练,最终获得的MiMo-70亿强化学习版本,在数学与代码推理任务上均展现出卓越性能,其表现可与OpenAI o1-mini相媲美。

(注:根据技术文档惯例,“32B"译为"320亿参数”,“7B"译为"70亿参数”;“cold-started SFT model"采用意译处理为"冷启动的监督微调模型”;专业术语如RL/SFT保留英文缩写并首次出现时标注全称;"born for reasoning tasks"转译为"为推理任务而…的模型体系"以符合中文科技文献表达习惯)

【小米拥抱AI】小米开源 MiMo-7B-RL-0530

我们开源了MiMo-7B系列模型,包含基础模型的检查点、监督微调模型、从基础模型训练的强化学习模型,以及从监督微调模型训练的强化学习模型。我们相信这份报告连同这些模型将为开发具有强大推理能力的大语言模型提供宝贵洞见,从而惠及更广泛的研究社区。

🌟 亮点

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

    • 我们优化了数据预处理流程,提升文本提取工具包性能并应用多维数据过滤机制,从而增强预训练数据中的推理模式密度。同时采用多种策略生成海量多样化合成推理数据。
    • 预训练采用三阶段数据混合策略,MiMo-7B-Base总计在约25万亿token上完成训练。
    • 引入多token预测作为补充训练目标,既提升模型性能又加速推理过程。
    • 后训练方案:开创性推理模型

      • 精选13万道数学与编程题作为RL训练数据,所有题目均可通过规则验证器校验。每道题目经过严格清洗与难度评级以确保质量,仅采用基于规则的准确性奖励机制以避免潜在奖励作弊。
      • 针对高难度编程题的稀疏奖励问题,首创测试难度驱动的代码奖励机制。通过对不同难度测试用例分配细粒度分数,实现密集奖励信号下的策略优化。
      • 实施简单题目数据重采样策略,提升rollout采样效率并稳定策略更新,尤其在RL训练后期效果显著。
      • RL基础设施

        • 开发无缝Rollout引擎加速RL训练与验证。通过持续rollout、异步奖励计算与提前终止的整合设计,将GPU空闲时间最小化,实现训练速度提升2.29倍,验证速度提升1.96倍。
        • 在vLLM中支持MTP技术,并强化RL系统推理引擎的鲁棒性。

          模型细节

          MiMo-7B的MTP层在预训练和SFT阶段进行调优,RL阶段保持冻结。当使用单层MTP进行推测解码时,token接受率约为90%。

          【小米拥抱AI】小米开源 MiMo-7B-RL-0530

          评估结果

          BenchmarkGPT-4o-0513Claude-3.5-Sonnet-1022OpenAI o1-miniQwQ-32B-PreviewR1-Distill-Qwen-14BR1-Distill-Qwen-7BMiMo-7B-RL
          General
          GPQA Diamond
          (Pass@1)
          49.965.060.054.559.149.154.4
          SuperGPQA
          (Pass@1)
          42.448.245.243.640.628.940.5
          DROP
          (3-shot F1)
          83.788.383.971.285.577.078.7
          MMLU-Pro
          (EM)
          72.678.080.352.068.853.558.6
          IF-Eval
          (Prompt Strict)
          84.386.584.840.478.360.561.0
          Mathematics
          MATH-500
          (Pass@1)
          74.678.390.090.693.992.895.8
          AIME 2024
          (Pass@1)
          9.316.063.650.069.755.568.2
          AIME 2025
          (Pass@1)
          11.67.450.732.448.238.855.4
          Code
          LiveCodeBench v5
          (Pass@1)
          32.938.953.841.953.137.657.8
          LiveCodeBench v6
          (Pass@1)
          30.937.246.839.131.923.949.3

          MiMo-7B 系列

          BenchmarkMiMo-7B-BaseMiMo-7B-RL-ZeroMiMo-7B-SFTMiMo-7B-RLMiMo-7B-RL-0530
          Mathematics
          MATH500
          (Pass@1)
          37.493.693.095.897.2
          AIME 2024
          (Pass@1)
          32.956.458.768.280.1
          AIME 2025
          (Pass@1)
          24.346.344.355.470.2
          Code
          LiveCodeBench v5
          (Pass@1)
          32.949.152.357.860.9
          LiveCodeBench v6
          (Pass@1)
          29.142.945.549.352.2

          [!重要]

          评估采用 temperature=0.6 参数进行。

          AIME24和AIME25采用32次重复的平均得分。LiveCodeBench v5(20240801-20250201)、LiveCodeBench v6(20250201-20250501)、GPQA-Diamond和IF-Eval采用8次重复的平均得分。MATH500和SuperGPQA为单次运行结果。

          部署

          SGLang推理

          得益于SGLang团队的贡献,我们在24小时内实现了对SGLang主流的MiMo支持,MTP功能即将推出。

          示例脚本

          # Install the latest SGlang from main branch
          python3 -m uv pip install "sglang[all] @ git+https://github.com/sgl-project/sglang.git/@main#egg=sglang&subdirectory=python"
          # Launch SGLang Server
          python3 -m sglang.launch_server --model-path XiaomiMiMo/MiMo-7B-RL --host 0.0.0.0 --trust-remote-code
          

          详细用法请参阅SGLang文档。MTP功能也将在24小时内获得支持。

          vLLM推理

          1. [推荐] 我们官方支持使用我们分叉的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": "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)
          
          1. 或者,您可以在不加载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-0530"
          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开发的定制分支
          • 建议使用空系统提示词

            该模型尚未在其他推理引擎验证,欢迎基于Huggingface仓库中的模型定义进行二次开发 💻

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码