# PR #21294 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[VLM] fix bench_serving sglang backend to support image dataset 
- 合并时间：2026-03-29 10:02
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21294

---

# 执行摘要
该 PR 修复了 sglang 后端在图像数据集基准测试中的兼容性缺陷，通过调整提示处理逻辑和限制支持后端，确保图像占位符能正确触发视觉编码器（ViT）。变更影响 VLM 相关 CI 测试的性能校准，但夜间测试已通过验证，值得关注其多模态设计决策。

# 功能与动机
**为什么做**：原始代码中，sglang 后端使用 raw prompt（纯文本）处理图像数据集，导致图像占位符缺失，服务器无法触发 ViT，基准测试实际上运行的是纯文本场景。如 PR body 所述："Old code: `input_ids` does not contain any image placeholder tokens... the server cannot find any image placeholder token, and the ViT is never triggered." 修复后，对 sglang 后端使用包含占位符的 `prompt_str`，确保多模态输入被正确处理。

# 实现拆解
**做了什么**：修改集中在 `python/sglang/benchmark/datasets/image.py` 文件的 `create_mm_data_row` 函数。关键变更点如下：

- **后端限制**：引入 `supported_backends` 列表，仅允许 `["sglang", "sglang-native", "sglang-oai-chat"]`，对不支持的后端抛出 `ValueError`。
- **提示逻辑调整**：将 `use_raw_prompt` 从基于多个后端改为仅对 `"sglang-oai-chat"` 使用 raw prompt，而对 `"sglang"` 和 `"sglang-native"` 使用 `prompt_str`（带图像占位符）。
- **返回数据**：根据 `use_raw_prompt` 返回 `text_prompt` 或 `prompt_str`，影响后续 tokenization 和服务器处理。

代码片段示例：
```python
supported_backends = ["sglang", "sglang-native", "sglang-oai-chat"]
if backend not in supported_backends:
    raise ValueError(...)
use_raw_prompt = backend == "sglang-oai-chat"
```

# 评论区精华
**讨论了什么**：Review 中 gemini-code-assist[bot] 评论："The pull request effectively addresses the compatibility issue... enhances robustness and clarity." Issue 评论中，yhyang201 和 mickqian 就 CI 测试影响展开讨论：
- yhyang201 指出："This fix may affect the performance thresholds of the following four impacted CI tests... which will likely need to be recalibrated."（涉及 test_vlm_perf_5090.py 等文件）
- 经过夜间测试，结论是："All CI checks have passed, so it can be merged. The test files are unaffected."

# 风险与影响
**技术风险**：
1. **回归风险**：变更可能意外影响文本数据集基准测试，但 `supported_backends` 限制和逻辑隔离降低了此风险。
2. **CI 测试稳定性**：性能阈值需要重新校准，否则可能导致测试失败或误导结果；然而，夜间测试已通过，表明风险可控。
3. **兼容性中断**：对非支持后端抛出错误可能中断现有工作流，但这是明确的设计选择以提高鲁棒性。

**影响范围**：
- 用户端：开发者运行图像数据集基准测试时，将获得准确的多模态性能数据。
- 系统端：sglang 后端现在能正确集成视觉处理，提升基准测试的真实性。
- 团队端：CI 维护需关注阈值调整，但无重大架构变更。

# 关联脉络
**更大演进方向**：从近期 PR 看，该 PR 与 #21236（修改 bench_serving.py 文件）和 #19915（多模态兼容性修复）相关联，表明仓库在持续优化基准测试套件和多模态支持。结合历史 PR，sglang 项目正加强对 VLM 和图像处理的技术投入，如 PR #19749 和 #21418 也涉及多模态性能优化。本 PR 是该演进中的一环，旨在确保基准测试工具链的准确性和可靠性。