Prhub

#24652 fix(mimo_v2): auto-disable multimodal when vision/audio configs are absent

原始 PR 作者 JoyFuture 合并时间 2026-05-08 13:40 文件变更 1 提交数 1 评论 3 代码增减 +10 / -0

执行摘要

修复纯文本 MiMoV2 启动崩溃

纯文本 MiMoV2 checkpoint 启动时因缺少 vision_config 而抛出 AttributeError(PR body 中贴出了完整栈跟踪)。模型层 mimo_v2.py:1038-1040_is_multimodal 已要求同时存在 vision_configaudio_config 才视为多模态,但配置层未做对应检查,导致两处判定不一致。

值得合并,修复了一个清晰的配置-模型不一致 bug,改动小且安全。

讨论亮点

审核者 ShangmingCai 批准了 PR,无进一步讨论。CI 测试也已通过。

实现拆解

  1. 定位问题:在 python/sglang/srt/configs/model_config.pyenable_multimodal 自动判定分支中,增加针对 MiMoV2 的特殊逻辑。
  2. 新增判断条件:当 architectures[0]MIMO_V2_MULTIMODAL_ARCHS 中,且 HF 配置不包含 vision_configaudio_config 任一属性时,将 enable_multimodal 设为 False
  3. 日志记录:当禁用多模态时,打印一条 info 日志说明原因。
  4. 无其他改动:变更仅 10 行,不涉及测试、配置或部署配套设施。
文件 模块 状态 重要度
python/sglang/srt/configs/model_config.py 配置层 modified 6.12

关键源码片段

python/sglang/srt/configs/model_config.py data-contract

配置层入口,新增逻辑使配置级多模态开关与模型级检测一致。

# python/sglang/srt/configs/model_config.py 中 enable_multimodal 自动判定逻辑
if enable_multimodal is None:
    mm_disabled_models = [
        "Gemma3ForConditionalGeneration",
        "Llama4ForConditionalGeneration",
        "Step3VLForConditionalGeneration",
    ]
    if (
        self.hf_config.architectures[0] in mm_disabled_models
        and self.model_impl != ModelImpl.TRANSFORMERS
    ):
        enable_multimodal = False
        logger.info(
            f"Multimodal is disabled for {self.hf_config.model_type}. "
            "To enable it, set --enable-multimodal."
        )
    elif self.hf_config.architectures[0] in MIMO_V2_MULTIMODAL_ARCHS and not (
        hasattr(self.hf_config, "vision_config")
        and hasattr(self.hf_config, "audio_config")
    ):
        # 新增分支:当架构是 MiMoV2 但 HF 配置缺少 vision_config 或 audio_config 时,
        # 视为纯文本变体,禁用多模态以避免后续多模态处理器初始化崩溃。
        enable_multimodal = False
        logger.info(
            "Multimodal is disabled for this MiMoV2 checkpoint: "
            "vision_config/audio_config not found in the model config "
            "(likely a text-only MiMoV2 variant)."
        )
    else:
        enable_multimodal = True

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。变更仅增加一个 elif 分支,且检查条件与模型层已有的 _is_multimodal 逻辑完全一致。多模态 MiMoV2 变体不受影响,因为其 HF 配置包含 vision_configaudio_config,不会进入该分支。

只有纯文本 MiMoV2 用户受到影响——他们原本无法启动服务,现在可以正常启动。多模态 MiMoV2 用户无感知。团队无需额外维护成本。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论