Sync dsv4-fp4-b200-trt recipes with B200 agg frontier config#1699
Sync dsv4-fp4-b200-trt recipes with B200 agg frontier config#1699qiaoxj07 wants to merge 10 commits into
Conversation
Sync the local B200 DeepSeek-V4-Pro aggregated frontier configs (deepseek-v4-pro-agg-202606, 0608-B200) into the TensorRT-LLM single-node recipes and document the provenance in the sweep config. dsv4_fp4_b200_trt.sh (from the MTP0 blocks): - Add worker tuning envs from env_vars (worker_env_var + gen_worker_env_var): TRTLLM_SERVER_DISABLE_GC, TRTLLM_WORKER_DISABLE_GC, NCCL_GRAPH_MIXING_SUPPORT, MIMALLOC_PURGE_DELAY, PYTORCH_CUDA_ALLOC_CONF (all overridable). The user-specific TLLM_AUTOTUNER_CACHE_PATH is intentionally omitted. - kv_cache free_gpu_memory_fraction: 0.9 (TP) / 0.7 (DP-attn), was 0.50. - attention_dp_config: batching_wait_iters 0 -> 30, drop timeout_iters. - stream_interval 10 -> 100; moe_config use_low_precision_moe_combine: true. - Make MOE_BACKEND overridable (default TRTLLM). dsv4_fp4_b200_trt_mtp.sh (from the MTP blocks): same as above, with DP-attn free_gpu_memory_fraction 0.6, enable_lm_head_tp_in_adp: true on the DP-attn path, and default MTP level 2 -> 3. cuda_graph_config / max_batch_size and the max_seq_len / max_num_tokens sizing are kept as-is (the latter floored for random-range-ratio safety). The MTP field stays num_nextn_predict_layers (repo/image convention) rather than the spreadsheet's max_draft_len.
…NFIG - Remove the 0608-B200 provenance comments from the recipes and nvidia-master.yaml. - In dsv4_fp4_b200_trt_mtp.sh, emit enable_lm_head_tp_in_adp from within the DP-attn ATTENTION_DP_CONFIG block instead of a separate variable, so the heredoc line matches the non-MTP recipe idiom. Generated YAML is unchanged.
…y concurrency Sweep (nvidia-master.yaml, dsv4-fp4-b200-trt-mtp): - 1k1k DP conc-end 512 -> 1024; 8k1k DP conc-end 128 -> 256, so the MTP sweep reaches the top speculative frontier points. (conc=2048 / 8k1k conc=256 mtp0 points are produced by the MTP0 sweep, which already covers them.) Recipes: pick MoE backend / MTP level per concurrency to match the frontier, since the single-node search-space cannot pass them per entry. - dsv4_fp4_b200_trt.sh: MEGAMOE_DEEPGEMM for short ISL at conc >= 2048 (else TRTLLM). - dsv4_fp4_b200_trt_mtp.sh: MEGAMOE_DEEPGEMM for short ISL at conc >= 512; MTP draft length steps 3 -> 2 for long ISL at conc >= 128. All overridable via MOE_BACKEND / TRTLLM_DSV4_MTP_NUM_NEXTN_LAYERS.
- dsv4_fp4_b200_trt_mtp.sh: speculative_config field num_nextn_predict_layers -> max_draft_len (matches the agg config / deployed image). - max_num_tokens drops the OSL term in both recipes (output tokens are emitted one at a time, not in the prefill chunk): ISL + 256 (MTP0) and ISL + (MTP+1)*batch + 256 (MTP, keeps the speculative-verification headroom). max_seq_len stays floored at >= 8192 as headroom for server-side chat-template tokens on the openai-chat path.
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
Bump the dsv4-fp4-b200-trt and dsv4-fp4-b200-trt-mtp images from feat-deepseek_v4-9aa3715 to feat-deepseek_v4-c185066, and add a perf-changelog entry covering the image bump and the B200 agg frontier config sync already in this PR. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27294740056 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27324986833 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27385348444 |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit e707884. Configure here.
| if [[ "$ISL" -le 1024 && "$CONC" -ge 512 ]]; then | ||
| MOE_BACKEND="${MOE_BACKEND:-MEGAMOE_DEEPGEMM}" | ||
| else | ||
| MOE_BACKEND="${MOE_BACKEND:-TRTLLM}" |
There was a problem hiding this comment.
MOE threshold exceeds sweep maximum
Medium Severity
The MTP recipe switches MOE_BACKEND to MEGAMOE_DEEPGEMM only when ISL ≤ 1024 and CONC ≥ 512, but this PR caps DP-attn conc-end at 256 for both 1k and 8k ISL in nvidia-master.yaml, so automated sweeps never satisfy the condition and always use TRTLLM, diverging from the B300 frontier pattern the block was copied from.
Reviewed by Cursor Bugbot for commit e707884. Configure here.
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27385348444 |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27398332822 |


What
Sync the B200 DeepSeek-V4-Pro aggregated frontier configs into the single-node TensorRT-LLM recipes. The non-MTP recipe carries the MTP0 settings; the MTP recipe carries the MTP settings.
Changes
benchmarks/single_node/fixed_seq_len/dsv4_fp4_b200_trt.sh(MTP0)TRTLLM_SERVER_DISABLE_GC=1,TRTLLM_WORKER_DISABLE_GC=1,NCCL_GRAPH_MIXING_SUPPORT=0,MIMALLOC_PURGE_DELAY=0,PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True.kv_cache_config.free_gpu_memory_fraction: 0.9 (TP / no DP-attn) / 0.7 (DP-attn), was0.50.attention_dp_config:batching_wait_iters0 → 30, droptimeout_iters.stream_interval10 → 100;moe_config.use_low_precision_moe_combine: true.max_num_tokensdrops the OSL term:ISL + 256(output tokens are emitted one at a time, not in the prefill chunk).MOE_BACKENDmade overridable (defaultTRTLLM).benchmarks/single_node/fixed_seq_len/dsv4_fp4_b200_trt_mtp.sh(MTP)Same as above, plus:
free_gpu_memory_fraction= 0.6.enable_lm_head_tp_in_adp: trueon the DP-attn path.speculative_configusesmax_draft_len; default level 2 → 3 (overridable viaTRTLLM_DSV4_MTP_NUM_NEXTN_LAYERS).max_num_tokens=ISL + (draft+1)*batch + 256(drops OSL; keeps the speculative-verification headroom).Deliberate non-changes
cuda_graph_config/max_batch_sizeleft CONC-derived (per request).max_seq_lenkept floored at ≥ 8192 — headroom for server-side chat-template tokens on theopenai-chatpath.Validation
bash -npasses on both recipes.Note
Low Risk
Benchmark and CI matrix tuning only; no application runtime or auth/data-path changes, though results comparability shifts with the new image and sweep bounds.
Overview
Aligns B200 DeepSeek-V4 TensorRT-LLM single-node benchmarks with the aggregated frontier: bumps the container image to
feat-deepseek_v4-c185066and retunesdsv4_fp4_b200_trt.sh/dsv4_fp4_b200_trt_mtp.sh(GC/alloc env defaults, higher KV-cache fractions by DP path,stream_interval100, low-precision MoE combine, DPbatching_wait_iters30 withouttimeout_iters, andmax_num_tokensformulas that no longer add OSL).The non-MTP script can switch MoE to
MEGAMOE_DEEPGEMMat very high concurrency on 1k ISL; the MTP script adds concurrency/ISL-dependent MoE backend, draft length,max_draft_leninstead ofnum_nextn_predict_layers, andenable_lm_head_tp_in_adpon DP-attn.nvidia-master.yamltightens DP-attn concurrency sweep upper bounds for the base TRT config and adjusts MTP sweep ranges;perf-changelog.yamldocuments the change.Reviewed by Cursor Bugbot for commit e707884. Bugbot is set up for automated code reviews on this repo. Configure here.