[ROCm] Document DeepSeek-V4-Pro MI355X 8K/1K InferenceX reproduction - #928
Conversation
Add a guide-only section covering the single-node 8x MI355X fixed-sequence launch used by SemiAnalysisAI/InferenceX#2792, for both the STP arm and the real MTP arm with two speculative tokens. The recipe already carries a general AMD configuration and an Agentic MI355X reproduction, but neither matches this lane: the fixed-sequence configuration runs at --gpu-memory-utilization 0.8 with prefix caching explicitly disabled, FULL_AND_PIECEWISE graphs, an explicit AITER MoE backend, and either no speculation or real MTP with K=2 rather than the Agentic lane's synthetic MTP K=3. Guide-only: no new model file or variant, no change to the general AMD hardware overrides, variant defaults, or strategy builders. The generated per-hardware and per-strategy commands are byte-identical before and after this change; the only semantic delta in the JSON API is guide and meta.date_updated. Signed-off-by: Chun Fang <chun.fang@amd.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Code Review
This pull request updates the metadata and adds a comprehensive guide for reproducing the fixed-sequence benchmark (InferenceX MI355X 8K/1K) for the DeepSeek-V4-Pro model. The review feedback correctly identifies that the --no-enable-prefix-caching flag used in the STP launch command is invalid in vLLM and will cause startup failures, recommending its removal and a corresponding update to the comparison table.
| --async-scheduling \ | ||
| --no-enable-prefix-caching \ | ||
| --distributed-executor-backend mp \ |
There was a problem hiding this comment.
The flag --no-enable-prefix-caching is not a valid vLLM argument. In standard vLLM, prefix caching is disabled by default, and there is no --no-enable-prefix-caching option in the argument parser. Passing this unrecognized argument will cause the vllm serve command to fail at startup with an unrecognized arguments error.
To disable prefix caching, you should simply omit the --enable-prefix-caching flag.
--async-scheduling \
--distributed-executor-backend mp \| |---|---|---| | ||
| | Workload | ISL 8192 / OSL 1024, conc 4–512 | agentic-coding traces | | ||
| | `--gpu-memory-utilization` | `0.8` | `0.86` | | ||
| | Prefix caching | `--no-enable-prefix-caching` | `--enable-prefix-caching` | |
Summary
Adds the exact single-node 8× MI355X fixed-sequence (8K/1K) reproduction for SemiAnalysisAI/InferenceX#2792 to the DeepSeek-V4-Pro guide. Both arms of that lane are documented: STP (no speculative decoding) and real MTP with two speculative tokens.
This updates the existing Guide only. It does not change general recipe defaults — no new model file or variant, and no edits to
hardware_overrides.amd, variant defaults, or the strategy builders.The recipe already carried a general AMD configuration and an Agentic MI355X reproduction, but neither is an exact replacement for this lane:
--gpu-memory-utilization0.80.90.86--no-enable-prefix-caching--enable-prefix-cachingFULL_AND_PIECEWISEFULL_DECODE_ONLYFULL_AND_PIECEWISE--moe-backendaiteraiter--max-num-seqs/--max-num-batched-tokens512/81928/8192:nightlyRecipe-site structural and render checks were run locally (below). The GPU performance and eval results come from the linked InferenceX run — no MI355X benchmark was rerun in this repository.
Source and validation provenance
7393456f925f4962fc9bb6438567e73f7ca12bf8dsv4_fp4_mi355x_vllm.shdsv4_fp4_mi355x_vllm_mtp.shconfigs/amd-master.yaml— keysdsv4-fp4-mi355x-vllmanddsv4-fp4-mi355x-vllm-mtpsuccess)vllm/vllm-openai-rocm:nightly-7c5dc571cbd1064ecc8a9b1045637ff647aa22cb, digestsha256:f0bdaf5217a09949842b45c1ea1f12260d3205ec81f143b320dfc2eb3ec95e55, vLLM commit7c5dc571Run 33538769698 tested commit
7a209b121932696b7efd437ac50d19c53efc7a94, not the current PR head. All eight concurrency points passed on both arms, pluslm-evalGSM8K eval-only jobs at concurrency 128 and 512 (InferenceX reports em_strict 0.948–0.960, n_eff 1319, on this image).The PR head is 28 commits ahead of the tested commit, so I compared the two directly: neither fixed-sequence script changed, and the
configs/amd-master.yamlchanges in that range touch only the Kimi-K3, MiniMax-M3, and DSV4-SGLang entries — not the two DSV4 vLLM keys. The configuration documented here is therefore identical at the tested commit and at the current head.Configuration mapping
deepseek-ai/DeepSeek-V4-Pro— the FP8 (Preview) variant, not the0813defaultamd-master.yamlmodel:runner: mi355x,multinode: falseamd-master.yaml,perf-changelog.yamlVLLM_ROCM_USE_AITER=1,VLLM_ROCM_USE_AITER_MOE=1,VLLM_ROCM_USE_AITER_FUSION_SHARED_EXPERTS=1,VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4--tensor-parallel-size 8 --data-parallel-size 1; EP 1, no--enable-expert-parallelPARALLEL_ARGS; nodp-attn/epkey in the config--kv-cache-dtype fp8,--no-enable-prefix-caching--async-scheduling,--distributed-executor-backend mp--gpu-memory-utilization 0.8--moe-backend aiter--tokenizer-mode deepseek_v4,--reasoning-parser deepseek_v4'{"mode":3,"cudagraph_mode":"FULL_AND_PIECEWISE"}'--speculative-configdsv4_fp4_mi355x_vllm.sh'{"method":"mtp","num_speculative_tokens":2}'(real verification)NUM_SPEC_TOKENS=2in the MTP scriptisl/osl/conc-start/conc-end; run job namesTwo accuracy notes carried into the guide:
--dsv4to its own vendored benchmark client, which selects a private DeepSeek-V4 encoder. That is not avllm serveoption and is not copied here. The guide instead shows the upstream-supported mechanism,vllm bench serve --backend openai-chat --endpoint /v1/chat/completions, and states plainly that the two are not byte-identical.VLLM_ROCM_USE_AITER_FUSION_SHARED_EXPERTS=1is exported for recipe parity, but vLLM's own eligibility check does not currently pass for this mixed FP4+FP8 checkpoint, so the fusion self-disables at startup — as InferenceX's own changelog entry for #2792 states. The guide says this rather than claiming the fused path executed.I also verified the recipe's builder already emits exactly
{"method":"mtp","num_speculative_tokens":2}for the MTP mode on the FP8 (Preview) variant, so the interactive command builder and this guide section agree.Scope and non-goals
fp4variant — the mixed FP4+FP8 preview checkpoint stays under the established FP8 (Preview) variant.hardware_overrides.amd, variant defaults,strategy_overrides, anddocker_imageare untouched.perf-changelog.yamlplumbing.public/files committed.--max-model-len,--max-num-seqs,--max-num-batched-tokens, or--block-sizevalues invented — the lane does not pass them, and the guide says so explicitly.Validation
Commands actually run, with real outcomes:
node scripts/build-recipes-api.mjs— pass (✓ JSON API: 187 models … 9 strategies)pnpm build— pass;/deepseek-ai/DeepSeek-V4-Proprerenderedpublic/deepseek-ai/before and after the edit. Only 3 files differ (the recipe and its two promoted variant aliases, which embed the same guide), and the semantic delta is limited toguide+meta.date_updated.recommended_commandandby_hardwarehash identically, and the whole per-hardware/per-strategy rendering tree underpublic/deepseek-ai/DeepSeek-V4-Pro/is byte-identical. No generated command changed.--max-model-len,--max-num-seqs,--max-num-batched-tokens,--block-size,--enable-expert-parallel,--enable-prefix-caching, tool-calling flags, and--dsv4are absent.bash -non all three new fencedbashblocks — pass; also executed the env block to confirm the four variables export as documented, and that--num-promptsexpands to 10 × concurrency.<table>, all 3 code blocks render as<pre>, and the long image tag/digest, JSON quoting, andFP8 (Preview)reference survive intact.success, and vllm#43385 is merged.git diff --check/git diff --cached --check— clean; YAML top-level key order unchanged; exactly one file staged.Not run:
pnpm validatefails, but this is a pre-existing baseline failure unrelated to this PR — its script targetshooks/validate.mjs, which is not tracked inmain. I reproduced the identicalMODULE_NOT_FOUNDin a clean worktree on unmodifiedupstream/main(e88ec7c).pnpm lintwas also skipped: this PR touches no JavaScript.