[CI] Split Quantization job into three directory-based steps - #51955
[CI] Split Quantization job into three directory-based steps#51955khluu wants to merge 1 commit into
Conversation
The Quantization step runs 57-67 min of tests (timeout 75), one of the 10 longest jobs in CI. Split tests/quantization/ into subdirectories so each step runs a whole directory and stays under ~30 min wall: - core/ (~22 min): online/runtime quantization + engine behavior - compressed_tensors/ (~22 min): compressed-tensors + quantized KV cache - checkpoint_formats/ (~24 min): gptq, awq, auto_round, torchao, modelopt, quark, cutlass_w4a16, mixed precision - blackwell/: test_blackwell_moe.py (run by the existing B200 step, which drops its --ignore) Per-directory times are from per-test timestamps in the logs of nightly builds 83094 and 83068. Platform-gated files (test_cpu_*.py, test_gfx950_moe.py) stay at the package root: the Core step sweeps quantization/ with --ignore for the sibling directories, so root-level files (including new ones) are always collected by exactly one step. Moved files keep absolute tests.* imports; exact-path references in the AMD, Intel, CPU (x86/ARM) pipelines, kernels.yaml, and docs are updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
|
Documentation preview: https://vllm--51955.org.readthedocs.build/en/51955/ |
|
/ci run |
|
✅ Triggered Buildkite CI #83535 for commit |
|
Claude Code here (posting on behalf of @khluu) — CI verification results from build 83535: The three new steps all passed, each under 25 min wall (vs 68 min for the old single job in the last nightly):
No coverage lost: 491 passed / 46 skipped / 1 deselected total, vs 490 / 46 / 1 for the single job in the last nightly on main (build 83443). The +1 passed is a test added by #50074 after that nightly ran. Other touched paths verified in this build:
Unrelated failure: |
|
This pull request has merge conflicts that must be resolved before it can be |
Purpose
Part of the effort to get every CI job under ~30 minutes. The
Quantizationstep is one of the 10 longest jobs in main CI: 57–67 min of test execution (timeout 75) in recent nightly full runs (83094, 83068).This splits
tests/quantization/into subdirectories so each CI step runs a whole directory — no per-file lists in YAML, so a new test file is automatically covered by whichever step owns its directory (matching the existing convention oftests/models/language/{generation,pooling}andtests/kernels/{attention,moe,quantization}):core/+ package root sweepcompressed_tensors/checkpoint_formats/blackwell/Times come from per-test timestamps extracted from the Buildkite logs of the two nightly builds (529 tests; per-file sums reconcile with pytest's reported totals to within 0.1 min). Each new step lands at ~28–30 min wall including image pull, with
timeout_in_minutes: 45.Design notes:
pytest quantization/ --ignorethe sibling directories, so any file at the package root (including future ones) is always collected by exactly one step. Platform-gated files (test_cpu_w8a8.py,test_cpu_wna16.py,test_gfx950_moe.py) stay at the root — they self-skip off-platform and are referenced by exact path from the CPU/AMD pipelines.test_blackwell_moe.pymoves intoblackwell/, so the old--ignore quantization/test_blackwell_moe.pydisappears from the NVIDIA and AMD commands; the B200 step now runs the directory.tests.*imports; all exact-path references were updated (AMDtest-amd.yaml, Intelintel_jobs/*, CPUhardware_tests/cpu.yaml+run-cpu-test-arm.sh,test_areas/kernels.yamlDeepGEMM step,docs/features/quantization/modelopt.md).Not a duplicate
Checked
gh pr listfor open PRs touching the Quantization CI job ortests/quantizationstructure (searches: "quantization test split", "test_areas quantization", CI breakdown) — no open PR addresses this.Test plan
Config + file-move change; no runtime code touched, so no model evaluation is applicable. The test set is a pure re-partition: same files, same
-k 'not test_compressed_tensors_w4a8_fp8'deselect (now scoped to the Compressed Tensors step, where that test lives), same blackwell exclusion semantics.Ran locally:
pre-commiton the commit — all hooks passed (ruff check/format, mypy 3.10, typos, shellcheck, SPDX headers)python -m py_compileon all moved test filesThe three new steps in this PR's own CI run are the end-to-end validation that collection and imports resolve; reviewers can compare collected-test counts against the previous single job (485 passed / 46 skipped / 1 deselected in the nightlies).
AI assistance
This change was developed with AI assistance (Claude). Timing analysis was derived from nightly Buildkite logs; every changed line has been reviewed.
🤖 Generated with Claude Code