Prhub

#25684 [CI] Enable weight prefetch for 8-gpu-h200 basic tests

原始 PR 作者 ch-wan 合并时间 2026-05-19 05:12 文件变更 2 提交数 3 评论 5 代码增减 +4 / -2

执行摘要

为 8-GPU H200 CI 测试启用权重预取

8-GPU H200 CI 套件中有两个每次提交必运行的测试(TestMiniMaxM25BasicTestUnifiedMambaHiCache)完全被检查点权重加载所主导。如 PR body 所述:"Without prefetch, the loader streams shards from disk before staging them to GPU, which inflates server boot time and slows the per-commit gate." 目标是通过已存在的 --weight-loader-prefetch-checkpoints 标志让磁盘读取与 H2D 拷贝重叠,从而加速 CI 流水线。

该 PR 技术难度低、风险小,但效益显著,建议快速合并。其中值得关注的设计决策是在多线程加载的同时启用预取——两者叠加带来了 5.9× 的加载加速,表明两者协作良好。后续可将此标志扩展到其他 8-GPU 测试,以进一步加速 CI 套件。

讨论亮点

无 review 评论或讨论。作者通过 /rerun-test 命令手动触发了两次 CI 运行(test_minimax_m25_basic.pytest_unified_radix_cache_kl_hicache.py),均通过。

实现拆解

  1. 在 Minimax M2.5 测试中启用预取:在 test/registered/8-gpu-models/test_minimax_m25_basic.pysetUpClass 中,将 "--weight-loader-prefetch-checkpoints" 添加到 popen_launch_serverother_args 列表。该标志与现有的多线程加载配置(enable_multithread_load: true, num_threads: 64)协同工作。

  2. 在 Mamba HiCache 测试中启用预取:在 test/registered/radix_cache/test_unified_radix_cache_kl_hicache.pyTestUnifiedMambaHiCache.setUpClass 中,将 "--weight-loader-prefetch-checkpoints" 添加到 other_args 列表末尾。另一个测试类 TestUnifiedDeepSeekV4FlashHiCache 保持不变。

  3. 更新预估运行时间:根据实测运行时间更新 register_cuda_ci(est_time=...) 调用的时间参数。MiniMax 测试从 290s 降至 250s(实际 246s),Mamba 测试从 768s 降至 745s(实际 747s),使调度器能更准确分配时间窗口。

文件 模块 状态 重要度
test/registered/8-gpu-models/test_minimax_m25_basic.py MiniMax 测试 modified 3.96
test/registered/radix_cache/test_unified_radix_cache_kl_hicache.py HiCache 测试 modified 3.75

关键源码片段

test/registered/8-gpu-models/test_minimax_m25_basic.py test-coverage

为该 MiniMax-M2.5 TP=8 测试添加 `--weight-loader-prefetch-checkpoints` 标志,并将 `est_time` 从 290s 更新为 250s。是 CI 时间节省的主要贡献者(权重加载从 120.88s→20.32s)。

# test/registered/8-gpu-models/test_minimax_m25_basic.py
# 改动:新增预取标志并更新 est_timeregister_cuda_ci(est_time=250, stage="base-c", runner_config="8-gpu-h200")class TestMiniMaxM25Basic(CustomTestCase):
    @classmethod
    def setUpClass(cls):
        cls.model = MINIMAX_M25_MODEL_PATH
        cls.base_url = DEFAULT_URL_FOR_TEST
        other_args = [
            "--trust-remote-code",
            "--tp", "8",
            "--ep-size", "8",
            "--mem-fraction-static", "0.85",
            "--reasoning-parser", "minimax-append-think",
            "--model-loader-extra-config",
            '{"enable_multithread_load": true, "num_threads": 64}',
            "--weight-loader-prefetch-checkpoints", # 新增:启用权重预取以重叠磁盘读取与 H2D 拷贝
        ]
        cls.process = popen_launch_server(
            cls.model,
            cls.base_url,
            timeout=DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
            other_args=other_args,
        )
test/registered/radix_cache/test_unified_radix_cache_kl_hicache.py test-coverage

为 TestUnifiedMambaHiCache 测试添加 `--weight-loader-prefetch-checkpoints` 标志,并将 `est_time` 从 768s 更新为 745s。权重加载从 57.05s→23.82s(2.4× 加速)。另一测试类 TestUnifiedDeepSeekV4FlashHiCache 未受影响。

# test/registered/radix_cache/test_unified_radix_cache_kl_hicache.py
# 改动:仅在 TestUnifiedMambaHiCache 中启用预取,另一测试类不变register_cuda_ci(est_time=745, stage="base-c", runner_config="8-gpu-h200")class TestUnifiedMambaHiCache(UnifiedRadixTreeTestMixin, CustomTestCase):
    # ...
    @classmethod
    def setUpClass(cls):
        cls.model = MAMBA_MODEL
        cls.base_url = DEFAULT_URL_FOR_TEST
        cls.process = popen_launch_server(
            cls.model,
            cls.base_url,
            timeout=DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
            other_args=[
                "--tp-size", "4",
                "--chunked-prefill-size", "2048",
                # ... 其他标志 ...
                "--max-running-requests", "4",
                "--weight-loader-prefetch-checkpoints", # 新增:启用权重预取
            ],
            env={"SGLANG_ENABLE_UNIFIED_RADIX_TREE": "1"},
        )
        cls.input_ids = get_input_ids(cls.model, num_samples=18)

评论区精华

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

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

风险与影响

风险极低。变更仅限于 CI 测试文件的配置参数(新增启动标志、更新时间估算),不修改任何模型代码、公共 API 或推理行为。该标志已是加载器中的现有功能,仅影响加载阶段的磁盘 I/O 和 H2D 拷贝调度。测试断言(GSM8K 准确率 >0.900、KL 散度检查、多轮缓存命中检查)保持不变,在手动触发的 CI 运行中均通过。

影响范围:仅限于 base-c-test-8-gpu-h200 CI 套件中的两个测试文件。对用户:无直接影响。对系统:CI 流水线中这两项测试的总运行时间减少约 120 秒(原约 1112 秒,现约 993 秒),权重加载时间减少约 134 秒,加速了每次提交的 CI 门控。对团队:开发者等待 CI 结果的时间缩短,开发迭代更加顺畅。

仅 CI 配置变更 低风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论