Skip to content

[CI] Expand Basic Models (Extra Initialization) to 14 shards (<20 min) - #52351

Draft
khluu wants to merge 1 commit into
vllm-project:mainfrom
khluu:amr/shard-basic-models-extra-init
Draft

[CI] Expand Basic Models (Extra Initialization) to 14 shards (<20 min)#52351
khluu wants to merge 1 commit into
vllm-project:mainfrom
khluu:amr/shard-basic-models-extra-init

Conversation

@khluu

@khluu khluu commented Aug 14, 2026

Copy link
Copy Markdown
Member

What

basic-models-tests-extra-initialization currently runs 4 shards at ~53–60 min each (~224 GPU-min of large-model-init tests) — well over the Phase-2 <20 min target. Expand it to 14 shards.

Structural analysis (why higher N, not a peel)

Parsed per-model init durations from the #83851 shard-3 log (105 models, 58.8 min, matching the wall):

  • Broad, flat distribution — slowest single model Qwen3_5ForConditionalGeneration ~124 s (~2 min); then a 50–83 s tail; mean ~35 s/model.
  • No single-test floor (nothing near 20 min) and no dominant peelable family — the hot shard is just a few heavy multimodal (*ForConditionalGeneration) inits landing there by nodeid hash.

So peeling a family can't cut the 224 GPU-min; the clean split is a higher pytest-shard count (the step already uses --num-shards/--shard-id).

Sizing

Floor = 224 min ÷ 20 = 12 shards; with the observed ~1.13× hash imbalance, N=14 lands the worst shard ~18 min (N=12 would peak ~21 min). parallelism: 4 → 14, per-shard timeout_in_minutes 100 → 30, no mirror. This adds 10 h200 copies — the repeated per-shard setup / total GPU-min will be recorded from the run.

Validation — build #83919 (targeted basic-models-tests-extra-initialization, 14/14 green)

  • Per-shard wall (min): 12.66 / 8.53 / 13.63 / 10.08 / 12.13 / 11.04 / 9.37 / 15.02 / 17.59 / 9.48 / 17.03 / 17.35 / 13.55 / 13.84 — max 17.59, all <20. Max ≥17 min, so N=14 stands (no trim to 13).
  • Fixed setup: 0.67–1.01 min/shard (job wall − pytest runtime) — small, because model-init has no kernel build.
  • Total GPU-min: 181.3 vs the 4-shard baseline 224.1 (−42.8) — 14-way did not balloon GPU-min (each added shard re-pays only ~0.9 min setup); wall dropped ~56→17.6 min (~3.2×).
  • Node coverage: the 14 shards are pairwise disjoint, and their executed nodeid set is byte-identical to the #83851 4-shard baseline — 374 = 374, verified from the Running N items in this shard manifests on both sides, set-difference 0 in both directions (cross-checked by @cuong). Resharding changes no coverage. The collected-386 / selected-385 line is runtime deselection that varies per machine (1–2 shards here; 1/6/2/1 in the baseline) and is present in both configurations — not a gap introduced here.

Part of the Phase-2 CI-overhaul sharding pass (kernels/basic-models workstream), one PR per key.

basic-models-tests-extra-initialization currently runs 4 shards at ~53-60m each
(~224 GPU-min of large-model-init tests). Per-model init timing from the #83851
shard-3 log is a broad flat distribution (slowest single model ~2m, mean ~35s)
with no single-test floor and no peelable heavy family, so the clean split is a
higher pytest-shard count. Raise parallelism 4 -> 14 (already uses
--num-shards/--shard-id) to land each shard ~16m (<20m target) with headroom for
the observed ~1.13x hash imbalance. Per-shard timeout 100 -> 30. No mirror.
@mergify mergify Bot added the ci/build label Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant