l0-test
Installation
SKILL.md
L0 Test (PR CI reproduction)
Runs the same checks that gate a pull request in .github/workflows/cicd-main.yml and code-linting.yml:
- Lint (host) —
pre-commit run --all-files(ruff check, ruff format, mypy, copyright/EOF/whitespace, no-underscore-md). - L0 CPU tests (container) — distributed muon utils at
nproc=4,8, plustest_scalar_optimizers.pyandtest_procrustes_step.py. - L0 GPU tests (container) — every
tests/test_*.py(excluding*_cpu.py) twice — once with a random seed, once with--seed=42— then the convergencetests/convergence/*_test.pyset.
Stages 2 and 3 share a single NGC container session: lint runs on the host, then a single docker run against the image declared in docker/Dockerfile.ci (the FROM line — do not hard-code a tag, so the skill picks up version bumps automatically) with --gpus all performs both CPU and GPU passes. All test execution happens inside the container; never run tests on the host. Reasons:
tests/test_distributed_muon_utils_cpu.pyimportsnumpy, which is preinstalled in the NGC image but not pulled in byuv syncagainst a host venv.- The NGC torch build (
2.11.0a0+...nv26.02) and CUDA stack are what CI uses — host torch may differ in version, build flags, or CUDA major. torchrunresolution differs between host and container; we usepython -m torch.distributed.runeverywhere so it's deterministic.
Not covered: the copyright-check external workflow (uses NVIDIA-NeMo/FW-CI-templates) and L1 long-running convergence runs.
Args
Default (no args): run all three stages in order, stopping on first failure.