Prhub

#46859 [Hardware][AMD][CI] Fix Kernels Quantization test timeout

原始 PR 作者 mawong-amd 合并时间 2026-06-27 04:19 文件变更 1 提交数 1 评论 0 代码增减 +29 / -28

执行摘要

修复 AMD CI NVFP4 量化测试超时,临时移除不稳定模型

AMD CI 的 Kernels Quantization 测试组因 test_nvfp4_moe_correctness 下载 nvidia/Kimi-K2.6-NVFP4 模型的 shard 文件超时,导致整个测试套件挂起 6 小时。PR #44667 合并后引入该问题,nvidia/Kimi-K2.6-NVFP4 的单个文件(如 model-00002-of-00060.safetensors)下载不稳定。

该 PR 值得合并。建议后续跟踪 nvidia/Kimi-K2.6-NVFP4 下载稳定性问题,待网络问题解决后重新添加该模型配置。fixture 设计值得在其他 CI 测试中推广。

讨论亮点

该 PR 无 review 评论,仅由 Claude bot 自动评论(来自 fork,未触发审核),以及 maintainer AndreasKaratzas 直接批准。

实现拆解

  1. 添加 MOE_MODEL_CONFIGS 字典:在文件顶部集中定义模型配置(shard 文件列表、专家前缀等),替代原来分散在多个函数中的硬编码。
  2. 创建 loaded_model_files fixture:使用 pytestscope="module" fixture,在模块级别执行 huggingface_hub.snapshot_download,确保整个模块内的测试共享相同的下载路径,避免重复下载。
  3. 更新测试函数test_triton_dequantize_nvfp4test_nvfp4_moe_correctness 改为接收 loaded_model_files fixture,并使用 MOE_MODEL_CONFIGS 获取 shard 路径和专家前缀。
  4. 移除 Kimi-K2.6-NVFP4 模型:从 MOE_MODEL_CONFIGS 字典中删除该模型条目,暂时规避其下载超时问题,待网络问题解决后可重新添加。
  5. 清理重复下载逻辑_load_nvfp4_moe_weights 函数也改为使用 fixture 提供的路径,消除直接调用 huggingface_hub.snapshot_download 的冗余代码。
文件 模块 状态 重要度
tests/kernels/quantization/test_nvfp4_emulation.py 量化测试 modified 6.28

关键符号

loaded_model_files test_triton_dequantize_nvfp4

关键源码片段

tests/kernels/quantization/test_nvfp4_emulation.py test-coverage

唯一变更文件,重构模型下载逻辑,添加 fixture,移除不稳定的模型配置

# 集中管理模型下载配置,避免硬编码
MOE_MODEL_CONFIGS = {
    "nvidia/Qwen3-30B-A3B-NVFP4": {
        "shards": ["model-00001-of-00004.safetensors"],
        "expert_prefix": "model.layers.9.mlp.experts.",
        "expert_idx_pos": 5,
    }
}
​
​
@pytest.fixture(scope="module")
def loaded_model_files():
    # 模块级 fixture:只下载一次,所有测试共享
    return {
        model_id: huggingface_hub.snapshot_download(
            repo_id=model_id, allow_patterns=config["shards"]
        )
        for model_id, config in MOE_MODEL_CONFIGS.items()
    }
​
​
# 测试函数改为接受 fixture,避免重复下载
def test_triton_dequantize_nvfp4(monkeypatch, loaded_model_files) -> None:
    checkpoint_path = loaded_model_files["nvidia/Qwen3-30B-A3B-NVFP4"]
    shards = cast(list[str], MOE_MODEL_CONFIGS["nvidia/Qwen3-30B-A3B-NVFP4"]["shards"])
    shard_path = f"{checkpoint_path}/{shards[0]}"
    # ... 其余测试逻辑不变

评论区精华

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

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

风险与影响

回归风险:移除 nvidia/Kimi-K2.6-NVFP4 意味着该模型的 NVFP4 MoE 测试暂时跳过。若后续有修改影响该模型,CI 无法捕获,需在重新添加后回归。
性能影响:模块级 fixture 可能延长首次运行时间,但避免了每函数重复下载,整体测试时间应减少。
兼容性:无,仅修改测试文件。

CI 稳定性:直接修复 AMD CI 的 Kernels Quantization 测试组 6 小时超时问题,使其能按预期快速完成。
测试覆盖:暂时降低了对 nvidia/Kimi-K2.6-NVFP4 模型 NVFP4 量化路径的测试覆盖,但保持了对 nvidia/Qwen3-30B-A3B-NVFP4 的覆盖。
团队:AMD 硬件 CI 受益,开发者可更快获得测试反馈。

CI 超时修复 测试覆盖暂降

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论