Prhub

#27001 [AMD] [CI] Remove hardcoded model/cache paths from MI35x nightly tests

原始 PR 作者 bingxche 合并时间 2026-06-03 17:14 文件变更 27 提交数 3 评论 3 代码增减 +11 / -471

执行摘要

移除 MI35x nightly 测试硬编码的 /data2 路径

PR body 指出 MI35x accuracy/perf nightly tests 中硬编码了 machine-specific 的 /data2 挂载,这并非预期行为。更改后模型解析为 HF ID 并下载到默认 cache,消除对特定 runner 环境的依赖。

此次变更为纯粹的测试基础设施清理,逻辑简单且已获 Approve。适合 CI 维护者快速合入,无需深度 review。关注模型 ID 的准确性即可。

讨论亮点

该 PR 未产生实质性 review 讨论,仅有 Gemini Code Assist 的 quota 提示和两位 reviewer(yctseng0211、HaiShaw)的 Approve。

实现拆解

  1. 在每个 MI35x 测试文件顶部删除 os.environ.setdefault("HF_HOME", ...)os.environ.setdefault("HF_HUB_CACHE", ...) 两行,不再将 HF cache 重定向到 /data2
  2. 移除模块级别的 DEEPSEEK_R1_MXFP4_LOCAL_PATH(/data2/...)、DEEPSEEK_R1_MXFP4_HF_MODEL_ID 等本地路径常量。
  3. 删除各文件中的 get_model_path() 函数(优先环境变量 → 本地路径 → HF ID 的 fallback 链)。
  4. setUpClassget_mxfp4_models() 中对 get_model_path() 的调用替换为直接赋值的 HF 模型 ID(如 "amd/DeepSeek-R1-MXFP4-Preview")。
  5. 删除 test_bench_one_batch 等测试方法中检查本地路径是否存在的 is_local_path 判断和 skip 逻辑,以及对应的 log 输出。
  6. 清理 docstring 中与环境变量相关的 example usage 说明。
  7. 仅保留测试运行所必需的 import 和辅助函数,部分文件移除了多余的 import os(当 os 不再使用时)。
文件 模块 状态 重要度
test/registered/amd/perf/mi35x/test_deepseek_r1_mxfp4_perf_mi35x.py 性能测试 modified 5.57
test/registered/amd/accuracy/mi35x/test_deepseek_r1_mxfp4_eval_mi35x.py 精度测试 modified 5.09
test/registered/amd/accuracy/mi35x/test_qwen3_coder_next_eval_mi35x.py 精度测试 modified 5.09

关键符号

get_model_path

关键源码片段

test/registered/amd/perf/mi35x/test_deepseek_r1_mxfp4_perf_mi35x.py test-coverage

DeepSeek-R1-MXFP4 性能测试入口,变更典型:删除 get_model_path + is_local_path 跳过逻辑、内联模型 ID

"""MI35x Nightly performance benchmark for DeepSeek-R1-MXFP4 model."""import os
import unittest
from typing import List# ... 导入及辅助函数 ...class TestDeepseekR1MXFP4PerfMI35x(unittest.TestCase):
    """Tests the DeepSeek-R1-MXFP4 quantized model on TP=8 with DP=8."""
​
    @classmethod
    def setUpClass(cls):
        # 原逻辑:cls.model = get_model_path() // 优先 env var > /data2 本地路径 > HF ID
        # 现直接固定为 HuggingFace 模型 ID,不再查询本地路径,消除机器绑定。
        cls.model = "amd/DeepSeek-R1-MXFP4-Preview"
        print(f"Using model path: {cls.model}")
        cls.base_url = DEFAULT_URL_FOR_TEST
        cls.batch_sizes = [1, 8, 16, 64]
        cls.input_lens = tuple(_parse_int_list_env("NIGHTLY_INPUT_LENS", "4096"))
        cls.output_lens = tuple(_parse_int_list_env("NIGHTLY_OUTPUT_LENS", "512"))
​
        cls.variants = [
            {
                "name": "basic",
                "other_args": [
                    "--trust-remote-code",
                    "--tp", "8",
                    "--chunked-prefill-size", "131072",
                    "--disable-radix-cache",
                    "--mem-fraction-static", "0.85",
                ],
            },
        ]
        # ... 省略后续 setup ...
​
    def test_bench_one_batch(self):
        # 移除了原有的 is_local_path 检查与 skip 逻辑:
        # is_local_path = self.model.startswith("/")
        # if is_local_path and not os.path.exists(self.model):
        # self.skipTest(...)
        # 现在模型一定是 HF ID,运行时将自动下载(若未缓存)。
        failed_variants = []
        try:
            for variant_config in self.variants:
                with self.subTest(variant=variant_config["name"]):
                    result_tuple = self.runner.run_benchmark_for_model(
                        model_path=self.model,
                        batch_sizes=self.batch_sizes,
                        input_lens=self.input_lens,
                        output_lens=self.output_lens,
                        other_args=variant_config["other_args"],
                        variant=variant_config["name"],
                        extra_bench_args=["--trust-remote-code"],
                        enable_profile=False,
                    )
                    # ... 处理结果 ...
        finally:
            self.runner.write_final_report()

评论区精华

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

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

风险与影响

低风险。测试行为由依赖本地预缓存改为在线下载 HF 模型,若 CI runner 网络不可达或模型 ID 发生变更则测试失败。另需确保替换后的模型 ID(如 amd/DeepSeek-R1-MXFP4-Preview)与之前路径指向的模型完全一致。

影响范围限定于 AMD MI35x 的 nightly 测试(performance 和 accuracy 共约 27 个文件)。正面影响:测试不再绑定特定机器挂载,可在任意 runner 上复用。负面影响:首次运行时需下载模型,测试时长可能增加,但 nightly 任务在时间上可接受。对 sglang 核心逻辑无影响。

依赖 HF 模型在线 模型 ID 准确性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论