Prhub

#21319 [diffusion] fix: return None instead of raising RuntimeError when no model info found

原始 PR 作者 yang1002378395-cmyk 合并时间 2026-03-27 22:42 文件变更 1 提交数 2 评论 9 代码增减 +2 / -1

执行摘要

修复扩散模型加载回退失败问题,将 RuntimeError 改为返回 None 以实现优雅回退。

根据Issue #21311,当使用如meituan-longcat_LongCat-Image等不支持的扩散模型时,sglang本应回退到diffusers后端,但_get_config_info抛出RuntimeError导致崩溃,阻止了回退。PR body指出根因是_get_config_info在模型不在注册表中时抛出RuntimeError,而意图是回退到diffusers,因此需返回None以允许后续逻辑。

对于开发扩散模型模块或处理模型加载逻辑的工程师,此PR值得快速浏览,了解如何优雅处理未注册模型的回退机制,关注_get_config_info函数的错误处理设计。

讨论亮点

Review讨论较少:gemini-code-assist[bot]评论指出变更简单,允许更优雅的错误处理,无进一步反馈。Issue评论中,ping1jing2提醒标题需按贡献指南格式化,作者yang1002378395-cmyk回应确认标题已正确使用[diffusion] fix: ...格式,结论是标题正确无需修改。

实现拆解

仅修改了python/sglang/multimodal_gen/registry.py文件中的_get_config_info函数。具体改动:在未找到模型信息时,将raise RuntimeError替换为logger.debug并返回None。这样调用方可以处理None值并继续执行_get_diffusers_model_info中的diffusers后端加载逻辑,实现正确的回退机制。

文件 模块 状态 重要度
python/sglang/multimodal_gen/registry.py multimodal_gen modified 6.0

关键符号

_get_config_info

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

标题格式验证 style

ping1jing2 在 issue 评论中要求标题按 `docs/diffusion/contributing.md` 格式化,作者 yang1002378395-cmyk 回应确认标题已正确使用 `[diffusion] fix: ...` 格式。

结论:标题正确,无需修改,符合贡献指南。 · 已解决

代码变更审查 正确性

gemini-code-assist[bot] 在 review 评论中指出变更更新了错误处理,从抛出 RuntimeError 改为返回 None,允许更优雅的处理,无进一步反馈。

结论:变更被批准,无争议。 · 已解决

风险与影响

风险较低:变更仅影响错误处理路径,返回None替代抛出异常可能引入新问题(如调用方未正确处理None),但PR描述指出这允许diffusers逻辑继续,且现有测试通过,风险可控。代码逻辑简单,无性能或安全风险。

影响范围小:仅涉及扩散模型加载的回退机制,对现有功能和测试无负面影响(PR body提到现有测试继续通过)。用户能正常使用不支持的扩散模型,提高了系统兼容性和鲁棒性,对团队影响限于扩散模块的维护。

逻辑变更 错误处理调整

关联 Issue

#21311 [Bug] Diffusers fallback fails with "No model info found" for unregistered models

完整报告

参与讨论