Skip to content

kimik3-fp4-b300-vllm-agentic-dspark: add LMCache DRAM KV-offload arm - #2593

Closed
sammshen wants to merge 5 commits into
SemiAnalysisAI:mainfrom
sammshen:kimik3-b300-lmcache
Closed

kimik3-fp4-b300-vllm-agentic-dspark: add LMCache DRAM KV-offload arm#2593
sammshen wants to merge 5 commits into
SemiAnalysisAI:mainfrom
sammshen:kimik3-b300-lmcache

Conversation

@sammshen

@sammshen sammshen commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

What

Adds a dedicated config key kimik3-fp4-b300-vllm-agentic-dspark-lmcache with an LMCache DRAM KV-offload arm at TP8 conc 4 / 8 / 10 / 16, on top of the unchanged DSpark MTP serving stack of kimik3-fp4-b300-vllm-agentic-dspark (same image, script, and topology). A separate key means the changelog selects only the LMCache points — the resident and vllm-simple arms of the base key are not re-run.

B300 sister of the MI355X arm in #2583; same LMCache version (0.5.4rc2), same MP-server topology, CUDA install path and NVIDIA-side chunk size.

Changes

  • configs/nvidia-master.yaml — new key, purely additive (the base key is byte-identical to main): kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.4rc2" }, conc-list: [4, 8, 10, 16], spec-decoding: mtp, at the base key's dram-utilization: 0.63 (1,889 GB aggregate at TP8). 4/8/16 land on the base key's vllm-simple ladder at its top three offload points, so LMCache is directly comparable there; 10 fills the 8->16 gap.
  • benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh — new lmcache) case arm:
    • installs LMCache's published CUDA 12.9 build (the v0.5.4rc2-cu129 release assets — the CUDA counterpart of the -rocm assets the MI355X sister arm installs), not the generic PyPI wheel, via the upstream install line with --extra-index-url https://download.pytorch.org/whl/cu129. --index-strategy unsafe-best-match has no pip counterpart because it needs none: pip already resolves best-match across every configured index, which is exactly what that flag restores in uv. torch is an unpinned LMCache requirement the image already satisfies, so its tested build is left alone. A fail-fast import check follows.
    • starts a single MP server per the Kimi-K3 recipe: --chunk-size 768 (that recipe's CUDA-path value), --separate-object-groups (one object group per sliding-window size for the hybrid KDA/MLA layout, which has more than one KV-cache group under MTP), --enable-extra-logging, --max-cpu-workers 8 --max-gpu-workers 1, --l1-size-gb $TOTAL_CPU_DRAM_GB, LRU eviction, --shm-name "" so L1 lives in ordinary process memory rather than being capped by /dev/shm.
    • wires vLLM to it via LMCacheMPConnector (lmcache.mp.port), keeping the DSpark --speculative-config untouched.
    • adds an EXIT trap that stops the LMCache server; the vLLM server's lifecycle is unchanged (the job wrapper still owns it).
    • the unsupported-backend error message now names lmcache too.
  • perf-changelog.yaml — selects only the new key.
  • The L1 budget consumes the generated TOTAL_CPU_DRAM_GB verbatim per the agentic README.

Note on --chunk-size: the connector requires the chunk to be a multiple of every engine KV group's tokens_per_block. 768 is the published CUDA-path value; the ROCm sister arm needs 3072 because its hybrid layout registers 1536-token attention groups and a 3072-token KDA state group. If the B300 server log reports a mismatch, this is the one value to raise — the script comment says so and names the log lines to read.

Validation

process_changelog.py run exactly as CI does (base = main) emits a 4-row matrix, nothing else:

kimik3_tp8_conc4_kvdram-lmcache_spec-mtp   | lmcache 0.5.4rc2 | throughput
kimik3_tp8_conc8_kvdram-lmcache_spec-mtp   | lmcache 0.5.4rc2 | throughput
kimik3_tp8_conc10_kvdram-lmcache_spec-mtp  | lmcache 0.5.4rc2 | throughput
kimik3_tp8_conc16_kvdram-lmcache_spec-mtp  | lmcache 0.5.4rc2 | throughput
kimik3_tp8_conc16_kvdram-lmcache_spec-mtp  | lmcache 0.5.4rc2 | eval-only

generate_sweep_configs.py test-config passes for both the new key and the (unchanged) base key; bash -n passes on the modified script; utils/changelog_gate_tests/test_validate_perf_changelog.py and utils/test_process_changelog.py pass (35 tests).

Add a dedicated config key kimik3-fp4-b300-vllm-agentic-dspark-lmcache with
an LMCache 0.5.4rc2 DRAM KV-offload arm at TP8 conc 4/8/16, on top of the
unchanged DSpark MTP serving stack of kimik3-fp4-b300-vllm-agentic-dspark
(same image, script, and topology). A separate key means the changelog
selects only the LMCache points; the resident and vllm-simple arms of the
base key are not re-run.

B300 sister of the MI355X arm in SemiAnalysisAI#2583.

@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.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@sammshen sammshen added agentx AgentX benchmarks, recipes, and infrastructure full-sweep-enabled NVIDIA labels Aug 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Dispatched trusted sweep run for approved external revision b529bef46f60f4e2a267ae9a94c5421e8f596372.
New commits are not trusted automatically; remove and re-add the primary sweep label to approve a new SHA.

已为获批的外部提交 b529bef46f60f4e2a267ae9a94c5421e8f596372 调度trusted sweep run
后续新提交不会自动获得信任;如需批准新的 SHA,请移除并重新添加主扫描标签。

@github-actions

Copy link
Copy Markdown
Contributor

Dispatched trusted sweep run for approved external revision 07e114d287a4180a16f210acba887755375bfd78.
New commits are not trusted automatically; remove and re-add the primary sweep label to approve a new SHA.

已为获批的外部提交 07e114d287a4180a16f210acba887755375bfd78 调度trusted sweep run
后续新提交不会自动获得信任;如需批准新的 SHA,请移除并重新添加主扫描标签。

@sammshen

Copy link
Copy Markdown
Collaborator Author

/stage-results

@sammshen

Copy link
Copy Markdown
Collaborator Author

Superseded by #2597, which carries the same commits on a branch in this repo rather than a fork. Same-repo PRs get secrets, so run-sweep.yml does the real work there and /stage-results can find it.

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

Labels

agentx AgentX benchmarks, recipes, and infrastructure full-sweep-enabled NVIDIA

Projects

Development

Successfully merging this pull request may close these issues.

1 participant