Prhub

#1985 [test] make tests shorter

原始 PR 作者 zhuzilin 合并时间 2026-05-30 09:24 文件变更 29 提交数 1 评论 0 代码增减 +145 / -177

执行摘要

系统性缩减 CI 测试参数,缩短执行时间

随着模型配置增多,CI 测试总耗时已成为团队迭代瓶颈。通过降低不必要的测试步数并在不影响核心验证力度的前提下简化环境变量,可显著缩短开发者等待时间。标题「make tests shorter」直接概括了目的。

建议合并。该 PR 是高效的 CI 性能优化,每行修改都紧扣“缩短测试时间”的目标。开发者可作为后续测试编写的参考模板:在确保冒烟覆盖的前提下尽量降低资源消耗。

讨论亮点

该 PR 无 review 评论,表明变更明确且无争议。

实现拆解

  1. 减半 rollout 规模:将 num_rollout 从 3 改为 2,rollout_batch_size 从 8 改为 4,global_batch_size 相应减半(如 32→16),使每个测试训练步骤减少一半以上。
  2. 移除条件环境变量:删除 TIGHT_DEVICE_MEMORYTIGHT_HOST_MEMORY 的读取和条件分支,直接使用固定值(如 sglang-mem-fraction-static 0.7max-tokens-per-gpu 16384),简化测试配置与执行路径。
  3. 调整 sglang 参数:将 sglang-cuda-graph-max-bs 从 32 统一降为 16,适配更小的 batch size,减少显存占用。
  4. 同步更新断言与注释:将后置断言中的期望调用次数(如 expected_calls = 3 * 8)改为 2 * 4,保持与参数协调。
文件 模块 状态 重要度
tests/test_qwen2.5_0.5B_fanout_short.py fanout 测试 modified 5.16
tests/test_qwen3_4B_ppo_train_critic_only.py PPO 测试 modified 4.98
tests/test_moonlight_16B_A3B.py GRPO 测试 modified 4.87

关键符号

prepare execute

关键源码片段

tests/test_qwen2.5_0.5B_fanout_short.py test-coverage

fanout 测试是模拟自定义 generate 的复杂场景,此文件展示了最为典型的参数精简模式(rollout 减半、去除 TIGHT_DEVICE_MEMORY、调整 cuda-graph-max-bs)。

def execute():
    # 原先是 rollout_batch_size=8, num_rollout=3, global_batch_size=4
    # 修改后减少为 rollout_batch_size=4, num_rollout=2, global_batch_size=4 不变
    # 注意:global_batch_size 保持不变但步数减少,总训练步从 6 降为 2
    ckpt_args = f"--hf-checkpoint /root/models/{MODEL_NAME}/ " f"--ref-load /root/models/{MODEL_NAME}/ "
​
    rollout_args = (
        "--prompt-data /root/datasets/dapo-math-17k/dapo-math-17k.jsonl "
        "--input-key prompt "
        "--label-key label "
        "--apply-chat-template "
        "--rollout-shuffle "
        "--rm-type deepscaler "
        "--num-rollout 2 " # 3 → 2
        "--rollout-batch-size 4 " # 8 → 4
        "--n-samples-per-prompt 1 "
        "--rollout-max-response-len 8192 "
        "--rollout-temperature 0.8 "
        "--global-batch-size 4 " # 保持不变(但总的训练步数减少)
        "--balance-data "
        "--custom-generate-function-path slime.rollout._fanout_test_helpers.compact_generate "
        "--custom-reward-post-process-path slime.rollout._fanout_test_helpers.grpo_normalize_by_group_index "
    )
​
    # ... 其他参数 ...
​
    sglang_args = (
        "--rollout-num-gpus-per-engine 1 "
        "--sglang-mem-fraction-static 0.7 " # 原先由 TIGHT_DEVICE_MEMORY 条件决定,现固定 0.7
        "--sglang-cuda-graph-max-bs 8 " # 32 → 8,适配更小的 batch
        "--sglang-enable-metrics "
    )
​
    # 后置断言期望调用次数也相应调整
    expected_calls = 2 * 4 # num_rollout * rollout_batch_size

评论区精华

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

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

风险与影响

主要风险在于参数缩减可能导致某些代码路径未被充分覆盖(如极端大 batch 或跨节点通信)。但测试均保留 --ci-test 启用内置数值检查,且 rollouts 步数减少后仍能触发训练循环基本逻辑,因此回归概率较低。移除了条件分支(如 TIGHT_HOST_MEMORY),若未来有依赖这些硬件的配置,可能需要恢复。

正面影响:CI 测试总时间预计缩短 40%-60%,提升开发迭代效率。影响范围限于 CI 测试流程,不影响线上训练或推理。团队需注意若新增测试需保持相应的精简风格。

测试覆盖降低 条件分支移除后无兼容路径

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论