SuperAPI AI 工具集

l0-test

测试与质量

查看项目

更新于 10-16 07:24

技能介绍

用途:本地复现 Emerging-Optimizers 仓库门禁 PR 的 L0 CI 检查,包含 .github/workflows 中 cicd-main.yml 与 code-linting.yml 对应的步骤。

主要阶段:

  1. Lint(宿主机):uv run pre-commit run --all-files --show-diff-on-failure --color=always,运行 ruff、mypy、文件结尾/空白、no-underscore-md 等钩子,是唯一在宿主机运行的阶段。
  2. L0 CPU 测试(容器):分布式 muon utils(nproc=4,8)、test_scalar_optimizers.py、test_procrustes_step.py。
  3. L0 GPU 测试(容器):tests/test_*.py(排除 _cpu.py)跑两遍(随机种子与 --seed=42),再跑 tests/convergence/_test.py(--seed=42)。

用法参数:无参数执行全部三阶段并在首个失败停止;lint/cpu/gpu 只跑对应阶段;nogpu 跑阶段 1+2;keepgoing 不因失败停止;affected 只跑与相对 main 变更文件关联的测试(阶段 1 仍全量 lint)。参数可组合,如 affected gpu、cpu keepgoing。

必要用法:测试必须在容器内执行,不可在宿主机运行;容器镜像由 docker/Dockerfile.ci 的 FROM 行解析,勿硬编码版本,uv 版本与 --no-install-package 白名单也在该文件解析。核心命令为 docker run --rm --gpus all 挂载当前目录后在容器内安装 uv、创建带 --system-site-packages 的 venv、uv sync --link-mode copy --locked --all-groups,再用 python -m torch.distributed.run 与 python 执行各测试。不要用 pytest 调用,仓库使用 absl.testing 并依赖 --device/--seed。

前置条件:宿主机安装 uv;docker 配置 nvidia runtime 且 --gpus all 可用;拉取 docker/Dockerfile.ci 声明的 NGC pytorch 镜像(约 22 GB,可能需要 nvcr.io 登录)。

限制:不覆盖 copyright-check 外部工作流与 L1 长期收敛测试;affected 的 import-grep 是语法级匹配,可能漏掉经由 init.py 再导出的间接依赖;registry.py、mixin.py 变更应视为影响所有优化器测试;emerging_optimizers/ 与 tests/ 之外的变更不会映射到测试。