执行摘要
本PR修复了会话关闭时多模态特征未释放导致的GPU内存泄漏问题,通过统一清理模式并扩展CI的/rerun-ut命令支持多个测试规格。变更直接影响系统内存管理和CI效率,属于重要bugfix,建议关注session_controller.py中的内存清理逻辑。
功能与动机
PR旨在解决两个问题:首先,会话请求(session reqs)跳过正常清理路径,导致多模态特征张量在GPU内存中泄漏,这是#21269的后续跟进;其次,改进CI命令,使/rerun-ut能够一次性处理多个测试规格,如/rerun-ut test_a.py test_b.py,以提升测试流程的灵活性。
实现拆解
实现分为两部分:
- 多模态特征清理:
- 在
MultimodalInputs类(schedule_batch.py)中添加release_features()方法,遍历mm_items并将feature设为None,统一释放GPU内存。
- 在
session_controller.py的_close()方法中,会话关闭时调用release_features(),确保会话相关特征被释放;同时添加BOS偏移调整的防御性clamp和警告。
- 在
scheduler.py和scheduler_output_processor_mixin.py中,用release_features()替换原有的内联清理代码,减少重复逻辑。
- CI命令增强:
- 重构
slash_command_handler.py,将handle_rerun_ut拆分为_resolve_and_dispatch_ut,支持解析多个测试规格并分发工作流,最后整合结果到单个评论中。
评论区精华
无review评论,变更由作者直接合并,未经过外部技术讨论或争议。
风险与影响
风险:
关联脉络
本PR是#21269的直接后续,延续了多模态输入会话修复的工作线;同时,与#21495相关,后者修复了/rerun-ut的并发问题,显示CI基础设施的持续演进。结合近期PR如#21490(flush_cache重构),可见团队在调度和内存管理方面的优化趋势。
参与讨论