Prhub

#2055 [ci] clean up ci

原始 PR 作者 zhuzilin 合并时间 2026-06-11 16:24 文件变更 6 提交数 1 评论 0 代码增减 +37 / -421

执行摘要

移除 e2e-test-short,扩展 Megatron 测试矩阵

根据 commit message 和变更内容,此 PR 旨在清理 CI 配置,简化维护:将分散的短测试合并到核心 Megatron 测试矩阵,减少重复的 job 定义,并移除不再推荐的测试路径。

值得关注:

  1. 确认被删除的测试是否被其他测试充分覆盖,必要时添加缺失用例。
  2. 该 PR 展示了将临时/短测试合并到统一矩阵的模式,可评估是否对新 PR 的测试组织有参考价值。
讨论亮点

本次 PR 无 review 评论和讨论。

实现拆解

  1. 修改 Jinja2 模板文件 .github/workflows/pr-test.yml.j2:移除 e2e-test-short job 定义,在 megatron_tests 列表新增大量测试用例(如 test_full_disk_weight_update.pytest_quick_start_glm4_9B.py 等),并调整 e2e-test-image 使其复用 megatron_tests 矩阵。
  2. 重新生成 .github/workflows/pr-test.yml:移除了整个 e2e-test-short job(85 行删除),只保留必要的结构定义(3 行新增)。
  3. 删除两个不再属于独立 job 的测试文件:tests/test_delta_weight_update.py(143 行)和 tests/test_qwen2.5_0.5B_ppo_critic_only_short.py(129 行)。
  4. 更新中英文 CI 文档(docs/en/developer_guide/ci.mddocs/zh/developer_guide/ci.md):移除关于 run-ci-short 的描述,修改 run-ci-image 的描述以反映其复用 megatron 矩阵的变化。
文件 模块 状态 重要度
tests/test_delta_weight_update.py 测试 removed 7.12
tests/test_qwen2.5_0.5B_ppo_critic_only_short.py 测试 removed 6.79
.github/workflows/pr-test.yml CI 工作流 modified 5.5
.github/workflows/pr-test.yml.j2 CI 工作流 modified 5.59
docs/en/developer_guide/ci.md 开发者文档 modified 2.02
docs/zh/developer_guide/ci.md 开发者文档 modified 2.02

关键符号

prepare execute

关键源码片段

tests/test_delta_weight_update.py deletion

被删除的 E2E smoke 测试文件,直接导致对应功能失去独立 CI 覆盖

# 该文件已被删除,之前用于测试 disk-backed delta weight updates。
# 它通过 prepare() 准备数据,execute() 运行训练并验证 delta 文件生成。
# 下方是被删除的完整源码片段:"""E2E smoke test for disk-backed delta weight updates.Runs a tiny Qwen3.5-0.8B job so the first weight update seeds the delta
snapshot and the post-train update publishes sparse delta files through
``update_weights_from_disk(load_format="delta", files=...)``.
"""import os
import tempfile
from pathlib import Pathimport slime.utils.external_utils.command_utils as U
​
​
MODEL_NAME = "Qwen3.5-0.8B"
MODEL_TYPE = "qwen3.5-0.8B"
NUM_GPUS = 4
TORCH_DIST_CKPT = f"/dev/shm/{MODEL_NAME}_torch_dist"
​
​
def prepare():
    U.exec_command("mkdir -p /root/models /root/datasets")
    U.exec_command(f"hf download Qwen/{MODEL_NAME} --local-dir /root/models/{MODEL_NAME}")
    U.hf_download_dataset("zhuzilin/gsm8k")
    U.convert_checkpoint(
        model_name=MODEL_NAME,
        megatron_model_type=MODEL_TYPE,
        num_gpus_per_node=NUM_GPUS,
        dir_dst="/dev/shm",
    )
​
​
def execute():
    with tempfile.TemporaryDirectory(prefix="slime_delta_weight_update_") as delta_dir:
        ckpt_args = f"--hf-checkpoint /root/models/{MODEL_NAME}/ " f"--ref-load {TORCH_DIST_CKPT} "
        # ...(中间 args 省略,详见上下文)
        passif __name__ == "__main__":
    prepare()
    for proxy_var in ("http_proxy", "https_proxy", "HTTP_PROXY", "HTTPS_PROXY"):
        os.environ.pop(proxy_var, None)
    execute()
.github/workflows/pr-test.yml.j2 infrastructure

Jinja2 模板核心变更,移除 e2e-test-short 并扩展 megatron_tests,控制整个 CI 生成

{# 以下是模板文件的部分片段,展示 megatron_tests 定义和 jobs 调整 #}
<% set megatron_tests = [
    {'test_file': 'test_full_disk_weight_update.py', 'num_gpus': 4},
    {'test_file': 'test_quick_start_glm4_9B.py', 'num_gpus': 8, 'enable_eval': '0'},
    {'test_file': 'test_glm4.7_30B_A3B_pd_mooncake.py', 'num_gpus': 8},
    # ... 更多测试已添加,覆盖多种模型和场景
] %>

<% set jobs = {
    # 'e2e-test-short' 已被移除
    'e2e-test-sglang-config': {
        'label': 'run-ci-sglang-config',
        'tests': [ ... ]
    },
    'e2e-test-megatron': {
        'label': 'run-ci-megatron',
        'tests': megatron_tests  # 现在 megatron 矩阵包含更多测试
    },
    # ... 其他 jobs
} %>

评论区精华

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

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

风险与影响

主要风险在于测试覆盖的丢失:直接删除的两个测试文件(delta weight update 和 PPO critic-only)并未显式包含在新 megatron_tests 列表中,可能导致对应功能缺乏 CI 验证。虽然部分场景可能被其他 megatron 测试间接覆盖,但需要确认。另外,CI 工作流依赖生成的 YAML,模板变更需确保生成正确。

影响主要限于开发者和 CI 维护者:e2e-test-short job 不再可用,需要使用 run-ci-megatronrun-ci-changed 触发相关测试。对最终用户无影响。团队需要更新 PR 标签使用习惯(不再使用 run-ci-short)。

测试覆盖遗漏 CI 配置变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论