Prhub

#21507 [NPU] fix conflict between empty_cache and use_mem_pool

原始 PR 作者 xiazhahe 合并时间 2026-03-31 15:37 文件变更 3 提交数 7 评论 2 代码增减 +5 / -3

执行摘要

修复 NPU 内存缓存冲突,并更新 Triton 不支持的后端列表。

根据PR body,self.memory_saver_adapter.region调用torch.npu.use_mem_pool函数时,如果在该函数范围内执行empty_cache操作,会发生冲突。因此需要修复此问题以避免潜在崩溃。

该PR变更直接,适合快速浏览以了解NPU内存管理优化。建议关注empty_cache调用位置的调整,以及如何避免类似的内存冲突问题。

讨论亮点

本次PR没有review讨论,直接由维护者合并。

实现拆解

关键改动分为三部分:

  1. 在model_runner.py的load_model函数中添加torch.npu.empty_cache()调用,并注释说明移动原因以避免冲突。
  2. 在loader.py的load_weights_and_postprocess函数中删除相同的empty_cache调用,消除重复操作。
  3. 在common.py的support_triton函数中添加'ascend'到不支持backend列表,确保Triton正确标记。
文件 模块 状态 重要度
python/sglang/srt/model_executor/model_runner.py model_executor modified 6.0
python/sglang/srt/model_loader/loader.py model_loader modified 4.0
python/sglang/srt/utils/common.py utils modified 3.0

关键符号

load_model load_weights_and_postprocess support_triton

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

评论区精华

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

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

风险与影响

风险包括:移动empty_cache调用位置可能改变内存清理时机,影响NPU内存池管理;修改backend支持列表可能影响依赖此函数的其他模块。由于变更较小,回归风险低,但建议测试NPU相关场景以确保稳定性。

对用户:解决NPU上模型加载时可能的内存冲突,提升稳定性。对系统:优化NPU内存管理,避免崩溃。对团队:为ascend backend添加明确支持标记,促进后端兼容性。

内存管理变更 缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论