Prhub

#24512 Enhance diff and tensor-info logging in dumper grafter

原始 PR 作者 fzyzcjy 合并时间 2026-05-06 16:58 文件变更 2 提交数 9 评论 0 代码增减 +68 / -2

执行摘要

增强 Grafter 日志:输出张量信息和差异对比

在分布式调试场景中,Grafter 允许用一个进程的张量替换另一个进程的张量。原有日志仅输出 tagsextras,无法直观了解被替换张量的属性及替换效果。增强后的日志可直接观察到替换前后的形状、数值偏差,从而快速定位 graft 配置或 transform 函数的问题。

值得合入,为 Grafter 工具提供了关键的调试可见性。建议阅读 _compare_tensors_quick_calc_rel_diff 的实现,理解其设计思路(内联避免依赖、fp32 统一 dtype)。

讨论亮点

无实质性讨论。仅有一个自动化 bot 的评论,表示没有具体反馈。

实现拆解

  1. 发送方日志增强:在 maybe_intercept 的发送分支中,调用 get_tensor_info(value) 将张量元信息(形状、dtype、device、元素范围等)追加到 _log 输出中。
  2. 接收方日志增强:在接收分支中,先获取替换前的张量信息 info_before_overridden,然后调用 _compare_tensors_quick(value, value_to_override) 计算差异摘要,最后在日志中同时输出 before_overriddento_overridediff_pre_vs_new
  3. 新增辅助函数:在 dumper.py 末尾添加 _compare_tensors_quick(统一 dtype 为 fp32 后计算最大/平均绝对差和相对差异)和 _calc_rel_diff(基于 DeepGEMM 的余弦相似度变体),两者均内联实现以避免跨文件依赖。
  4. 配套测试:在 test_dumper.py 中新增 TestCompareTensorsQuick 类,覆盖 identical、diverged、shape_mismatch、dtype_unified、empty 五种场景。
文件 模块 状态 重要度
python/sglang/srt/debug_utils/dumper.py 调试工具 modified 7.55
test/registered/debug_utils/test_dumper.py 调试工具 modified 6.37

关键符号

_compare_tensors_quick _calc_rel_diff

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

评论区精华

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

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

风险与影响

风险极低。变更仅影响日志输出,不改变张量替换流程。新增的 _calc_rel_diff 函数在计算时将张量转为 float64,在大规模张量时可能消耗额外内存和计算,但由于仅在日志路径调用且 _compare_tensors_quicktry 块内,异常不会影响主线逻辑。

影响范围限于 Grafter 功能的日志输出,对系统核心性能、功能无影响。开发者可通过更丰富的日志更高效地调试分布式张量替换问题。测试覆盖保证了辅助函数的正确性。

低风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论