# PR #21319 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[diffusion] fix: return None instead of raising RuntimeError when no model info found
- 合并时间：2026-03-27 22:42
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21319

---

# 执行摘要

- 一句话：修复扩散模型加载回退失败问题，将 RuntimeError 改为返回 None 以实现优雅回退。
- 推荐动作：对于开发扩散模型模块或处理模型加载逻辑的工程师，此 PR 值得快速浏览，了解如何优雅处理未注册模型的回退机制，关注 _get_config_info 函数的错误处理设计。

# 功能与动机

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

# 实现拆解

仅修改了 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）: 修改了 _get_config_info 函数，实现错误处理逻辑从抛出 RuntimeError 改为返回 None，以支持扩散模型回退到 diffusers 后端。

关键符号：_get_config_info


# 评论区精华

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

- 标题格式验证 (style): 标题正确，无需修改，符合贡献指南。
- 代码变更审查 (correctness): 变更被批准，无争议。

# 风险与影响

- 风险：风险较低：变更仅影响错误处理路径，返回 None 替代抛出异常可能引入新问题（如调用方未正确处理 None），但 PR 描述指出这允许 diffusers 逻辑继续，且现有测试通过，风险可控。代码逻辑简单，无性能或安全风险。
- 影响：影响范围小：仅涉及扩散模型加载的回退机制，对现有功能和测试无负面影响（PR body 提到现有测试继续通过）。用户能正常使用不支持的扩散模型，提高了系统兼容性和鲁棒性，对团队影响限于扩散模块的维护。
- 风险标记：逻辑变更 , 错误处理调整

# 关联脉络

- PR #21320 feat: add --strict-ports option for predictable port assignment: 也修改了 python/sglang/multimodal_gen/registry.py 文件，显示该文件在扩散模块中的重要性。