Prhub

#24604 [Bugfix] Fix a bug causing NVFP4 to be tested on all gpus like SM90 devices.

原始 PR 作者 xz-keg 合并时间 2026-05-09 02:51 文件变更 1 提交数 7 评论 5 代码增减 +11 / -5

执行摘要

修复 NVFP4 测试在非 Blackwell GPU 上误跑的问题

在 SM90 设备上运行 pytest test/registered/unit/layers -v 时,NVFP4 测试因只检查 CUDA 存在而错误执行,导致测试失败。PR 旨在将 NVFP4 测试限定在支持该特性的 Blackwell GPU 上。

本 PR 解决了测试隔离问题,值得合入。建议后续在 is_blackwell 函数中添加更多架构版本时同步更新此测试。

讨论亮点

gemini-code-assist[bot] 在 review 中指出,NVFP4KVMethod 实现似乎支持 SM100 和 SM120,而初始 skip 条件 skip_if_no_sm120 仅限制在 SM120,建议放宽到 Blackwell 系列(SM100/SM120)或补充注释。作者 xz-keg 随后将函数改为 skip_if_no_blackwell_nvfp4 并使用 is_blackwell(),以涵盖 SM100 和 SM120。

实现拆解

  1. 替换 skip 装饰器:在 test/registered/unit/layers/quantization/test_fp4_kv_cache_quant_method.py 中,将 skip_if_no_cuda 函数替换为 skip_if_no_blackwell_nvfp4,从 sglang.srt.utils 导入 is_blackwell 进行架构判断。
  2. 动态获取 sm_version:在 test_quantize_dequantize_roundtrip 测试中,原本硬编码 sm_version=120,现改为通过 torch.cuda.get_device_capability() 动态获取当前 GPU 的计算能力,提高了测试的通用性。
  3. 调整导入:新增对 is_blackwell 的导入,并删除了未被使用的 torch 相关导入(如 unittest 仍保留)。
文件 模块 状态 重要度
test/registered/unit/layers/quantization/test_fp4_kv_cache_quant_method.py 量化测试 modified 5.04

关键符号

skip_if_no_blackwell_nvfp4 test_quantize_dequantize_roundtrip

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

评论区精华

Skip 条件应涵盖 SM100 和 SM120 正确性

gemini-code-assist[bot] 指出初始的 skip_if_no_sm120 仅限制 SM120,但底层实现可能也支持 SM100,建议放宽或补充注释。

结论:作者将 skip 条件改为 skip_if_no_blackwell_nvfp4 并使用 is_blackwell() 以包含 SM100 和 SM120。 · 已解决

风险与影响

低风险。变更仅涉及测试文件,不影响任何生产代码。主要风险是 is_blackwell()is_blackwell 导入可能未正确匹配所有 Blackwell 架构,但已有测试验证其行为。

影响范围局限于单元测试。SM90 等非 Blackwell GPU 将跳过 NVFP4 测试,避免误报失败。Blackwell GPU 上测试行为不变。

测试隔离修复

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论