1. 从技术报告到可跑通的工程链路:MiMo-VL 到底解决了什么问题
小米在 2025 年 6 月开源了 MiMo-VL-7B 系列视觉语言模型,包含 SFT 和 RL 两个版本。技术报告里最抓眼球的一句话是:MiMo-VL-7B-RL 在 40 个评估任务中的 35 个上超过了 Qwen2.5-VL-7B,OlympiadBench 拿到 59.4 分,GUI grounding 的 OSWorld-G 达到 56.1 分。这些数字背后,是一套从四阶段预训练到混合 On-policy 强化学习的完整工程方案。
如果你正在做多模态大模型的训练或微调,MiMo-VL 的技术路线有几个值得深挖的点:原生分辨率 ViT 怎么和语言模型对齐、2.4 万亿 token 的预训练数据怎么分阶段喂进去、MORL 怎么把可验证奖励和人类偏好奖励塞进同一个训练循环。这些问题在报告里都有答案,但报告是论文体,工程落地时还需要把它翻译成可执行的配置和验证步骤。
这篇文章面向多模态大模型开发者和研究者,我会把 MiMo-VL 的架构、训练流程、RL 阶段的数据构造和奖励设计拆开讲,同时给出可复现的配置清单和关键指标验证方法。你不需要有 A100 集群才能跟,很多验证步骤在单卡 24G 显存上就能跑通推理和评估。如果你手头没有本地大显存机器,也可以先用云端 API 做模型对话验证,把评估脚本跑通再考虑本地部署。
MiMo-VL 的核心架构并不复杂:ViT 编码视觉输入,MLP projector 把视觉特征映射到语言模型的 token 空间,MiMo-7B 做推理。真正难的是训练策略——四阶段预训练里每个阶段放开哪些参数、数据配比怎么调、第四阶段为什么要把序列长度从 8K 拉到 32K,这些决策直接决定了最终模型在 MMMU、MathVision、OSWorld-G 上的表现。后训练阶段的 MORL 框架则回答了另一个问题:当推理、感知、定位、人类偏好对齐这几个目标互相打架时,怎么让它们同步提升而不是此消彼长。
下面我会按“架构拆解 → 训练流程 → 配置复现 → 验证请求 → 错排查 → 工具链”的顺序展开。每一节都尽量给出可操作的命令、配置片段和预期结果,而不是停留在概念层面。
2. MiMo-VL 架构拆解与四阶段预训练:视觉编码器对齐策略与数据配比
2.1 三个核心组件与原生分辨率 ViT
MiMo-VL-7B 的架构可以拆成三块:视觉编码器、projector、语言模型。视觉编码器用的是 Qwen2.5-ViT,支持原生分辨率输入,这意味着图片不需要强制 resize 到固定尺寸,细粒度视觉细节得以保留。projector 是一个随机初始化的 MLP,负责把 ViT 输出的视觉特征映射到和文本 token 对齐的潜在空间。语言模型主干用 MiMo-7B-Base 初始化,这个底座本身就有较强的推理能力。
这个架构和主流 VLM 没有本质区别,但 MiMo-VL 在训练策略上做了几个关键选择。第一,projector 是随机初始化的,所以第一阶段必须冻结 ViT 和 LLM,只用图像-描述对来预热 projector。如果一上来就放开所有参数,未对齐的 projector 会产生噪声梯度,把 ViT 和 LLM 的预训练权重带偏。第二,第二阶段放开 ViT 权重并引入图文交错数据,让视觉编码器适应更复杂的视觉-语言对齐任务。第三,第三阶段所有参数可训练,引入 OCR、定位、视频、GUI 等更丰富的数据类型,累计 1.4 万亿 token。第四阶段专注长上下文,序列长度从 8K 扩展到 32K,学习率从 1e-5 调到 2.5e-5。
2.2 四阶段预训练的数据配比与训练细节
预训练数据总量 2.4 万亿 token,涵盖图像描述、图文交错、OCR、定位、视频、GUI、合成推理和纯文本。每个阶段的数据配比不同,这是训练稳定性的关键。
第一阶段只用图像-描述对,目标是让 projector 学会把视觉概念映射到语言空间。这个阶段训练步数不多,但学习率要设得相对高一些,因为 projector 是随机初始化的。
第二阶段引入图文交错数据,这类数据来自网页、书籍和学术论文,文本段落经过知识密度和可读性评估,视觉内容过滤掉尺寸过小、宽高比异常、不安全或信息贫乏的图像。交错数据的复杂多样性增强了 ViT 的鲁棒性。
第三阶段是数据类型最丰富的阶段,OCR 数据涵盖文档、表格、自然场景、产品包装和数学公式,还专门纳入手写体、变形字体和模糊遮挡文本。定位数据用绝对坐标表示,包含单物体和多物体场景。视频数据以 2FPS 采样,最大 256 帧,标注带精确起止时间戳。GUI 数据覆盖移动端、网页和桌面端,统一到标准化动作空间。
第四阶段把序列长度从 8K 扩展到 32K,新增长纯文本、高分辨率图像、长文档、长视频和长推理数据。这个阶段显著提高推理数据比例,引入长程推理模式。报告里提到,第四阶段使模型在 MMMU 上提升 9 分、OSWorld-G 提升 14 分、OlympiadBench 提升 16 分,而且性能持续提升未现饱和——MMMU 任务中单问题平均响应 token 数从 680 增至 2.5K。
2.3 合成推理数据的构造流程
MiMo-VL 的一个核心发现是:从预训练阶段就融入高质量、长思维链的推理数据对提升模型性能至关重要。传统 QA 数据答案简短直接,容易让模型陷入浅层模式匹配和过拟合。合成推理数据则包含显式推理过程,能学习复杂逻辑关系和可泛化的推理模式。
构造流程分三步:首先从开源问题库筛选多样化 queries,涵盖感知问答、文档问答、视频问答和视觉推理任务;然后用大型推理模型生成包含显式推理的答案;最后采用多阶段质量控制,验证答案事实准确性,同时对推理过程实施清晰度评估、冗余消除和格式标准化。最终形成的高保真数据集继承了 MiMo-7B-Base 的强推理能力,使其能无缝迁移到多模态场景。
如果你要复现这个流程,关键点在于拒绝采样策略——不是所有生成的推理链都保留,只保留那些推理过程清晰、答案正确、格式规范的样本。这个筛选比例通常很低,但保留下来的数据质量直接决定模型推理能力的上限。
3. 可复制配置:MiMo-VL 推理环境搭建与 API 接入
3.1 本地推理环境配置
MiMo-VL 的模型检查点和评估脚本在 GitHub 上开源,本地推理需要先拉取仓库和模型权重。以下配置基于单卡 24G 显存环境,使用 bfloat16 精度。
# 创建虚拟环境 conda create -n mimovl python=3.10 -y conda activate mimovl # 安装依赖 pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu121 pip install transformers==4.46.0 accelerate==1.0.0 pip install pillow opencv-python decord # 拉取评估脚本 git clone https://github.com/XiaomiMiMo/MiMo-VL.git cd MiMo-VL模型权重下载后,推理脚本的核心配置如下:
from transformers import AutoModelForCausalLM, AutoProcessor import torch model_path = "XiaomiMiMo/MiMo-VL-7B-RL" processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True ) # 图像理解推理 messages = [ {"role": "user", "content": [ {"type": "image", "image": "test_chart.png"}, {"type": "text", "text": "请将这张图表转换为Markdown表格"} ]} ] inputs = processor.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt") outputs = model.generate(**inputs.to(model.device), max_new_tokens=32768, do_sample=False) print(processor.decode(outputs[0], skip_special_tokens=True))评估设置方面,图像理解任务最大像素为 4096×28×28,最大生成 token 32768,贪心搜索解码。视频任务 2FPS 采样,最大 256 帧,总 token 限制 16384。文本评估最大生成 token 32768,温度 0.6,top-p 0.95。
3.2 通过 API 快速验证模型能力
如果你本地没有大显存机器,或者想先快速验证 MiMo-VL 在具体任务上的表现,可以通过 TaoToken 的模型对话接口做推理验证。配置方式如下:
{ "base_url": "https://taotoken.net/api", "api_key": "你的API Key", "model_id": "MiMo-VL-7B-RL", "max_tokens": 32768, "temperature": 0.6, "top_p": 0.95 }API Key 在控制台的 API Keys 页面创建,接入文档里有完整的请求示例和参数说明。模型对话入口可以直接测试图像理解、图表解析、STEM 推理等任务。对于长期做多模态 Agent 开发的场景,Coding Plan 提供了更稳定的调用配额和并发支持。
需要注意的是,API 调用时图像需要先转成 base64 或上传到可访问的 URL,具体格式参考接入文档。视频输入目前建议先抽帧成图像序列再传入,和本地推理的 2FPS 采样策略保持一致。
3.3 评估脚本配置
MiMo-VL 开源了包含 50 多项任务的综合评估脚本,基于 LMMs-Eval 框架适配长思维链推理模型。评估配置的关键参数:
# eval_config.yaml model: MiMo-VL-7B-RL tasks: - MMMUval - MathVision - OSWorld-G - CharXivRQ - Video-MMMU - CountBench generation: max_new_tokens: 32768 do_sample: false video: fps: 2 max_frames: 256 max_tokens: 16384 text: temperature: 0.6 top_p: 0.95运行评估:
python -m lmms_eval \ --model mimovl \ --model_args pretrained=XiaomiMiMo/MiMo-VL-7B-RL \ --tasks MMMUval,MathVision,OSWorld-G \ --batch_size 1 \ --output_path ./eval_results预期结果:MMMUval 66.7%,MathVision 60.4%,OSWorld-G 56.1%,CharXivRQ 56.5%。如果分数偏差超过 2 个点,优先检查图像预处理分辨率是否匹配 4096×28×28 的设置。
4. 验证请求与成功结果:从 MMMU 到 OSWorld-G 的关键指标复现
4.1 图像理解任务验证
用一张包含复杂曲线图的图片测试图表解析能力。MiMo-VL-7B-RL 在 CharXivRQ 上拿到 56.5%,比 Qwen2.5-VL 的 42.5% 高 14 个点。验证时重点看模型能否把曲线图转换为结构化 Markdown 表格,以及数值提取的准确率。
# 图表解析验证 prompt = "请将这张图表转换为Markdown表格,包含所有数据点和坐标轴标签" # 传入 test_chart.png # 预期输出:结构化的Markdown表格,数值与图表一致如果模型输出格式正确但数值有偏差,检查输入图像分辨率是否足够。原生分辨率 ViT 的优势在于保留细粒度细节,但如果图像被过度压缩,细节丢失会导致数值提取错误。
4.2 多模态推理任务验证
MathVision 从 57.9% 提升到 60.4%,这个提升来自 RL 阶段。验证时用一道需要多步推理的几何题:
prompt = """请逐步推理以下几何问题: 图中有一个半径为5的圆,圆内接一个正方形,求正方形面积与圆面积的比值。 请给出完整的推理过程。"""预期输出包含:正方形对角线等于圆直径、正方形边长计算、面积比值化简。MiMo-VL-7B-RL 在 OlympiadBench 上拿到 59.4 分,超越参数量 78B 的模型,说明长思维链推理数据在预训练后期的融入确实有效。
4.3 GUI grounding 验证
OSWorld-G 56.1 分是 MiMo-VL 的一个亮点,超越了 UI-TARS 等专用模型。验证时用一张网页截图,让模型定位特定元素:
prompt = "请定位截图中的搜索框,输出其边界框坐标(绝对坐标格式)" # 预期输出:[x1, y1, x2, y2] 格式的坐标GUI 定位的奖励用 GIoU 计算,点坐标输出则根据预测点是否落入真实边界框判定。验证时如果坐标偏差较大,检查图像是否按原生分辨率输入,以及是否使用了绝对坐标表示。
4.4 视频时序定位验证
Charades-STA 上 MiMo-VL-RL 拿到 50.0% mIoU。验证时用一段短视频,让模型定位与查询对应的片段:
prompt = "请定位视频中人物打开冰箱的时间段,输出格式为[mm:ss,mm:ss]" # 预期输出:[00:12,00:18] 格式的时间戳视频以 2FPS 采样,最大 256 帧。如果时间戳偏差大,检查采样帧率是否一致,以及视频总时长是否超过模型处理上限。
4.5 Elo 评分验证
MiMo-VL-7B-RL 在所有开源 VLM 中获得最高 Elo 评分,7B 到 72B 参数模型中排名第一,紧追 Claude 3.7 Sonnet 等商业模型。MORL 为 SFT 版本带来 22+ 分的提升。Elo 评估用平衡双语内部数据集,基于 GPT-4o 评判,采用风格控制评估协议。如果你要做类似评估,关键是构建多样化的真实用户提示,覆盖多模态推理、图像理解和 GUI 交互等场景。
5. 本篇常见错排查:401、local proxy failed、reading choices 与 OAuth 报错
5.1 401 Unauthorized
API 调用返回 401,通常是 API Key 无效或未正确传入。检查请求头:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "MiMo-VL-7B-RL", "messages": [...]}'如果 Key 正确但仍 401,检查是否在控制台创建了对应模型的访问权限。API Keys 页面可以查看 Key 的状态和权限范围。
5.2 local proxy failed
本地推理时出现local proxy failed或连接超时,通常是模型权重下载不完整或 device_map 配置冲突。检查:
# 确认模型文件完整 import os model_path = "XiaomiMiMo/MiMo-VL-7B-RL" print(os.listdir(model_path)) # 应包含 config.json, model.safetensors 等 # 单卡环境指定 device model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.bfloat16, device_map={"": 0}, # 明确指定GPU trust_remote_code=True )如果显存不足,尝试 4bit 量化加载:
from transformers import BitsAndBytesConfig bnb_config = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16) model = AutoModelForCausalLM.from_pretrained(model_path, quantization_config=bnb_config, device_map="auto")5.3 reading choices 报错
评估脚本运行时报reading choices相关错误,通常是评估配置中的任务名称与 LMMs-Eval 注册的任务不匹配。检查eval_config.yaml中的 tasks 列表,确保任务名与框架注册名一致。MiMo-VL 的评估脚本已经适配了长思维链推理模型,如果直接用原版 LMMs-Eval 可能缺少对应任务定义。
# 确认任务注册 python -c "from lmms_eval.tasks import TaskManager; tm = TaskManager(); print(tm.task_index.keys())"5.4 OAuth 与认证配置
如果使用 Claude Code 或类似工具接入 MiMo-VL,OAuth 报错通常出现在认证配置环节。以 Claude Code 为例,需要在 settings.json 中配置 Base URL、API Key 和 Model ID 三件套:
{ "model": "MiMo-VL-7B-RL", "base_url": "https://taotoken.net/api", "api_key": "你的API Key", "max_tokens": 32768 }如果使用 Cline MCP 或 Codex auth.json,配置逻辑类似。Codex 的 auth.json 格式:
{ "api_key": "你的API Key", "base_url": "https://taotoken.net/api", "model": "MiMo-VL-7B-RL" }CC Switch 切换配置时,确保 Base URL 不带尾部斜杠,Model ID 与 API 支持的模型名完全一致。如果报 OAuth 相关错误,检查是否误用了需要浏览器回调的认证方式,API Key 方式不需要 OAuth 流程。
5.5 推理结果格式异常
模型输出包含大量重复 token 或格式混乱,检查生成参数。评估设置用贪心搜索(do_sample=False),如果开了采样且 temperature 过高,长思维链推理容易发散。视频任务注意总 token 限制 16384,超长视频需要先裁剪或降低采样帧率。
6. 语义一致 CTA:从模型验证到长期多模态 Agent 开发
MiMo-VL 的技术报告给多模态大模型开发者提供了一个完整的工程参考:四阶段预训练的数据配比策略、合成推理数据的构造流程、MORL 框架的奖励设计、以及 50 多项任务的评估脚本。这些内容的价值不在于数字本身,而在于它展示了一条可复现的路径——从架构设计到训练流程再到评估验证,每一步都有明确的配置和预期结果。
如果你正在做视觉语言模型的微调或评估,建议先从模型对话入口验证 MiMo-VL 在具体任务上的表现,把评估脚本跑通,再考虑本地部署和训练。API Keys 页面可以创建访问凭证,接入文档里有完整的请求示例和参数说明。对于需要长期跑多模态 Agent 任务的场景,Coding Plan 提供了更稳定的调用配额和并发支持,适合把 MiMo-VL 集成到自动化评估流水线或 Agent 工作流中。
技术报告里的三个关键发现值得反复琢磨:预训练后期引入推理数据能带来持续增益、策略 RL 相比原始 GRPO 有显著优势、跨能力域的 MORL 训练存在任务干扰挑战。前两个可以直接应用到你的训练流程里,第三个则是当前多模态 RL 训练的一个开放问题——推理任务促使模型生成更长思维链,而定位和计数任务需要缩短输出,这种目标冲突怎么平衡,报告里没有给出最终答案,但指出了方向。