From 5d9b327a2895311b29a96aba325f77b8a896884b Mon Sep 17 00:00:00 2001 From: Xiao Wang <24860335+xwang233@users.noreply.github.com> Date: Fri, 15 May 2026 10:52:54 -0700 Subject: [PATCH] [https://nvbugs/6133201][fix] Bump GEN max_num_tokens in disagg perf YAMLs Under MTP/Eagle3 with max_draft_len=D, each scheduled request consumes up to (1+D) tokens per forward step, so the GEN engine's per-step token budget must satisfy max_num_tokens >= max_batch_size * (1 + max_draft_len). The qwen3-235b and deepseek-r1 disagg-perf YAMLs added by #13343 set this budget to exactly half of what max_batch_size declares. When attention-DP routing seats more than (max_num_tokens / (1+D)) requests on a single rank (routine at concurrency=2048), the per-rank check in _prepare_tp_inputs trips: AssertionError: total_num_tokens (260) should be less than or equal to max_num_tokens (256) The worker dies; surviving ranks block forever in NIXL/UCX collectives waiting for it; the benchmark client streams a "0/16384" progress bar until SLURM's job-step timeout fires. This is the failure captured by nvbugs/6133201. Fix the arithmetic in all five mismatched configs (qwen3-235b: 256->512; deepseek-r1: 1536->3072). Verified on lyris GB200 against the original artifact's SHA + image: with the bump the test completes in 332s with non-zero throughput; without it, the assertion fires within seconds of the first NIXL transfer. Signed-off-by: Xiao Wang <24860335+xwang233@users.noreply.github.com> --- ...4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml | 2 +- ...1k1k_con2048_ctx2_dep4_gen1_dep16_eplb288_mtp3_ccb-NIXL.yaml | 2 +- ...4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml | 2 +- ..._1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml | 2 +- ..._1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml b/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml index 718129fe2476..ab1dcc0a27fe 100644 --- a/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml +++ b/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml @@ -48,7 +48,7 @@ worker_config: gen: print_iter_log: true max_batch_size: 768 - max_num_tokens: 1536 + max_num_tokens: 3072 tensor_parallel_size: 16 moe_expert_parallel_size: 16 pipeline_parallel_size: 1 diff --git a/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb288_mtp3_ccb-NIXL.yaml b/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb288_mtp3_ccb-NIXL.yaml index 492c69b220e0..4c3e453b405e 100644 --- a/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb288_mtp3_ccb-NIXL.yaml +++ b/tests/scripts/perf-sanity/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb288_mtp3_ccb-NIXL.yaml @@ -48,7 +48,7 @@ worker_config: gen: print_iter_log: true max_batch_size: 768 - max_num_tokens: 1536 + max_num_tokens: 3072 tensor_parallel_size: 16 moe_expert_parallel_size: 16 pipeline_parallel_size: 1 diff --git a/tests/scripts/perf/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml b/tests/scripts/perf/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml index 718129fe2476..ab1dcc0a27fe 100644 --- a/tests/scripts/perf/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml +++ b/tests/scripts/perf/disaggregated/gb200_deepseek-r1-fp4_1k1k_con2048_ctx2_dep4_gen1_dep16_eplb0_mtp3_ccb-NIXL.yaml @@ -48,7 +48,7 @@ worker_config: gen: print_iter_log: true max_batch_size: 768 - max_num_tokens: 1536 + max_num_tokens: 3072 tensor_parallel_size: 16 moe_expert_parallel_size: 16 pipeline_parallel_size: 1 diff --git a/tests/scripts/perf/disaggregated/gb200_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml b/tests/scripts/perf/disaggregated/gb200_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml index c2eb0f6677ce..0210b1476498 100644 --- a/tests/scripts/perf/disaggregated/gb200_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml +++ b/tests/scripts/perf/disaggregated/gb200_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml @@ -48,7 +48,7 @@ worker_config: enable_attention_dp: true pipeline_parallel_size: 1 max_batch_size: 128 - max_num_tokens: 256 + max_num_tokens: 512 max_seq_len: 2251 cuda_graph_config: enable_padding: true diff --git a/tests/scripts/perf/disaggregated/gb300_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml b/tests/scripts/perf/disaggregated/gb300_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml index ef063f5357eb..88c5885ca740 100644 --- a/tests/scripts/perf/disaggregated/gb300_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml +++ b/tests/scripts/perf/disaggregated/gb300_qwen3-235b-fp4_1k1k_ctx2_gen1_dep16_bs128_eplb0_mtp3_con2048_ccb-NIXL.yaml @@ -48,7 +48,7 @@ worker_config: enable_attention_dp: true pipeline_parallel_size: 1 max_batch_size: 128 - max_num_tokens: 256 + max_num_tokens: 512 max_seq_len: 2251 cuda_graph_config: enable_padding: true