Prhub

#18569 Add symmetric debug mode to print stack trace of comm ops with unregistered tensors

原始 PR 作者 nvcastet 合并时间 2026-04-09 13:34 文件变更 4 提交数 2 评论 5 代码增减 +89 / -0

执行摘要

新增对称内存调试模式,打印通信操作中未注册张量的堆栈跟踪。

根据PR body中的表述,动机是'Add symmetric debug mode to print stack trace of comm ops with unregistered tensors',以定位未在NCCL对称内存池中注册的张量,这对于调试内存相关问题和确保通信效率至关重要。示例日志展示了从all_reduce操作回溯到模型前向传播的完整堆栈跟踪。

建议开发者在调试分布式内存问题时精读pynccl_allocator.py中的debug_check_symmetric_mempool函数,关注其去重机制和堆栈跟踪生成方式,这对于理解对称内存池管理有价值。

讨论亮点

Review中仅有两位审核者(hlu1和Fridge003)的批准,无具体评论,表明变更被认可且无争议。结论是直接合并,无需修改。

实现拆解

实现分为四个关键改动点:

1) 在python/sglang/srt/distributed/device_communicators/pynccl_allocator.py中添加debug_check_symmetric_mempool函数,检查张量是否在对称内存池中并打印去重堆栈跟踪;
2) 在python/sglang/srt/distributed/parallel_state.py的all_reduce、reduce_scatter_tensor、all_gather_into_tensor方法中调用该调试检查;
3) 在python/sglang/srt/environ.py中定义新环境变量SGLANG_DEBUG_SYMM_MEM;
4) 更新docs/references/environment_variables.md文档记录该变量。

文件 模块 状态 重要度
python/sglang/srt/distributed/device_communicators/pynccl_allocator.py distributed modified 8.0
python/sglang/srt/distributed/parallel_state.py distributed modified 7.0
docs/references/environment_variables.md documentation modified 3.0
python/sglang/srt/environ.py core modified 4.0

关键符号

debug_check_symmetric_mempool is_tensor_in_symmetric_mempool

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

评论区精华

批准无评论 other

审核者 hlu1 和 Fridge003 均批准,无具体评论或讨论。

结论:变更被接受并合并。 · 已解决

风险与影响

风险包括:启用调试模式时,在pynccl_allocator.py中的检查逻辑可能引入额外性能开销,因需遍历内存池块并生成堆栈跟踪;日志去重机制基于堆栈字符串哈希,可能漏报不同场景的相同张量问题;未添加单元测试,覆盖不足,回归风险较高。

对用户影响:提供新调试工具,帮助诊断对称内存注册问题,提升问题排查效率;对系统影响:默认关闭,启用时增加日志输出和轻微性能开销,仅影响rank 0;对团队影响:需了解新环境变量SGLANG_DEBUG_SYMM_MEM的使用和调试模式输出格式。

性能开销 缺少测试覆盖 日志去重可能漏报

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论