Prhub

#21294 [VLM] fix bench_serving sglang backend to support image dataset

原始 PR 作者 yhyang201 合并时间 2026-03-29 10:02 文件变更 1 提交数 2 评论 8 代码增减 +12 / -9

执行摘要

修复 sglang 后端在图像数据集基准测试中的兼容性,确保图像占位符触发 ViT 编码。

根据 PR body,当前 sglang 后端使用 use_raw_prompt = True 返回纯文本提示,导致图像占位符缺失,服务器无法触发 ViT 编码,基准测试实际运行的是纯文本场景。修复后,对 sglang 和 sglang-native 后端使用 prompt_str(带图像占位符),确保 ViT 被触发。

该 PR 值得精读,特别是对于理解 sglang 中多模态提示处理的设计决策,如不同后端对 chat template 的应用差异。关注 create_mm_data_row 函数中的逻辑拆分,以及如何通过占位符触发 ViT。

讨论亮点

Review 中 gemini-code-assist[bot] 赞扬了变更的清晰性和鲁棒性,mickqian 直接批准。Issue 评论中讨论了 CI 测试影响:yhyang201 指出修复可能影响四个 CI 测试的性能阈值(如 test_vlm_perf_5090.py),需要重新校准;mickqian 询问有效性,yhyang201 确认并通过了夜间测试,最终所有 CI 检查通过,可以合并。

实现拆解

修改集中在文件 python/sglang/benchmark/datasets/image.pycreate_mm_data_row 函数:

  1. 引入 supported_backends 列表(仅包含 'sglang', 'sglang-native', 'sglang-oai-chat'),对不支持的后端抛出 ValueError
  2. use_raw_prompt 的逻辑改为仅对 'sglang-oai-chat' 后端使用 raw prompt,而对 'sglang' 和 'sglang-native' 使用 prompt_str(包含图像占位符)。
  3. 返回的 DatasetRow 根据 use_raw_prompt 选择 text_promptprompt_str
文件 模块 状态 重要度
python/sglang/benchmark/datasets/image.py benchmark/datasets modified 7.0

关键符号

create_mm_data_row

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

评论区精华

CI 测试性能校准 测试

yhyang201 和 mickqian 在 issue 评论中讨论修复对 CI 测试阈值的影响,涉及 test_vlm_perf_5090.py 等四个文件,需要重新校准。

结论:夜间测试通过,确认修复有效且不影响现有测试文件,可以合并。 · 已解决

风险与影响

技术风险包括:

  1. 回归风险:变更仅针对特定后端,但可能影响其他基准测试场景(如文本数据集),不过 supported_backends 限制降低了此风险。
  2. CI 测试稳定性:修复后图像处理逻辑变化,可能导致性能测试结果波动,需要重新校准阈值(如 issue 评论中提到的四个测试文件)。
  3. 兼容性风险:抛出错误可能中断使用非支持后端的现有工作流,但这是设计上的明确限制。

影响范围:

  • 用户:运行图像数据集基准测试的开发者将看到正确的多模态行为,性能测量更准确。
  • 系统:sglang 后端现在能正确处理图像输入,提升基准测试的真实性。
  • 团队:CI 测试需要调整性能阈值,影响测试维护,但夜间测试已验证通过。影响程度:中等,仅限于图像数据集和特定后端。
CI 测试校准需求 后端兼容性限制

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论