Prhub

#41029 [Model] update for mimo v25

原始 PR 作者 ZJY0516 合并时间 2026-04-28 12:52 文件变更 6 提交数 6 评论 6 代码增减 +10 / -8

执行摘要

重命名 MiMoV2 架构符号从 Pro 变体

MiMo V2.5 模型已不再区分 'Pro' 版本,统一为 MiMoV2ForCausalLM 以简化模型命名。PR 标题和提交信息均指向 'update for mimo v25',说明这是为支持 MiMo-V2.5 模型而进行的名称对齐。

该 PR 改动小但破坏性较强,建议精读以理解重命名对模型加载流程的影响。值得关注的设计决策是:维护者选择了向前不兼容的简化,而非保留别名。如果团队管理大量 MiMo 模型,应提前通知用户迁移。

讨论亮点

Review 中 gemini-code-assist[bot] 和 chatgpt-codex-connector[bot] 指出了破坏性变更的风险:直接移除旧架构名会导致已有模型和配置无法加载。建议保留旧名作为别名。但项目维护者并未采纳这些建议,最终 PR 通过了 4 位维护者的 approval。

实现拆解

  1. 模型类重命名:在 vllm/model_executor/models/mimo_v2.py 中将 MiMoV2ProForCausalLM 改为 MiMoV2ForCausalLM,继承关系和 packed_modules_mapping 不变。
  2. 注册表更新:在 vllm/model_executor/models/registry.py 中将模型架构映射从 'MiMoV2ProForCausalLM': ("mimo_v2", "MiMoV2ProForCausalLM") 改为 'MiMoV2ForCausalLM': ("mimo_v2", "MiMoV2ForCausalLM")
  3. 模型配置转换器:在 vllm/transformers_utils/model_arch_config_convertor.py 中将配置键 'mimo_v2_pro' 改为 'mimo_v2'(映射到同一个 MimoV2ModelArchConfigConvertor),并在 __init__ 中增加对 vision_config 的检测以自动设定 architecturesMiMoV2OmniForCausalLM
  4. 推测解码配置:在 vllm/config/speculative.py 中将 MTP 架构检查中的 MiMoV2ProForCausalLM 更新为 MiMoV2ForCausalLM
  5. 测试与文档:在 tests/models/registry.py 中更新测试条目,在 docs/models/supported_models.md 中更新支持的模型表。
文件 模块 状态 重要度
vllm/model_executor/models/mimo_v2.py 模型实现 modified 6.25
vllm/transformers_utils/model_arch_config_convertor.py 配置转换 modified 5.84
vllm/model_executor/models/registry.py 注册表 modified 5.5
vllm/config/speculative.py 推测解码配置 modified 5.07
tests/models/registry.py 测试 modified 4.2
docs/models/supported_models.md 文档 modified 1.93

关键符号

MiMoV2ForCausalLM

关键源码片段

vllm/transformers_utils/model_arch_config_convertor.py data-contract

配置转换器中的键和逻辑更新,影响模型加载时的配置适配。

class MimoV2ModelArchConfigConvertor(ModelArchConfigConvertorBase):
    def __init__(self, hf_config: PretrainedConfig, hf_text_config: PretrainedConfig):
        # 若 hf_config 包含 vision_config,自动将架构标记为 Omni
        if getattr(hf_config, "vision_config", None):
            hf_config.architectures = ["MiMoV2OmniForCausalLM"]
        super().__init__(hf_config, hf_text_config)
        _strip_mimo_v2_attention_chunk_size(hf_config, hf_text_config)# 配置键映射:新键 'mimo_v2' 替换旧键 'mimo_v2_pro'
MODEL_ARCH_CONFIG_CONVERTORS = {
    # ...
    "mimo_v2": MimoV2ModelArchConfigConvertor, # 原为 "mimo_v2_pro"
    "mimo_v2_flash": MimoV2ModelArchConfigConvertor,
    # ...
}
vllm/config/speculative.py core-logic

推测解码配置中的架构条件更新,影响 MTP 模型的自动配置。

if (arch := hf_config.architectures[0]) in (
    "MiMoV2ForCausalLM", # 原为 MiMoV2ProForCausalLM
    "MiMoV2OmniForCausalLM",
):
    # ...
    mtp_arch_maps = {
        "MiMoV2ForCausalLM": "MiMoV2MTPModel", # 原为 MiMoV2ProForCausalLM
        "MiMoV2OmniForCausalLM": "MiMoV2OmniMTPModel",
    }

评论区精华

向后兼容性 正确性

gemini-code-assist[bot] 和 chatgpt-codex-connector[bot] 指出直接移除旧架构名会破坏已有模型的加载,建议保留别名。

结论:维护者未采纳,选择完全替换,PR 被批准。 · 已解决

风险与影响

兼容性风险(高):移除 MiMoV2ProForCausalLMmimo_v2_pro 键会导致所有使用旧架构名的 HuggingFace 模型仓库无法加载,包括测试中引用的 XiaomiMiMo/MiMo-V2.5-Pro。用户必须更新模型配置文件或等待模型仓库更新架构名。
影响范围:任何已部署的 MiMo-V2.5-Pro 模型都需要修改 config.json 中的 architectures 字段。

用户影响:使用旧架构名的用户会收到架构解析错误,需要手动更新配置或依赖官方模型仓库更新。
系统影响:不影响其他模型,仅限 MiMo 系列。
团队影响:后续需确保新模型注册时统一使用新命名,避免历史包袱。

兼容性破坏 缺少向后兼容处理

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论