Prhub

#22463 Add skills for debugging hanging issues

原始 PR 作者 ispobock 合并时间 2026-04-10 01:37 文件变更 1 提交数 3 评论 3 代码增减 +248 / -0

执行摘要

新增调试分布式推理挂起问题的技能文档,提供系统化排查方法。

动机源于 Issue #22276,该 Issue 描述了在 Qwen3 Next MTP 的 CI 测试中,服务器在分布式推理过程中因 NCCL AllGather 死锁而挂起。为解决此类问题,添加了一个技能文档来提供标准化的调试流程。

建议团队阅读此技能文档以掌握分布式调试方法,但无需精读代码变更。对于从事分布式推理开发的工程师,此文档是宝贵的参考资料。

讨论亮点

review 中,gemini-code-assist[bot] 提出了三个改进点:

1) 修复 log 文件路径安全风险,建议使用相对路径或包含 PID;
2) 优化 tensor hashing 效率,避免转换为 Python 列表;
3) 确保测试脚本正确捕获 pytest 失败。这些建议已在提交历史中被采纳到文档更新中,提升了健壮性和准确性。

实现拆解

实现仅涉及一个新增文件:.claude/skills/debug-distributed-hang/SKILL.md。文档内容结构化分为多个步骤:首先通过 py-spy 和 watchdog 确认挂起位置;然后使用 NCCL 调试日志检查 collective 操作;接着利用 CUDA coredump 分析挂起内核;最后通过每 rank 日志记录和二进制搜索定位状态分歧点。还包括常见原因和修复模式。

文件 模块 状态 重要度
.claude/skills/debug-distributed-hang/SKILL.md .claude/skills added 5.0

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

评论区精华

Log file path security 安全

评论指出使用固定 /tmp 路径可能导致权限冲突或安全风险(如符号链接攻击)。

结论:建议使用相对路径或包含 PID 的文件名确保唯一性,已在文档中更新。 · 已解决

Tensor hashing efficiency 性能

评论指出将大 tensor 转换为 Python 列表和字符串效率低下,可能引发 AttributeError。

结论:建议使用 tobytes() 方法改进哈希计算,已在文档中更新。 · 已解决

Test script exit code handling 测试

评论指出管道到 tail 可能掩盖 pytest 失败,导致循环无法正确检测失败。

结论:建议移除管道或使用 set -o pipefail,已在文档中更新。 · 已解决

风险与影响

风险较低,因为这是纯文档变更,不直接影响代码执行。主要风险是文档内容可能过时或不准确,但 review 过程中的改进已缓解此问题;此外,依赖外部工具如 py-spy 和 cuda-gdb 可能增加使用复杂性。

对用户和开发者:提供实用的调试指南,有助于快速解决分布式挂起问题,减少停机时间。对系统:无直接性能或安全影响。对团队:标准化调试流程,提升问题排查效率和协作能力。

文档准确性风险 外部工具依赖

关联 Issue

#22276 [Bug] NCCL AllGather deadlock in Qwen3 Next MTP

完整报告

参与讨论