[https://nvbugs/6523520][fix] Halve gb200 r1-fp4 128k8k con128 multi_round to fit perf-sanity budget - #17397
Conversation
…round to fit perf-sanity budget The aggr_upload-ctx_only-gb200_deepseek-r1-fp4_128k8k_con128 case (and its e2e / gen_only co-tenants sharing the same config) times out under the 180-min perf-sanity budget. Root cause is the second measurement round, not a functional slowdown. ctx_only forces OSL=1 and iterations=multi_round, so the run is concurrency x multi_round = 128 x 2 = 256 sequential 131072-token (128k) prefills through a max_batch_size=1, pipeline_parallel_size=8 context server. Reducing to a single round (128 prefills) makes ctx_only finish in ~18.5 min -- and 4x the prefill count (32 -> 128) added only ~10% wall-clock, confirming the run time is dominated by fixed server startup/warmup, not prefill count. So the original 256-prefill config was not merely large: its second round livelocked and consumed the full 180-min wall-clock cap. Fix (config-only, shared NIXL yaml): multi_round 2 -> 1. Concurrency is left at 128 (the representative workload); num-prompts drops 256 -> 128. Verified on lyris GB200 (rc24 wheel), both cases sharing this config pass far under the 180-min TIMEOUT: - ctx_only : PASSED, 1 passed in 1112.18s / 0:18:32 (job elapsed 23m) - e2e : PASSED, 1 passed in 2534.09s / 0:42:14 (job elapsed 49m) Un-waive both cases that were skipped for the now-resolved timeout (the anchors 6418510 / 6426890 are closed post-merge batch bugs): - ctx_only (was SKIP nvbugs/6418510) - e2e (was SKIP nvbugs/6426890) Signed-off-by: chenfeiz0326 <203214996+chenfeiz0326@users.noreply.github.com>
WalkthroughThe PR changes the disaggregated GB200 DeepSeek-R1 benchmark to run one multi-round iteration and removes two obsolete skipped performance sanity test entries. ChangesPerformance sanity cleanup
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_128k8k_con128_ctx1_pp8_gen1_dep16_eplb0_mtp1_ccb-NIXL.yaml`:
- Line 20: Add the standard NVIDIA copyright header with year 2026 at the
beginning of the modified YAML file, before the existing multi_round
configuration; leave the configuration values unchanged.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: de6f2387-035e-4ef6-b15f-997d4a4d351d
📒 Files selected for processing (2)
tests/integration/test_lists/waives.txttests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_128k8k_con128_ctx1_pp8_gen1_dep16_eplb0_mtp1_ccb-NIXL.yaml
💤 Files with no reviewable changes (1)
- tests/integration/test_lists/waives.txt
|
/bot skip --comment "Only unwaive perf tests, no need to run the whole CI pipeline" |
|
PR_Github #64512 [ skip ] triggered by Bot. Commit: |
|
PR_Github #64512 [ skip ] completed with state |
Dev Engineer Review
multi_roundfrom 2 to 1 in the GB200 DeepSeek-R1 FP4 NIXL configuration.ctx_onlywork from 256 to 128 prompts while preserving concurrency at 128.ctx_onlyande2ecases.gen_onlycase remains unaffected because it usesiterations=1.ctx_onlyande2eon GB200 with the rc24 aarch64 wheel.QA Engineer Review
test-db/orqa/files were modified.tests/integration/test_lists/waives.txt:Description
The
aggr_upload-ctx_only-gb200_deepseek-r1-fp4_128k8k_con128_ctx1_pp8_gen1_dep16_eplb0_mtp1_ccb-NIXLperf-sanity case — and itse2e/gen_onlyco-tenants that share the same NIXL config yaml — times out under the 180-min perf-sanityTIMEOUT.Root cause is the second measurement round, not a functional slowdown.
ctx_onlyforces OSL=1 anditerations = multi_round, so the run executesconcurrency × multi_round = 128 × 2 = 256sequential 131072-token (128k) prefills through amax_batch_size=1,pipeline_parallel_size=8context server. Reducing to a single round (128 prefills) makesctx_onlyfinish in ~18.5 min. Notably, 4× the prefill count (32 → 128) added only ~10% wall-clock, which shows the run time is dominated by fixed server startup/warmup rather than prefill count — i.e. the original 256-prefill config was not merely large, its second round livelocked and burned the entire 180-min cap.Fix (config-only, shared NIXL yaml):
multi_round: 2 → 1. Concurrency stays at128(the representative workload); num-prompts drops from 256 to 128.Also un-waive the two cases that were skipped for this now-resolved timeout — their anchors (
6418510,6426890) are closed post-merge batch bugs:ctx_only(wasSKIP https://nvbugs/6418510)e2e(wasSKIP https://nvbugs/6426890)Test Coverage
Verified on lyris GB200 with the rc24 aarch64 wheel. Both cases sharing this config pass and finish far under the 180-min
TIMEOUT:perf/test_perf_sanity.py::test_e2e[aggr_upload-ctx_only-...con128...NIXL]perf/test_perf_sanity.py::test_e2e[disagg_upload-e2e-...con128...NIXL]These are exactly the two cases un-waived in this PR. The
gen_onlyco-tenant is unaffected (it usesiterations=1regardless ofmulti_round).PR Checklist