Skip to content

[NV] llm-d-vllm: optimize DSv4-Pro GB200 recipe configs - #2498

Open
ilmarkov wants to merge 23 commits into
mainfrom
update-dsv4-fp4-gb200-llmd-vllm
Open

[NV] llm-d-vllm: optimize DSv4-Pro GB200 recipe configs#2498
ilmarkov wants to merge 23 commits into
mainfrom
update-dsv4-fp4-gb200-llmd-vllm

Conversation

@ilmarkov

@ilmarkov ilmarkov commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Tune decode and prefill vLLM flags based on validated GB200 NVL72 benchmarks showing +2-43% tok/s/GPU and 15-25% lower TPOT:

Decode (mid-curve-megamoe):

  • gpu-memory-utilization 0.85 -> 0.9 (larger KV cache pool)
  • Add max-model-len 9280 (tight ISL8192+OSL1024 bound)
  • Disable NCCL symmetric memory (standard NVLink path faster)
  • Add no-enable-flashinfer-autotune, rust frontend
  • Dropped --stream-interval from both recipes (unsupported by rust frontend on v0.23; removed in v0.26 branch regardless)
  • Bump llmd-vllm image to vllm 0.26

Prefill (both recipes):

  • gpu-memory-utilization 0.9 -> 0.95
  • Add max-model-len 9280, max-num-seqs 16, max-num-batched-tokens 32768
  • Disable NCCL symmetric memory, enable rust frontend
  • Enable randomize-dp-dummy-inputs

EPP (both recipes):

  • Switch from max-score-picker to weighted-random-picker (threshold=0.1) for better load distribution under high concurrency

Low-latency decode: disable NCCL symmetric memory, add rust frontend.

ilmarkov and others added 15 commits July 16, 2026 14:58
Tune decode and prefill vLLM flags based on validated GB200 NVL72
benchmarks showing +2-43% tok/s/GPU and 15-25% lower TPOT:

Decode (mid-curve-megamoe):
- gpu-memory-utilization 0.85 -> 0.9 (larger KV cache pool)
- Add max-model-len 9280 (tight ISL8192+OSL1024 bound)
- max-num-seqs/batched-tokens/cudagraph-capture 512 -> 1024
- Disable NCCL symmetric memory (standard NVLink path faster)
- Add no-enable-flashinfer-autotune, rust frontend

Prefill (both recipes):
- gpu-memory-utilization 0.9 -> 0.95
- Add max-model-len 9280, max-num-seqs 16, max-num-batched-tokens 32768
- Disable NCCL symmetric memory, enable rust frontend
- Enable randomize-dp-dummy-inputs

EPP (both recipes):
- Switch from max-score-picker to weighted-random-picker (threshold=0.1)
  for better load distribution under high concurrency

Low-latency decode: disable NCCL symmetric memory, add rust frontend.
Resolve perf-changelog conflict: keep PR #2242 entry plus upstream additions.
…v/update-dsv4

Resolve perf-changelog conflict: keep single PR #2242 entry with upstream additions.
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

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. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

2 similar comments
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

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. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

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. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Comment thread perf-changelog.yaml
Comment thread perf-changelog.yaml Outdated
ilmarkov and others added 3 commits August 5, 2026 19:51
Point pr-link at #2498 and drop inaccurate max-num-seqs 512->1024 claim.

Co-authored-by: Cursor <cursoragent@cursor.com>
Move the changelog entry to the file tail and restore the two-space
separator after PR #2420 so process_changelog sees additions only.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve perf-changelog conflict by keeping main's PR #2328 entry and
appending PR #2498 at the file tail.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Move the shared image URI and squash import helpers before the llm-d early path, then use the same locked and atomic importer for its Quay image. Give fresh imports a private temporary Enroot runtime directory so CI does not fall back to /run/enroot.

中文:修复 GB200 启动器,让 llm-d 的 Quay 镜像复用带锁、原子替换和校验的共享导入逻辑。为全新导入创建独立的临时 Enroot 运行目录,避免 CI 回退到无写权限的 /run/enroot。
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Pin the vllm0.26 OCI index so Enroot 3.5 can query it on GB200. Quay returns 404 for the tag during Enroot’s headerless permission probe, while the immutable digest returns 200 and resolves the arm64 manifest.

中文:固定 vllm0.26 的 OCI 索引摘要,使 GB200 上的 Enroot 3.5 能够正常查询镜像。Quay 对 Enroot 不带 Accept 标头的标签权限探测返回 404,而不可变摘要返回 200 并可解析 arm64 清单。
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

ilmarkov and others added 3 commits August 6, 2026 10:43
…old.

EPP v0.9.0 rejects the threshold parameter; remove it from both GB200
recipes and update the changelog entry accordingly.

Co-authored-by: Cursor <cursoragent@cursor.com>
The low-latency recipe is tuned for c1 only (1P×1D); high-concurrency
1P×4D jobs were misconfigured and failing CI unrelated to recipe tuning.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

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

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants