Skip to content

[CI] Split Quantization job into three directory-based steps - #51955

Open
khluu wants to merge 1 commit into
mainfrom
ci/split-quantization-tests
Open

[CI] Split Quantization job into three directory-based steps#51955
khluu wants to merge 1 commit into
mainfrom
ci/split-quantization-tests

Conversation

@khluu

@khluu khluu commented Aug 12, 2026

Copy link
Copy Markdown
Member

Purpose

Part of the effort to get every CI job under ~30 minutes. The Quantization step 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 of tests/models/language/{generation,pooling} and tests/kernels/{attention,moe,quantization}):

step directory measured test time (slow / fast night)
Quantization (Core) core/ + package root sweep 22.3 / 17.8 min
Quantization (Compressed Tensors) compressed_tensors/ 21.6 / 17.9 min
Quantization (Checkpoint Formats) checkpoint_formats/ 23.5 / 21.1 min
Quantized MoE Test (B200) (existing) blackwell/ unchanged

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:

  • The Core step runs pytest quantization/ --ignore the 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.py moves into blackwell/, so the old --ignore quantization/test_blackwell_moe.py disappears from the NVIDIA and AMD commands; the B200 step now runs the directory.
  • The torchao/conch installs are kept on all three steps to avoid any kernel-selection behavior change; narrowing them per-step can be a follow-up.
  • Moved files' relative imports were converted to absolute tests.* imports; all exact-path references were updated (AMD test-amd.yaml, Intel intel_jobs/*, CPU hardware_tests/cpu.yaml + run-cpu-test-arm.sh, test_areas/kernels.yaml DeepGEMM step, docs/features/quantization/modelopt.md).

Not a duplicate

Checked gh pr list for open PRs touching the Quantization CI job or tests/quantization structure (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-commit on the commit — all hooks passed (ruff check/format, mypy 3.10, typos, shellcheck, SPDX headers)
  • YAML parse of all six touched pipeline files
  • python -m py_compile on all moved test files
  • Repo-wide sweep for stale references to every moved filename — none remain

The 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

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>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@mergify

mergify Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Documentation preview: https://vllm--51955.org.readthedocs.build/en/51955/

@mergify mergify Bot added documentation Improvements or additions to documentation ci/build quantization nvidia labels Aug 12, 2026
@mergify mergify Bot added the cpu Related to CPU backends label Aug 12, 2026
@khluu khluu added the ready ONLY add when PR is ready to merge/full CI is needed label Aug 12, 2026
@khluu

khluu commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #83535 for commit 3c6f9a635a21.

@khluu

khluu commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

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):

step wall time pytest result
Quantization (Core) 20.3 min 77 passed, 19 skipped
Quantization (Compressed Tensors) 24.5 min 280 passed, 1 deselected
Quantization (Checkpoint Formats) 24.2 min 134 passed, 27 skipped

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:

  • Quantized MoE Test (B200) ✅ — runs tests/quantization/blackwell directory
  • Kernels DeepGEMM Test (H100) ✅ — runs moved quantization/checkpoint_formats/test_cutlass_w4a16.py
  • CPU-Quantization Model Tests ✅ — runs moved compressed_tensors/test_compressed_tensors.py::test_compressed_tensors_w8a8_logprobs

Unrelated failure: Kernels Core Operation Test fails 3 precision assertions in tests/kernels/core/test_fused_quant_layernorm.py (untouched by this PR — the step ran only because kernels.yaml changed for the DeepGEMM path). The same step failed identically on main in nightly build 83443, so it's pre-existing main breakage, not introduced here.

@mergify

mergify Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

This pull request has merge conflicts that must be resolved before it can be
merged. Please rebase the PR, @khluu.

https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase label Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/build cpu Related to CPU backends documentation Improvements or additions to documentation needs-rebase nvidia quantization ready ONLY add when PR is ready to merge/full CI is needed

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant