Prhub

#21492 Fix benchmark generating empty prompts when random_input_len is small

sgl-project/sglang · 作者 hnyls2002 · 合并时间 2026-03-27 07:24

分析状态 已生成
文件变更 1提交数 1 · 评论 6
代码增减 +1 / -1
bugfix ci test

执行摘要

修复 benchmark 在 random_input_len=1 时生成空提示的 bug,防止服务器错误。

根据PR body描述,当random_input_len=1时,减去特殊token后输入长度可能为0,导致tokenizer.decode([])返回空字符串,服务器抛出'ValueError: texts cannot be empty and tokenizer must be initialized'错误。修复旨在保证输入长度至少为1,避免此类错误。

这个PR是一个简单的bugfix,变更逻辑直白。对于工程师,如果关心benchmark正确性或CI稳定性,可以快速浏览以了解问题根源。但整体上,无需深入分析设计决策。

讨论亮点

review中仅有一个bot评论,总结了变更内容并表明无反馈提供。没有实质性的技术讨论或争议点。结论是变更被接受,无未解决疑虑。

实现拆解

实现集中在python/sglang/benchmark/datasets/random.py文件的sample_random_requests函数中。关键改动是将计算输入长度的行从input_lens[i] = max(0, input_lens[i] - num_special_tokens)修改为input_lens[i] = max(1, input_lens[i] - num_special_tokens)。这确保了在调整特殊token后,输入长度至少为1,从而防止生成空提示。

文件 模块 状态 重要度
python/sglang/benchmark/datasets/random.py benchmark/datasets modified 5.0

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

关键符号

sample_random_requests

评论区精华

Bot review of the fix other

gemini-code-assist[bot] 评论总结了变更内容,表示无反馈提供。

结论:变更被接受,无争议。 · 已解决

风险与影响

风险较低。变更仅影响benchmark数据集的输入长度计算,可能导致生成的提示长度分布轻微变化(从可能为0变为至少1)。但考虑到random_input_len通常用于测试,这种变化对实际benchmark结果影响有限。此外,修复解决了服务器错误,减少了系统不稳定性。

对用户:benchmark测试将更稳定,不会因空提示而失败;对系统:防止了服务器在处理空输入时抛出异常,提高了健壮性;对团队:解决了CI中报告的问题,减少了调试时间。影响范围限于使用random数据集进行benchmark的场景。

benchmark 输入长度变化

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:修复benchmark在random_input_len=1时生成空提示的bug,防止服务器错误。
  • 推荐动作:这个PR是一个简单的bugfix,变更逻辑直白。对于工程师,如果关心benchmark正确性或CI稳定性,可以快速浏览以了解问题根源。但整体上,无需深入分析设计决策。

功能与动机

根据PR body描述,当random_input_len=1时,减去特殊token后输入长度可能为0,导致tokenizer.decode([])返回空字符串,服务器抛出'ValueError: texts cannot be empty and tokenizer must be initialized'错误。修复旨在保证输入长度至少为1,避免此类错误。

实现拆解

实现集中在python/sglang/benchmark/datasets/random.py文件的sample_random_requests函数中。关键改动是将计算输入长度的行从input_lens[i] = max(0, input_lens[i] - num_special_tokens)修改为input_lens[i] = max(1, input_lens[i] - num_special_tokens)。这确保了在调整特殊token后,输入长度至少为1,从而防止生成空提示。

关键文件:

  • python/sglang/benchmark/datasets/random.py(模块 benchmark/datasets): 修复了sample_random_requests函数中计算输入长度时的bug,防止生成空提示。

关键符号:sample_random_requests

评论区精华

review中仅有一个bot评论,总结了变更内容并表明无反馈提供。没有实质性的技术讨论或争议点。结论是变更被接受,无未解决疑虑。

  • Bot review of the fix (other): 变更被接受,无争议。

风险与影响

  • 风险:风险较低。变更仅影响benchmark数据集的输入长度计算,可能导致生成的提示长度分布轻微变化(从可能为0变为至少1)。但考虑到random_input_len通常用于测试,这种变化对实际benchmark结果影响有限。此外,修复解决了服务器错误,减少了系统不稳定性。
  • 影响:对用户:benchmark测试将更稳定,不会因空提示而失败;对系统:防止了服务器在处理空输入时抛出异常,提高了健壮性;对团队:解决了CI中报告的问题,减少了调试时间。影响范围限于使用random数据集进行benchmark的场景。
  • 风险标记:benchmark输入长度变化

关联脉络

  • PR #21413 Api add flush cache timeout: PR body中提到该问题是在PR #21413的CI运行中发现的,因此关联。

参与讨论