# PR #1985 完整报告

- 仓库：`THUDM/slime`
- 标题：[test] make tests shorter
- 合并时间：2026-05-30 09:24
- 原文链接：http://prhub.com.cn/THUDM/slime/pull/1985

---

# 执行摘要

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

# 功能与动机

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

# 实现拆解

1. **减半 rollout 规模**：将 `num_rollout` 从 3 改为 2，`rollout_batch_size` 从 8 改为 4，`global_batch_size` 相应减半（如 32→16），使每个测试训练步骤减少一半以上。
2. **移除条件环境变量**：删除 `TIGHT_DEVICE_MEMORY`、`TIGHT_HOST_MEMORY` 的读取和条件分支，直接使用固定值（如 `sglang-mem-fraction-static 0.7`、`max-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 测试；类别 test；类型 test-coverage；符号 prepare, execute）: fanout 测试是模拟自定义 generate 的复杂场景，此文件展示了最为典型的参数精简模式（rollout 减半、去除 TIGHT_DEVICE_MEMORY、调整 cuda-graph-max-bs）。
- `tests/test_qwen3_4B_ppo_train_critic_only.py`（模块 PPO 测试；类别 test；类型 test-coverage；符号 prepare, execute）: PPO critic-only 测试，移除了 TIGHT_HOST_MEMORY，并调整了 num-critic-only-steps 从 3 到 2，参数变化具有代表性。
- `tests/test_moonlight_16B_A3B.py`（模块 GRPO 测试；类别 test；类型 test-coverage；符号 prepare, execute）: 月光模型测试，同样移除了 TIGHT_HOST_MEMORY，max-tokens-per-gpu 从条件值改为固定 8192，简化了测试配置。

关键符号：prepare, execute

## 关键源码片段

### `tests/test_qwen2.5_0.5B_fanout_short.py`

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

```python
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

```

# 评论区精华

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

- 暂无高价值评论线程

# 风险与影响

- 风险：主要风险在于参数缩减可能导致某些代码路径未被充分覆盖（如极端大 batch 或跨节点通信）。但测试均保留 `--ci-test` 启用内置数值检查，且 rollouts 步数减少后仍能触发训练循环基本逻辑，因此回归概率较低。移除了条件分支（如 `TIGHT_HOST_MEMORY`），若未来有依赖这些硬件的配置，可能需要恢复。
- 影响：正面影响：CI 测试总时间预计缩短 40%-60%，提升开发迭代效率。影响范围限于 CI 测试流程，不影响线上训练或推理。团队需注意若新增测试需保持相应的精简风格。
- 风险标记：测试覆盖降低 , 条件分支移除后无兼容路径

# 关联脉络

- 暂无明显关联 PR