Prhub

#21269 Fix sessions with mm inputs

sgl-project/sglang · 作者 aurickq · 合并时间 2026-03-27 08:38

分析状态 已生成
文件变更 3提交数 4 · 评论 4
代码增减 +26 / -30
bugfix test scheduling

执行摘要

修复会话中多模态输入的内存清除和偏移调整,恢复视觉会话测试。

根据PR body,作者指出:'We can only clear multimodal inputs from the request if it's not part of any session. Otherwise, it may be reused later. - We need to adjust mm offsets if bos token is trimmed - Bring back Vision Sessions test using InternVL2'。这表明需要修复会话中多模态输入的处理错误和测试回归。

建议工程师精读session_controller.py中的偏移调整逻辑和测试文件的变更,关注多模态输入在会话中的生命周期管理。

讨论亮点

Review中没有详细讨论,只有mickqian的批准。但Issue评论中提到一个follow-up PR #21501,用于在会话关闭时释放多模态特征并加强偏移调整,表明本PR是基础修复的一部分。

实现拆解

实现分为三个部分:1) 在scheduler_output_processor_mixin.pyprocess_batch_result_decode函数中添加条件req.session is None,防止清除会话中的多模态特征;2) 在session_controller.pycreate_req函数中添加偏移调整逻辑,当BOS令牌被裁剪时,将mm_item.offsets每个元素减1;3) 在测试文件test_session_control.py中,将模型从'llava-onevision-qwen2-7b-ov'改为'OpenGVLab/InternVL2-2B',并简化输入处理,直接使用文本而非input_ids。

文件 模块 状态 重要度
python/sglang/srt/managers/scheduler_output_processor_mixin.py scheduling modified 6.0
python/sglang/srt/managers/session_controller.py session management modified 7.0
test/registered/sessions/test_session_control.py testing modified 5.0

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

关键符号

process_batch_result_decode create_req test_session_control

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险包括:偏移调整逻辑可能未覆盖所有情况,如offsets为空时;测试变更可能引入对InternVL2模型的依赖,影响其他测试;内存管理条件req.session is None可能不够全面,例如会话状态变化时。需要确保这些修改不会引入回归错误。

对用户影响:修复后,多模态会话将正常工作,避免特征丢失或偏移错误。对系统影响:提高多模态处理的稳定性和测试覆盖。对团队影响:恢复视觉会话测试,有助于后续开发。

偏移调整潜在错误 测试模型变更影响 内存管理条件不完整

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:修复会话中多模态输入的内存清除和偏移调整,恢复视觉会话测试。
  • 推荐动作:建议工程师精读session_controller.py中的偏移调整逻辑和测试文件的变更,关注多模态输入在会话中的生命周期管理。

功能与动机

根据PR body,作者指出:'We can only clear multimodal inputs from the request if it's not part of any session. Otherwise, it may be reused later. - We need to adjust mm offsets if bos token is trimmed - Bring back Vision Sessions test using InternVL2'。这表明需要修复会话中多模态输入的处理错误和测试回归。

实现拆解

实现分为三个部分:1) 在scheduler_output_processor_mixin.pyprocess_batch_result_decode函数中添加条件req.session is None,防止清除会话中的多模态特征;2) 在session_controller.pycreate_req函数中添加偏移调整逻辑,当BOS令牌被裁剪时,将mm_item.offsets每个元素减1;3) 在测试文件test_session_control.py中,将模型从'llava-onevision-qwen2-7b-ov'改为'OpenGVLab/InternVL2-2B',并简化输入处理,直接使用文本而非input_ids。

关键文件:

  • python/sglang/srt/managers/scheduler_output_processor_mixin.py(模块 scheduling): 防止错误清除会话中的多模态特征,确保特征重用
  • python/sglang/srt/managers/session_controller.py(模块 session management): 调整多模态偏移量以匹配BOS令牌裁剪,保证输入对齐
  • test/registered/sessions/test_session_control.py(模块 testing): 恢复并更新视觉会话测试,验证修复效果

关键符号:process_batch_result_decode, create_req, test_session_control

评论区精华

Review中没有详细讨论,只有mickqian的批准。但Issue评论中提到一个follow-up PR #21501,用于在会话关闭时释放多模态特征并加强偏移调整,表明本PR是基础修复的一部分。

  • 暂无高价值评论线程

风险与影响

  • 风险:风险包括:偏移调整逻辑可能未覆盖所有情况,如offsets为空时;测试变更可能引入对InternVL2模型的依赖,影响其他测试;内存管理条件req.session is None可能不够全面,例如会话状态变化时。需要确保这些修改不会引入回归错误。
  • 影响:对用户影响:修复后,多模态会话将正常工作,避免特征丢失或偏移错误。对系统影响:提高多模态处理的稳定性和测试覆盖。对团队影响:恢复视觉会话测试,有助于后续开发。
  • 风险标记:偏移调整潜在错误, 测试模型变更影响, 内存管理条件不完整

关联脉络

  • PR #21501 Release mm features on session close and support multiple /rerun-ut specs: 作为本PR的后续修复,扩展了多模态特征在会话关闭时的内存释放和偏移调整逻辑。

参与讨论