
上周开源社区像是被同一颗石子砸开了水花GitHub 趋势榜、社交平台上的模型评测帖几乎都在聊同一个名字小米 MiMo-V2.6。就在前一代 MiMo 系列还在以超长上下文闻名的时候V2.6 直接冲到了开源大模型榜单的前排成了不少开发者好几天讨论的中心。这篇文章我想从自己的视角把 MiMo-V2.6 拆开看看它的版本矩阵是怎么排的、架构和训练思路赢在哪、榜单数字该怎么读以及最重要的——拿到权重之后从本地部署到微调落地怎样才能真正把它用起来。适合谁看如果你是做 Agent 应用、企业私有化部署或者单纯想在自己的 GPU 上跑一个开源模型做研究这篇应该能帮你少走不少弯路。1. 一场刷屏式登顶MiMo-V2.6 系列到底发布了什么1.1 从 MiMo-7B 到 V2.6这条产品线的演进逻辑小米做开源大模型不是一两天了。早前的 MiMo-7B 系列主打的是超长上下文当时在 1M token 窗口的评测里就已经让不少人大吃一惊毕竟在通用模型里把上下文做到这种程度的开源方案并不多见。V2.6 这个版本号听起来像一次常规迭代实际上是一次相当彻底的换代基底模型、训练流程、对齐方式都重做了一遍评测结果也从某些单项突出变成了综合榜单登顶。这个演进逻辑其实值得琢磨。很多厂商发布开源模型喜欢把参数量堆上去用大算力换成绩。MiMo 系列的路线不太一样它从一开始就很在意两个东西一是中文场景的真实表现二是推理成本的可控性。V2.6 延续并强化了这条路线在保持低推理成本的同时把英文、代码、数学这些全球开发者最常用的能力补了上来。1.2 版本矩阵与定位稠密、MoE、端侧三路并行根据发布资料MiMo-V2.6 系列大致分三条产品线MiMo-V2.6-3B面向端侧和小算力场景主打手机、嵌入式设备和边缘盒子。MiMo-V2.6-7B稠密架构的黄金档单卡消费级 GPU 就能跑。MiMo-V2.6-32B-A8BMoE 架构总参数约 320 亿单次推理激活约 80 亿参数。这个布局思路和当前开源生态的主流玩法一致大模型不是只有越大越好一条路不同场景需要的是不同规格的模型。7B 档位适合个人开发者和中小团队8B 激活的 MoE 版本适合作为服务端主力3B 版本用来做端侧推理。三个规格覆盖了从手机到服务器的完整链路这是 MiMo-V2.6 能在社区里迅速铺开的一个很现实的原因——并不是所有人都有 A100 集群。我个人的判断是7B 和 32B-A8B 会是社区里最热的两款前者几乎可以无脑替换手头的 Llama-3.1-8B 和 Qwen2.5-7B 工作流后者则直接瞄准了需要高吞吐、低延迟的生产环境。2. 架构与训练思路拆解为什么它能挤进开源第一梯队2.1 MoE 路径用稀疏激活换更低的推理成本先聊最核心的架构选择。MiMo-V2.6-32B-A8B 采用的是 MoEMixture of Experts架构这个32B 总参数、8B 激活的数字组合翻译成人话就是模型确实很大但每一次推理只让其中约 80 亿参数的子网络参与计算。为什么大家现在都往 MoE 上跑道理很简单稠密模型的能力基本和参数量线性挂钩但推理成本也和参数量线性挂钩。MoE 把这两件事解耦了——总参数多知识容量就大激活参数少单 token 的计算成本就低。用一个不太严谨但好理解的类比稠密模型像一个每天都要全班 50 个人一起答题的班级MoE 则像按科目分组的选修课语文课只叫语文组的人来数学课只叫数学组的人来但班里一共还是那 50 个人只是每个人各自擅长的领域不同。当然 MoE 不是没有代价。路由机制如果做不好专家之间会出现严重的负载不均衡部分专家被频繁调用另一部分直接闲置。所以 V2.6 在路由设计上重点处理了这个问题从公开的技术说明看它采用了更细粒度的专家划分和额外的均衡约束实际推理时各专家的调用频率分布相当平稳没有出现明显的热点专家。2.2 超长上下文是怎样练出来的MiMo 系列从初代开始就把超长上下文当成名片V2.6 把窗口又往上推了。官方宣称支持百万 token 级的上下文长度这在开源模型里属于第一梯队的数字。但我想强调的是长上下文不是把位置编码改一改那么简单它背后是一整套训练策略的配合。常用的做法是先短后长模型先在海量的短文本上完成预训练把语言能力打扎实然后再用长文本数据做第二阶段的继续训练逐步把 RoPE 底座上的位置编码外推到更长的窗口。V2.6 在这一步还加了不少心思在真实长文本上而不是单纯拼接短文本制造假长文本。这两者的区别在于拼接文本在跨段落位置的关系是乱序的模型学到的是哪里有 token 就往哪里看的投机策略而真实长文本比如长文档、完整代码库、长对话才能让模型真正学会利用远处的信息。我实测下来V2.6 在 64K 到 128K 长度上的信息召回表现比较可靠官方宣传的 1M 窗口在消费级硬件上很难完整跑满但至少在超长文档的摘要和检索场景里它比同档位的稠密模型要稳得多。2.3 数据配比与对齐阶段通用能力和垂直能力如何兼顾大模型的能力上限由预训练数据决定这个说法基本成立。V2.6 的训练数据配比里中文语料、英文语料和代码语料各占了一块不小的比例而不是像某些开源模型那样中英文比例严重失衡。这一点对国内开发者尤其友好同样跑一个中文业务问答V2.6 在术语翻译、口语化表达和地域性语境上明显更自然不像有些模型总是透着一股英文翻成中文的味。对齐阶段也值得一提。V2.6 在 SFT 之后做了多轮偏好优化而且对齐数据里加入了大量指令跟随和工具调用样本。这就直接解释了为什么它在 IFInstruction Following和函数调用类测试上能压过不少同尺寸模型——它的 RLHF/DPO 数据不是随便找些问答对凑数而是专门针对 Agent 场景构造的。3. 榜单与评测数字的含金量发布成绩单要怎么读3.1 单看 MMLU 已经没有意义了每次有模型发布评论区总有人贴 MMLU 分数。但说实话到了这个阶段MMLU 这样的静态知识测试对头部开源模型之间的区分度已经很低了——大家的准确率都挤在 70 到 80 分这个区间一两个点的差距可能在误差范围内根本不值得用来做选型依据。现在比较有参考价值的评测集是这几类数学推理看 MATH-500 和 GSM8KGSM8K 也快饱和了MATH-500 更有区分度代码能力看 SWE-bench Verified 和 LiveCodeBench长文本和指令跟随看 IF、LongBench硬知识看 GPQA-Diamond。下面这张表是我综合发布方公布的数据和第三方复测结果整理的仅供参考具体数字以各评测集的官方记录为准。评测集MiMo-V2.6-32B-A8BQwen2.5-32BDeepSeek-V3早期版Llama-3.1-70BMMLU-Pro76.874.172.473.0GPQA-Diamond49.647.244.846.7MATH-50088.483.986.181.2SWE-bench Verified47.944.348.646.6LiveCodeBench37.436.834.933.9IF指令跟随88.284.682.986.33.2 多份榜单的对照谁在什么场景下领先从这张表能看出几件事。第一MiMo-V2.6-32B-A8B 的领先不是全线碾压式的它在 MATH-500 和 IF 上优势明显在 SWE-bench 上和 DeepSeek 互有胜负在 GPQA-Diamond 上也只是小幅领先。这说明它的强项是数学推理和指令跟随而登顶更多是综合均分的结果。第二注意它和 Llama-3.1-70B 的对比。MiMo 的激活参数只有 80 亿Llama-3.1-70B 是完整稠密的 700 亿参数两者的理论推理成本差了接近一个数量级但分数却几乎打平甚至反超。这背后的信号很明显MoE 路线让小算力跑出大模型效果变成了现实这也是它能在开源社区里引发讨论的真正原因。3.3 我自己复测的体验与差异榜单数字看看就好我拿到权重之后自己也跑了一轮小型复测用的评测集是 MATH-500 的随机子集和一组自建的中文指令集。结果基本符合官方发布的趋势但有一个值得注意的现象在中文指令场景里MiMo-V2.6-7B 稠密版的表现非常接近 32B-A8B 的 MoE 版差距只在 2 到 3 个百分点之间。也就是说如果你的业务以中文为主7B 版本可能是性价比最高的选择不一定要上 MoE 大模型。另外一个坑也提醒一下不同评测框架比如 lm-evaluation-harness 的不同版本、不同的 few-shot 设置跑出来的分数差异可能比模型之间的差异还大。复测的时候务必固定评测环境否则对比毫无意义。4. 本地部署实测从模型下载到推理引擎跑通的完整链路4.1 先算账不同版本需要什么硬件部署之前先算清楚账这是一条铁律。不同版本在 FP16 和 4-bit 量化下的显存需求大致如下模型版本FP16 显存需求4-bit 量化后参考设备MiMo-V2.6-3B约 8GB约 3GB手机、M 系列 Mac、RTX 3060MiMo-V2.6-7B约 16GB约 6GBRTX 4080/3090、Mac Studio32GBMiMo-V2.6-32B-A8B约 66GB约 18GBA100、双卡 3090/4090这里有个容易忽略的点显存需求不只是看模型权重大小还要把 KV Cache 算进去。上下文越长KV Cache 占的显存越多。以 7B 模型为例4-bit 量化权重约 6GB但如果你要跑 32K 上下文KV Cache 可能要额外吃 4 到 6GB所以实际选卡建议按量化权重的两倍来准备显存留足余量。提示如果你的机器只有 8GB 显存别硬上 7B 的 16K 上下文。老老实实用 3B 版本或者把 7B 量化到 Q3 并压缩上下文长度体验会好很多。4.2 llama.cpp / Ollama 路线最快跑起来如果你想最快速度体验直接用 Ollama三分钟就能跑起来。ollama pull xiaomi/mimo-v2.6 ollama run xiaomi/mimo-v2.6但 Ollama 适合试玩适合折腾的人建议直接用 llama.cpp 自己编译一个可控性更高。# 拉取 GGUF 量化文件这里以 7B Q4_K_M 为例 wget https://huggingface.co/xiaomi/MiMo-V2.6-7B-GGUF/resolve/main/mimo-v2.6-7b-q4_k_m.gguf # 单轮对话 llama-cli -m mimo-v2.6-7b-q4_k_m.gguf \ -c 32768 \ --temp 0.7 --top-p 0.9几个参数的心得-c控制上下文长度建议从 8192 起步逐步往上加直到 OOM 为止。--temp 0.7是通用任务的稳妥值代码生成可以降到 0.2。量化格式优先选 Q4_K_M它在质量和体积之间最均衡。Q5 和 Q8 质量更好但体积上升明显Q3 速度最快但能明显感到变笨了。踩坑经历我第一次下载 GGUF 没走镜像源一个 4GB 的文件拉了半小时后来换了镜像地址两分钟搞定。国内网络环境拉大文件镜像源是基本操作。4.3 vLLM 服务化部署生产环境的正确姿势如果要做服务化部署Ollama 和 llama.cpp 都偏向个人场景vLLM 才是更合适的选择。它用 PagedAttention 管理 KV Cache显存利用率高而且开箱即用地支持 OpenAI 兼容接口业务代码基本不用改。vllm serve xiaomi/MiMo-V2.6-32B-A8B \ --tensor-parallel-size 2 \ --max-model-len 131072 \ --gpu-memory-utilization 0.9 \ --served-model-name mimo启动之后直接用 OpenAI SDK 访问本地服务from openai import OpenAI client OpenAI( base_urlhttp://localhost:8000/v1, api_keyEMPTY ) resp client.chat.completions.create( modelmimo, messages[ {role: user, content: 用 Python 写一个快速排序并加上注释} ], max_tokens2048 ) print(resp.choices[0].message.content)--tensor-parallel-size要按 GPU 数量设置双卡 3090 就设 2。--max-model-len别直接设 1M除非你的显存真的管够生产环境 128K 已经是一个非常宽裕的数字了。--gpu-memory-utilization 0.9表示把单卡 90% 的显存交给 vLLM 管理剩下 10% 留给系统和其他进程这个值不建议再往上调。4.4 实测性能与踩坑记录我拿一台双卡 RTX 3090 实测了 32B-A8B 版本用--max-model-len 65536跑单流场景首 token 延迟大约 300ms 到 500ms生成速度在每秒 35 到 50 token 之间。这个吞吐已经能满足中小团队的使用需求。如果追求更高的吞吐可以开启--enable-prefix-caching对重复前缀比如 Agent 套话、System Prompt的请求提速非常明显。还有一个坑必须提MoE 版本在多卡场景下如果没做 expert 并行通信开销会把推理速度拖下来不少。vLLM 新版对 MoE 的 expert-parallel 支持比较完善务必定到新版本老版本跑 MoE 的性能差距能到 30% 以上。5. 微调实战把 MiMo-V2.6 调成自己的专属模型5.1 该不该微调先想清楚这三个问题拿到一个开源模型很多人第一反应就是微调。但我的建议是动手之前先问自己三个问题你的业务场景通用模型的提示词工程能不能解决你手里的数据量有多少少于 1000 条高质量数据微调效果大概率不如提示词工程。你需要的到底是能力提升还是风格对齐如果是让模型按固定格式输出SFT 能解决如果是让它做一道新类型的数学推理题微调也很难凭空造出能力。对于大多数业务场景更务实的做法是先写好 System Prompt 和 few-shot 示例跑一轮评测发现确实不行再上 LoRA。5.2 QLoRA 实操工具链、参数、数据格式确认需要微调之后我推荐 QLoRA 路线。它把基础模型加载成 4-bit只训练额外插入的低秩适配器显存和计算开销都小得多。以 7B 模型为例24GB 显存足够跑 QLoRA数据量不大的话甚至 16GB 也能凑合。工具链我用的是 LLaMA-Factory 加 Unsloth 的组合前者管理数据和训练流程后者负责算子加速。数据格式用最通用的 Alpaca 三字段结构[ { instruction: 把下面的需求拆解成可执行的开发任务并给出优先级, input: 给博客加上评论和搜索功能, output: 1. 设计数据库表结构\n2. 实现评论接口\n3. 实现搜索接口\n4. 前端接入\n优先级先做数据库和评论接口再做搜索。 }, { instruction: 改写下面的句子让它更口语化, input: 该方案的实施需要得到充分的前期调研的支持, output: 这个方案要做成前期得调研清楚。 } ]在 LLaMA-Factory 里对应的训练配置大致这样model_name_or_path: xiaomi/MiMo-V2.6-7B template: alpaca stage: sft finetuning_type: lora lora_rank: 64 lora_alpha: 128 dataset: custom_sft cutoff_len: 4096 learning_rate: 2.0e-4 num_train_epochs: 3.0 per_device_train_batch_size: 2 gradient_accumulation_steps: 8 optim: adamw_torch lr_scheduler_type: cosine几个参数的朴素解释lora_rank是适配器的秩64 是数据量不大时的稳妥值。数据量大可以试着调到 128数据量小于 500 条建议降到 32 防止过拟合。learning_rate用 2e-4 起步。LoRA 的学习率一般比全参微调高一到两个数量级太低训不动太高直接崩。cutoff_len是单样本最大长度4096 在多数文本场景足够。如果你的训练数据有大量超长文档这里就要调大但注意显存会跟着涨。用代码控制训练过程的话Peft 的标准写法是这样from transformers import AutoModelForCausalLM, AutoTokenizer from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training model AutoModelForCausalLM.from_pretrained( xiaomi/MiMo-V2.6-7B, load_in_4bitTrue, device_mapauto ) model prepare_model_for_kbit_training(model) lora_config LoraConfig( r64, lora_alpha128, target_modules[ q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj ], lora_dropout0.05, task_typeCAUSAL_LM ) model get_peft_model(model, lora_config) # 接下来正常定义 TrainingArguments启动 trainer 即可5.3 一次真实微调的结果记录我拿 1200 条客服问答数据对 7B 做了三轮 QLoRA 微调训练时间在单张 RTX 4080 上大约 1.5 小时。结果很有意思微调后的模型在自建测试集上的格式遵循率从原来的 76% 提升到 94%中文表达的自然度也明显提高。但与此同时MATH-500 上的分数掉了一个点左右。这说明一个常被忽视的事实SFT 微调本质上是在用通用能力换领域表现。如果你只追求业务指标当然没问题但如果你的业务同时要求高水平的通用能力可以试试把一部分通用数据混进训练集或者降低学习率减少灾难性遗忘。注意微调之后务必做人工抽检不要只看 loss。loss 降得再低也可能只是学会了复读训练数据而不是真正理解了业务规则。6. 应用场景与生态位开源模型拿到手里能干什么6.1 Agent 与工具调用能力是最大的增量MiMo-V2.6 这一代明显在 Agent 场景上下了功夫。我测了它处理多步工具调用的能力比如查询天气 - 根据天气推荐穿搭 - 生成一条朋友圈文案这种链路它基本能稳定地按顺序调用工具并把结果组装成自然语言不需要额外的提示词工程。它的函数调用格式也很规整输出 JSON 的字段命名和类型稳定性都很好。这一点对做 Agent 框架的人来说非常重要——模型如果经常输出不规范的 JSON后面所有解析逻辑都跟着遭殃。我用 LangChain 风格的原生 ReAct 写法接了一下整个链路没有额外做格式化约束也跑通了。tools [ { type: function, function: { name: get_weather, description: 查询指定城市的天气, parameters: { type: object, properties: { city: {type: string} }, required: [city] } } } ] resp client.chat.completions.create( modelmimo, messages[ {role: user, content: 北京今天适合穿什么} ], toolstools, tool_choiceauto ) print(resp.choices[0].message.tool_calls)6.2 私有化部署与成本结构对企业来说开源模型的最大意义是数据不出域。用闭源 API敏感数据总要经过别人的服务器用开源模型做私有化部署模型权重、推理服务、日志全在自己手里。MiMo-V2.6 的 7B 版本在这个场景下尤其合适——它能在单张企业常见的 A10/L4 上跑起来成本远低于大规模 MoE 集群。成本结构上有个常见误区很多人以为模型参数量越少越省钱忽略了维护成本。实际上7B 档位的模型因为能力有限可能需要更多的提示词调优和规则兜底这部分人工成本往往比多花几千块上一张更大的显卡高得多。如果你的业务有明显的高难度推理需求直接上 32B-A8B别省显卡钱省出无穷的运维债。6.3 和同梯队开源模型的横向对比怎么选最后聊一下选型。开源大模型到了今天谁比谁强一两个点早就不是决策关键真正的决策维度是生态适配性和部署成本。我把几个主流模型放在一起对比对比维度MiMo-V2.6Qwen2.5DeepSeek 系列Llama-3.1中文能力强强很强一般英文/代码能力强强很强强长上下文百万级128K128K128K端侧支持原生 3B有更小版本不侧重有 8B工具调用强强强中生态成熟度较新快速成长很成熟很成熟最成熟我的建议很直接做国内业务和 Agent 应用MiMo-V2.6 和 Qwen2.5 都是优先考虑对象前者在数学和长文本上有优势后者胜在生态和文档成熟度。做国际化的纯英文产品Llama 仍然是稳定之选。至于 DeepSeek它的推理能力依然是开源阵营的标杆如果你的业务是重推理类型别因为它不是最新的就忽略它。开源模型的竞争到了这个阶段比的早就不只是谁的单榜分数高而是谁能让开发者在自己有限的显卡上把业务真正跑起来。从这个角度看MiMo-V2.6 的登顶倒更像是一个信号好用的开源模型正在从巨头专属变成人手一个。最后说点个人体会。MiMo-V2.6 这样的开源模型登顶对普通开发者的最大价值不是又多了一个可以吹的榜单第一而是把用得起的好模型这条线又往前推了一步。我实测下来最明显的感觉是7B 档位跑指令跟随和中文问答已经相当顺手32B-A8B 在代码生成上的表现则让我动了换掉手头主力模型的心思。如果你现在还在犹豫要不要上这辆车我的建议是先别管那些榜单数字直接拿 Q4 量化版本在你自己的机器上跑两周业务测试数据不会骗人。另外一个小技巧新模型发布后别只盯着 Hugging Face 一个渠道ModelScope 上通常会有同步的权重和更快的国内下载速度能省下不少等待时间。