Skip to content

Update DSv4 B200 TRT image to 2dd03e6 (non-MTP + MTP)#1664

Closed
Oseltamivir wants to merge 6 commits into
mainfrom
cap-dsv4-b200-trt-conc
Closed

Update DSv4 B200 TRT image to 2dd03e6 (non-MTP + MTP)#1664
Oseltamivir wants to merge 6 commits into
mainfrom
cap-dsv4-b200-trt-conc

Conversation

@Oseltamivir
Copy link
Copy Markdown
Collaborator

@Oseltamivir Oseltamivir commented Jun 4, 2026

Summary

  • Point dsv4-fp4-b200-trt and dsv4-fp4-b200-trt-mtp at ghcr.io/semianalysisai/trtllm-deepseek-v4:feat-deepseek_v4-2dd03e6, replacing the older 9aa3715 build.
  • Tighten concurrency search space to fit B200 memory ceiling (1k1k max 128, 8k1k max 256).

Test plan

  • Sweep fires on push (37 single_node jobs + 6 evals, all B200)
  • Pure-TP (dpa=false) jobs pass
  • Attention-DP (dpa=true) jobs pass at capped concurrency

Note

Low Risk
Only benchmark matrix and changelog YAML; no runtime application or auth changes.

Overview
B200 DeepSeek-V4-Pro TensorRT-LLM benchmarks (dsv4-fp4-b200-trt and dsv4-fp4-b200-trt-mtp) now use the official nvidia/tensorrt-llm/release:1.3.0rc15.post1 image instead of the prior ghcr.io feat-deepseek_v4-9aa3715 build.

Concurrency sweeps for EP + attention-DP are capped so they stay within B200 memory: 1k/1k EP runs top out at 128 (was up to 2048 on base TRT; MTP 512128), and 8k/1k EP runs top out at 256 (was 1024). Pure TP=8 sweeps are unchanged.

perf-changelog.yaml documents the image move and notes the official build’s V1 KV-cache manager and overlap scheduler behavior versus the custom image’s V2 doubling that caused OOM at high concurrency.

Reviewed by Cursor Bugbot for commit 80aed07. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

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.

@Oseltamivir Oseltamivir force-pushed the cap-dsv4-b200-trt-conc branch from db4f329 to 700e5ec Compare June 4, 2026 17:41
Comment thread perf-changelog.yaml Outdated
Comment on lines +3462 to +3467
- config-keys:
- dsv4-fp4-b200-trt
- dsv4-fp4-b200-trt-mtp
description:
- "Use official TRT-LLM release image (nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc15.post1) for B200 DeepSeek-V4-Pro TRT configs, replacing the custom ghcr.io feat/deepseek_v4 build (9aa3715)."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/PENDING
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 The new perf-changelog entry at line 3467 still has the pull/PENDING placeholder instead of pull/1664 — this will merge as a broken changelog link, breaking the convention used by every other entry in the file. Additionally, the description bullet only documents the image switch and omits the substantial attention-DP concurrency search-space reduction also in this PR (trt 1k1k 2048→128, trt 8k1k 1024→256, trt-mtp 1k1k 512→128); the file consistently documents such changes alongside image bumps (see lines 56, 81, 447, 2236). Both fixes are trivial — replace PENDING with 1664 and add a second bullet noting the concurrency tightening.

Extended reasoning...

Issue 1 — pr-link: .../pull/PENDING

The diff adds at perf-changelog.yaml:3467:

  pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/PENDING

This is PR #1664, but the URL was left as the literal placeholder PENDING. As written, the link resolves to https://github.com/SemiAnalysisAI/InferenceX/pull/PENDING, which is a 404.

Step-by-step proof. The three entries immediately preceding this one (added in PRs #1641, #1647, #1648) all use concrete integer PR numbers in their pr-link field — e.g. lines 3439, 3446, 3453, 3460. Grepping perf-changelog.yaml for pull/PENDING matches only this new entry; every other one of the ~hundred entries uses a real PR number. So this is unambiguously a forgotten placeholder, not a stylistic choice.

Issue 2 — concurrency search-space changes omitted from description

The PR makes two substantive behavioral changes:

  1. Image switch (documented in the new bullet).
  2. Attention-DP concurrency upper-bound tightening, not documented:
    • dsv4-fp4-b200-trt 1k1k: conc-end: 2048 → 128
    • dsv4-fp4-b200-trt 8k1k: conc-end: 1024 → 256
    • dsv4-fp4-b200-trt-mtp 1k1k: conc-end: 512 → 128

Future readers of perf-changelog.yaml will not see that the sweep grid shrank and that previously-benchmarked high concurrencies (256–2048) are no longer covered.

Why this is a real gap, not subjective. The refutation argues that what to put in a changelog is an editorial call and the PR-description framing treats concurrency as a supporting change. That is a fair concern, but the established convention in this specific file repeatedly documents concurrency search-space changes alongside image bumps, e.g.:

  • L56: "Extend concurrency to 128 for gptoss mi355x/b200"
  • L81: "Increase concurrency for some configurations" — paired with a TRT image bump on L80 for dsr1-fp8-h200-trt, an exact parallel to this PR
  • L447: "Extend maximum concurrency to 256 across all sequence lengths"
  • L2236: "Raise conc-end from 64 to 256..."

The PR description itself ("Tighten concurrency search space to fit B200 memory ceiling") and the Cursor-Bugbot summary both call this out as a distinct change. Omitting it from perf-changelog.yaml is a genuine divergence from how the file is maintained — not just style.

Impact and fix

Neither issue affects runtime/benchmark behavior; both are changelog-metadata cleanups, hence nit severity. Suggested fix:

- config-keys:
    - dsv4-fp4-b200-trt
    - dsv4-fp4-b200-trt-mtp
  description:
    - "Use official TRT-LLM release image (nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc15.post1) for B200 DeepSeek-V4-Pro TRT configs, replacing the custom ghcr.io feat/deepseek_v4 build (9aa3715)."
    - "Tighten attention-DP concurrency search space to fit B200 memory: 1k1k conc-end 2048→128 (trt) / 512→128 (trt-mtp); 8k1k conc-end 1024→256 (trt)."
  pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1664

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

@Oseltamivir Oseltamivir changed the title Use official TRT-LLM image (1.3.0rc15.post1) for DSv4 B200 TRT Update DSv4 B200 TRT image to 2dd03e6 (non-MTP + MTP) Jun 4, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Oseltamivir and others added 2 commits June 5, 2026 00:00
The 2dd03e6 build sizes the slot pool as max_num_requests = max_batch_size *
num_micro_batches, with num_micro_batches=2 under the overlap scheduler -> 512
at --max_batch_size 256 (tensorrt_llm/_torch/pyexecutor/_util.py on
feat/deepseek_v4). The older 9aa3715 build used 256. That extra headroom pushed
the conc-256 dpa=true 8k1k prefill-warmup ~0.3 GiB over B200's 178 GiB and OOM'd
(run 26987679137, job 79643136619).

Setting disable_overlap_scheduler: true makes num_micro_batches=1 ->
max_num_requests=256, matching the 9aa3715 footprint that fit conc-256 on B200.
Trade-off: turns off the overlap scheduler (throughput optimization), so these
B200 numbers are not directly comparable to overlap-on configs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Switch dsv4-fp4-b200-trt and -mtp from the custom feat/deepseek_v4 build
(2dd03e6) to the official nvcr.io rc15.post1 release, and revert the
disable_overlap_scheduler workaround so the official image runs natively
(launchers now match origin/main).

The official release uses the V1 KV-cache manager (use_kv_cache_manager_v2=
False), so it has neither the custom V2 build's max_num_requests=2x slot-pool
doubling that OOM'd conc-256 dpa=true on B200, nor the SWA-scratch-revert bug.
It fared far better on B300 (run 26999118817: 8k1k dpa=true conc-256 through
conc-2048 passed with the overlap scheduler on). This mirrors that setup on
B200; the 128/256 dpa concurrency caps are left as-is.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

1 participant