Skip to content

[AgentX] Test vLLM DeepSeek-V4 GB300 aggregate TP / 测试 vLLM DeepSeek-V4 GB300 聚合式 TP#2284

Closed
ivanium wants to merge 15 commits into
mainfrom
agentx/dsv4-gb300-tp-test
Closed

[AgentX] Test vLLM DeepSeek-V4 GB300 aggregate TP / 测试 vLLM DeepSeek-V4 GB300 聚合式 TP#2284
ivanium wants to merge 15 commits into
mainfrom
agentx/dsv4-gb300-tp-test

Conversation

@ivanium

@ivanium ivanium commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add only the GB300 Dynamo-vLLM aggregate TP4 and TP8 configurations for focused validation.
  • Lower gpu-memory-utilization to 0.92 for both TP4 and TP8; do not enable expandable segments.
  • Enable the DeepSeek-V4 tool-call and reasoning parser settings on both aggregate recipes.
  • Include only the shared launcher and sweep-generation support required by these TP runs.
  • No P/D recipes, P/D master-config entries, or P/D changelog keys are included.

Root cause

Previous TP4 and TP8 aggregate runs exhausted dynamic CUDA workspace headroom at gpu-memory-utilization: 0.95. The observed failures occurred in different runtime kernels, with only about 0.5–1.8 GiB physically free. Using 0.92 reserves approximately 8.3 GiB/GPU relative to 0.95.

Validation

  • Recipe, master-config, and changelog YAML files parse successfully.
  • git diff --check passes.
  • Two targeted matrix-generation tests pass.
  • Sweep generation produces exactly six aggregate jobs: TP4 at c1/c4/c8 and TP8 at c1/c8/c16.
  • Draft only: no sweep label has been added.

中文说明

  • 仅添加 GB300 Dynamo-vLLM 聚合式 TP4 和 TP8 配置,用于针对性验证。
  • 将 TP4 和 TP8 的 gpu-memory-utilization 均降至 0.92,不启用 expandable segments。
  • 在两个聚合式推理配置中启用 DeepSeek-V4 工具调用与推理解析器。
  • 仅保留这些 TP 任务必需的共享启动器与扫描配置生成支持。
  • 不包含任何 P/D 推理配置、P/D 主配置条目或 P/D 变更日志键。

根因

此前 TP4 和 TP8 聚合式任务在 gpu-memory-utilization: 0.95 下没有为动态 CUDA 工作区预留足够显存。故障出现在不同的运行时内核中,发生 OOM 时物理可用显存仅约 0.5–1.8 GiB。将配置降至 0.92 后,相比 0.95 每张 GPU 可额外预留约 8.3 GiB 显存。

验证

  • 推理配置、主配置与变更日志 YAML 均可正常解析。
  • git diff --check 通过。
  • 两项针对性的扫描配置生成测试通过。
  • 扫描配置生成结果仅包含 6 个聚合式任务:TP4 的 c1/c4/c8,以及 TP8 的 c1/c8/c16。
  • 当前仅为草稿 PR,尚未添加 sweep 标签。

ivanium added 10 commits July 19, 2026 21:13
Backport per-node Dynamo health counting and provide explicit GB300 NUMA mappings for aggregate workers.

中文:回移按节点启动模式下的 Dynamo 健康检查计数修复,并为 GB300 聚合式工作进程显式配置 NUMA 映射。
中文:将性能变更日志中的 PR 链接更新为 #2269
Lower gpu-memory-utilization from 0.95 to 0.94 after TP4 aggregate c1 and c8 both ran out of memory during FP4 MoE execution.

中文:将 gpu-memory-utilization 从 0.95 降至 0.94,为 GB300 TP4 聚合式 worker 预留显存余量;此前 c1 和 c8 均在执行 FP4 MoE 时发生显存不足。
Lower TP4 and TP8 gpu-memory-utilization to 0.92, enable the DeepSeek-V4 tool-call and reasoning parsers, and limit the changelog trigger to aggregate TP configurations.

中文:将 TP4 和 TP8 的 gpu-memory-utilization 降至 0.92,启用 DeepSeek-V4 工具调用与推理解析器,并将变更日志触发范围限制为聚合式 TP 配置。
@github-actions

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 关于重新运行失败任务的文档

ivanium added 2 commits July 19, 2026 22:56
Point the isolated aggregate TP changelog entry at draft PR #2284.

中文:将独立的聚合式 TP 变更日志条目指向草稿 PR #2284
Remove the P/D recipes, master-config entries, changelog references, and per-node-DP launcher support so draft PR #2284 validates only aggregate TP4 and TP8.

中文:移除 P/D 推理配置、主配置条目、变更日志引用以及单节点内 DP 启动支持,使草稿 PR #2284 仅验证聚合式 TP4 和 TP8。
@ivanium
ivanium marked this pull request as ready for review July 19, 2026 23:47
@ivanium
ivanium requested a review from a team July 19, 2026 23:47
@claude

claude Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ivanium's task in 3m 43s —— View job


Review complete

  • Read full PR diff against origin/main
  • Review new recipe YAMLs (TP4/TP8 agentic)
  • Validate configs/nvidia-master.yaml changes (image accessibility, model prefixes)
  • Validate perf-changelog.yaml entry (present + appended at end)
  • Review launcher / benchmark_lib / sweep-gen changes (enroot import, EP pattern, formatting)
  • Line-count report for generate_sweep_configs.py
  • Post inline comments and final summary

Summary

No blocking issues, two warnings posted inline:

  1. 🟡 The TP8 recipe sets IS_MULTINODE: "false" while spanning two nodes (agg_nodes: 2) — every other node-spanning recipe sets "true", and this flag feeds the benchmark identity key used for artifact reuse/result grouping. Likely a copy-paste from the TP4 recipe.
  2. 🟡 MAX_MULTINODE_AGENTIC_CONCURRENCIES_PER_ALLOCATION 4→1 is a global change that reshapes the job matrix for all existing multinode agentic sweeps (one full server deployment per concurrency point), which goes beyond the PR's stated "only what these TP runs require" scope — please confirm this is intended or scope it.

Everything else checks out: the perf-changelog entry is present and correctly appended at the end of the file; the container image is a public Docker Hub reference; the master-config agg entry mirrors the existing sglang agg convention (decode.num-worker: 0); EP_SIZE: "1" with no hardcoded --enable-expert-parallel; the launcher retains its enroot import docker:// pattern and the new pinned-tag + verified cherry-pick flow is sound (set -e guards failures, --depth 2 fetch provides the parent needed by cherry-pick); the benchmark_lib.sh conv-aware-routing opt-out guard is correct and matched by the recipes' AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0".

Note: I could not run pytest utils/matrix_logic/test_generate_sweep_configs.py in this environment (command not in allowed tools), so I reviewed the updated test expectations by inspection only — they are consistent with the new per-concurrency chunking.

INFMAX_CONTAINER_WORKSPACE: /infmax-workspace
RESULT_DIR: /logs/agentic
PORT: "8000"
IS_MULTINODE: "false"

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.

🟡 WARNING: IS_MULTINODE: "false" on a recipe that spans two nodes (agg_nodes: 2, gpus_per_agg: 8).
Why it matters: This env var is stamped into meta_env.json (benchmarks/benchmark_lib.sh:997) and is_multinode is part of the benchmark identity key in utils/validate_reusable_sweep_artifacts.py (lines 49/140/318). Every other node-spanning recipe in this tree (all disagg-gb300-*/disagg-gb200-* vLLM and SGLang agentic recipes) sets "true"; only the single-node agg recipes set "false". This looks like a copy-paste from the TP4 recipe and will mislabel the TP8 results as single-node, which can break artifact-reuse matching and result grouping.
Fix:

Suggested change
IS_MULTINODE: "false"
IS_MULTINODE: "true"

Comment on lines 26 to +29
# Bound how many multinode agentic conc points share one server allocation.
MAX_MULTINODE_AGENTIC_CONCURRENCIES_PER_ALLOCATION = 4
# One task/Slurm allocation per concurrency gives each benchmark point a
# fresh server deployment, matching single-node agentic sweep isolation.
MAX_MULTINODE_AGENTIC_CONCURRENCIES_PER_ALLOCATION = 1

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.

🟡 WARNING: Changing MAX_MULTINODE_AGENTIC_CONCURRENCIES_PER_ALLOCATION from 4 to 1 is a global change, not scoped to the new GB300 configs.
Why it matters: Every existing multinode agentic config (e.g. the GB200 dynamo-vllm 2p1d/3p2d disagg sweeps) now gets one Slurm allocation + full multi-node server deployment per concurrency point instead of batching up to 4 points per allocation — e.g. a conc-list of [16, 32, 64, 128, 256] goes from 2 allocations to 5. For large disagg deployments each extra allocation repeats queueing + model load, which materially increases sweep wall-clock and cluster load. The PR description says it includes "only the shared launcher and sweep-generation support required by these TP runs", but this constant affects all multinode agentic sweeps. If per-concurrency isolation is only needed for the new GB300 agg runs, consider scoping it (e.g. keying off the config) rather than changing the global default; if the global change is intended, please state that explicitly in the PR description/changelog since it changes job-matrix shape for existing configs.

📊 Line Count Report

  • Total Lines: 1336
  • Base Lines: 1334
  • Change: 📈 +2 lines

@github-actions

Copy link
Copy Markdown
Contributor

ivanium added 3 commits July 20, 2026 23:19
Limit the GB300 Dynamo-vLLM AgentX aggregate validation to TP4 at concurrency 4 and TP8 at concurrency 1. Update the changelog description to match.

中文:将 GB300 Dynamo-vLLM AgentX 聚合验证限制为 TP4 并发 4 和 TP8 并发 1,并同步更新变更日志说明。
中文:将上游 main 合并到 GB300 TP 测试分支并解决冲突。
中文:移除 TP 测试分支中已由上游 main 覆盖的冗余矩阵逻辑改动。
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

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