Skip to content

[AgentX] offload Muse Spark Open H200 to HiCache / [AgentX] Muse Spark Open H200 全部并发启用 HiCache 卸载 - #4199

Merged
functionstackx merged 4 commits into
mainfrom
feat/musespark-h200-hicache
Oct 16, 2026
Merged

functionstackx merged 4 commits into
mainfrom
feat/musespark-h200-hicache

Conversation

@Oseltamivir

Copy link
Copy Markdown
Collaborator

Moves every point of the Muse Spark Open H200 sweep (c1–c64) to a single SGLang HiCache arm with host-DRAM KV offload (160 GB per rank, dram-utilization 0.80). The GPU-resident settings stay the same: mem-fraction-static 0.85 and the existing running-request / decode-graph caps. This mirrors #4182 for H100.

H200 has about 20 GB of free GPU memory at 0.85, so the H100 HiCache out-of-memory problem shouldn't recur here.

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps run only when the PR appends an inferencex-e2e/perf-changelog.yaml entry and carries exactly one primary label: full-sweep-fail-fast (strongly recommended; canary plus per-matrix fail-fast), full-sweep-enabled (canary; matrix jobs continue after a failure), or non-canary-full-sweep-enabled (no canary or fail-fast). The modifiers all-evals, evals-only, and agentx-fast require a primary label. On fork PRs, a maintainer applies the label. See sweep labels and reuse.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**只有当 PR 在 inferencex-e2e/perf-changelog.yaml 末尾追加了条目,并且恰好带有一个主标签时,才会运行扫描:full-sweep-fail-fast(强烈推荐;canary 加逐矩阵 fail-fast)、full-sweep-enabled(有 canary;矩阵任务在失败后继续运行)或 non-canary-full-sweep-enabled(无 canary,也无 fail-fast)。修饰标签 all-evals、evals-only 和 agentx-fast 必须与主标签一起使用。fork PR 的标签由维护者添加。参见扫描标签与复用。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

@Oseltamivir Oseltamivir added the non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim) label Oct 16, 2026

@claude claude Bot left a comment

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.

Findings marked 🟡 are optional suggestions and need no follow-up push.

Comment thread inferencex-e2e/perf-changelog.yaml Outdated
description:
- "Offload every Muse Spark Open H200 point to host DRAM with SGLang HiCache (160 GB per rank, dram-utilization 0.80), keeping the concurrency 1-64 sweep."
- "Keep the GPU-resident settings unchanged: mem-fraction-static 0.85, matching running-request and decode-graph caps."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXXX

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.

🔴 This PR's changelog check will fail, and the merge-prep step will raise, because the new entry's placeholder link is pull/XXXX (four X's). The validator only accepts XXX or .../pull/XXX (three X's) at PR_LINK_PLACEHOLDERS in validate_perf_changelog.py:22-25. It also accepts the real .../pull/<number>, but XXXX matches none of these. Fix: change the line to pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX or to the real PR number.

Why this was flagged

The new block appended at inferencex-e2e/perf-changelog.yaml:10045 has pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXXX. On a PR run, validate_added_pr_link (inferencex-e2e/infx/workflows/validate_perf_changelog.py:140-150) raises "new PR entry must use ... or an XXX placeholder". It does so because the link is neither in PR_LINK_PLACEHOLDERS (only "XXX" and ".../pull/XXX") nor equal to .../pull/{pr_number}. At merge time, prepare_perf_changelog_merge.py:108-111 raises "appended entry N has unexpected pr-link" for the same reason instead of rewriting the placeholder to the canonical link. On the base branch, both existing placeholder entries (lines 5598 and 9727) use the accepted three-X form. The documented template in CONTRIBUTING.md:206 also uses pull/XXX. Nothing normalizes XXXX, so the changelog gate blocks this PR and the benchmark rerun it triggers.

Verification: The new entry in inferencex-e2e/perf-changelog.yaml ends with pull/XXXX, which is not in PR_LINK_PLACEHOLDERS (validate_perf_changelog.py:22-25). merge_with_reuse.py:631 calls canonicalize_changelog(pr, repo), which raises ChangelogValidationError before the placeholder is swapped. The PR-run check (run-sweep.yml:97-117) never calls compare_entries, so it passes.

Comment on lines +68 to +69
enable-hierarchical-cache: true
hicache-size: 160

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.

🟡 (optional) Every H200 point now pins about 1280 GB of host KV pools. The DRAM budget this config declares is 1234 GB. h200-dgxc is the only Muse Spark HiCache runner whose pools exceed the budget. hicache-size: 160 is allocated per TP rank, so TP8 gives 8 x 160 = 1280 GB. Matrix generation gives total-cpu-dram-gb = 1,471,356 MiB x 0.80 = 1234 GB. Fix: keep 8 x hicache-size within the budget, e.g. hicache-size: 150 (1200 GB, cap 154). Or raise dram-utilization in nvidia-master.yaml to at least 0.83 on purpose.

Why this was flagged

Each c1-c64 point of musespark-fp4-h200-sglang-agentic-dflash now selects zip_override_tp8_hicache. That override starts SGLang with enable-hierarchical-cache and hicache-size 160, in GB, for each of the 8 TP ranks, so about 1280 GB of pinned host memory. The runner is cluster:h200-dgxc, and runners.yaml:392 lists available-cpu-dram-mib 1_471_356 (about 1543 GB). infx/matrix/generate.py:516-519 multiplies that by dram-utilization 0.80, giving TOTAL_CPU_DRAM_GB = 1234. That value goes to the run and is recorded as allocated_cpu_dram_gb (infx/results/agentic/init.py:192). The pools therefore use about 83% of the node, not the declared 80%. On the base branch these points used kv-offloading none and pinned no host pool. No validator checks hicache-size x TP against TOTAL_CPU_DRAM_GB, because the recipe does not set TOTAL_CPU_DRAM_GB (single_node.py:138).

Verification: nit. agentic.yaml:68-69 sets hicache-size: 160 with tensor-parallel-size: 8 (line 25), so the pools total 8 x 160 = 1280 GB. generate.py:516-519 computes 1,471,356 MiB x 0.80 = 1234 GB for h200-dgxc. That value is published as allocated_cpu_dram_gb (results/agentic/init.py:192). The recorded budget therefore understates the real host pinning by 46 GB.

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

@functionstackx

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 38941442268

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
@functionstackx
functionstackx merged commit 9e1d55e into main Oct 16, 2026
25 checks passed
@functionstackx
functionstackx deleted the feat/musespark-h200-hicache branch October 16, 2026 21:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

non-canary-full-sweep-enabled Run the full sweep without the canary gate (full search space, no trim)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants