Repository navigation
Add DeepSeek-V4.1-Flash MI355X vLLM TP8 c1 monokernel scan on latest nightly / 新增 DeepSeek-V4.1-Flash MI355X vLLM TP8 c1 monokernel 单点扫描(最新 nightly) - #4666
Conversation
|
Thanks for the contribution!
中文感谢你的贡献!
|
There was a problem hiding this comment.
Beyond the inline findings, I checked two other things and neither is a problem. First, override_tp8_c1 does not need its own monokernel setting, because it inherits monokernel: true from the shared base args at agentic.yaml:52, and c1 with five drafts is well under the 48-row mono decode limit. Second, the pull/XXX changelog link follows a placeholder pattern that existing entries already use, for example perf-changelog.yaml:10792.
Extended reasoning...
Two concerns beyond the inline comments were checked and ruled out. Mono decode is set in the base recipe args that every override inherits. The placeholder pr-link matches existing changelog entries.
Findings marked 🟡 are optional suggestions and need no follow-up push.
| # Single-point TP8 c1 scan of DeepSeek-V4.1-Flash on MI355X with mono decode | ||
| # (--monokernel) on the latest vLLM ROCm 10.0 nightly (2026-10-29). Kept as its | ||
| # own key so the TP4/TP2 grid above does not rerun. | ||
| dsv41flash-fp4-mi355x-vllm-agentic-dspark-tp8-c1: | ||
| image: vllm/vllm-openai-rocm:nightly-3966924d566340e971a6da313e790d05492aa505@sha256:8649354473843f477a96d3aa659d0ae56bcc7df743d2d02d52aaa318178ac881 | ||
| model: deepseek-ai/DeepSeek-V4.1-Flash | ||
| model-prefix: dsv41flash | ||
| runner: cluster:mi355x-amds | ||
| precision: fp4 | ||
| framework: vllm | ||
| multinode: false | ||
| srt-recipe-dir: dsv41flash/vllm/mi355x-fp4-mtp | ||
| scenarios: | ||
| agentic-coding: | ||
| - dram-utilization: 0.60 | ||
| search-space: | ||
| - { tp: 8, kv-offloading: none, spec-decoding: mtp, conc-list: [1], srt-recipe: agentic.yaml } |
There was a problem hiding this comment.
🔴 Merging this would likely replace the published MI355X vLLM DSv4.1-Flash AgentX curve (TP4 c1-c2, TP2 c1-c64) with one TP8 c1 point on a different image. The dashboard groups by model, hardware+framework, precision and run, not config key. A regular (non-append-only) run of a new key in that series becomes the newest curve. The comment at :1206-1207 assumes a separate key isolates the scan, but it does not. Fix: keep the existing curve as the newest published run. Either collect the scan from the PR sweep without merging, or add TP8 c1 to dsv41flash-fp4-mi355x-vllm-agentic-dspark as append-only: true on its current image.
Why this was flagged
The new key at amd-master.yaml:1208 has the same model-prefix, runner, framework and precision as dsv41flash-fp4-mi355x-vllm-agentic-dspark (:1183). It generates one point: tp 8, conc 1 (:1221). The changelog entry at perf-changelog.yaml:11673-11681 has no append-only: true. After /use and merge, that one-job run is ingested as a normal run of the same app series. .github/klaud-candidate-prompt.md:63 and infx/klaud/main.py:169-171 say "the newest normal run replaces that whole curve". CONTRIBUTING.md:177-182 says append-only is the only way to extend a curve instead of showing a partial run as its own curve. On the base branch, the dashboard shows the 9-point TP4/TP2 frontier on the e68efc68 image. After merge it shows one TP8 c1 point on the 3966924d image. append-only cannot fix this as written, because it requires the curve's same non-null image (CONTRIBUTING.md:191-192), and this key pins a new image.
Verification: The new changelog block (perf-changelog.yaml, appended at the tail) has no append-only: true. So once merged and ingested, the newest run of this MI355X/vLLM/fp4 DSv4.1-Flash AgentX series has one point (TP8 c1, on a different nightly image). It replaces the published multi-point TP4/TP2 frontier, per inferencex-e2e/infx/klaud/main.py:169-171.
| # Single-point TP8 c1 scan of DeepSeek-V4.1-Flash on MI355X with mono decode | ||
| # (--monokernel) on the latest vLLM ROCm 10.0 nightly (2026-10-29). Kept as its | ||
| # own key so the TP4/TP2 grid above does not rerun. |
There was a problem hiding this comment.
🟡 nit (optional): two new comments describe a config and an override instead of explaining a value, which AGENTS.md forbids. sweep:^# (Single-point TP8 c1 scan|TP8 c1 mirrors TP4 c1) The block at amd-master.yaml:1205-1207 summarizes the key and adds dated "latest nightly (2026-10-29)" context. agentic.yaml:177 restates the override's own args. Fix: drop both comments; the perf-changelog.yaml entry already records the scan, image and rationale.
Why this was flagged
AGENTS.md "Comments (mandatory, every file)" bans header comments describing a config, recipe or override, and bans history or past context; comments may only explain a specific value and must not restate code. inferencex-e2e/configs/amd-master.yaml:1205-1207 is a header for the new key dsv41flash-fp4-mi355x-vllm-agentic-dspark-tp8-c1. It also carries a dated "latest ... nightly (2026-10-29)" claim that goes stale. inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/mi355x-fp4-mtp/agentic.yaml:177 ("TP8 c1 mirrors TP4 c1: one sequence at a time, Engram tables GPU-resident.") restates max-num-seqs: 1 and engram-config: '{"cpu_offload":false}' in the lines below it. Merging this adds two convention violations that the base branch does not have. There is no runtime impact.
Verification: nit. AGENTS.md:54-58 says: "No header comments describing a file, topology, config, recipe, override, or section". The diff adds two. inferencex-e2e/configs/amd-master.yaml:1205-1207 is a header for the new key that also carries dated provenance ("latest ... nightly (2026-10-29)"). agentic.yaml:177 describes the override_tp8_c1 block. Nothing breaks at runtime.
|
View unofficial run (performance): https://inferencex.semianalysis.com/inference?unofficialRun=41394320841 View unofficial run (accuracy): https://inferencex.semianalysis.com/evaluation?unofficialRun=41394320841 |
|
Upstream vLLM recipe PR for this lane: vllm-project/vllm#64804 (adds the 中文本 lane 对应的上游 vLLM recipe PR:https://github.com/vllm-project/vllm/pull/64804(在 DeepSeek-V4.1-Flash recipe 中新增 |
|
Draft data types: no change. The DSpark draft (
At vLLM Between Sign-off evidence (PR review checklist)The CODEOWNER sign-off links this comment as its additional detail section. Evidence for each item, assessed at
中文草稿模型数据类型:无变化。 DSpark 草稿(
在 vLLM 在 签核证据(PR 审查清单)CODEOWNER 签核将本评论链接为其附加说明部分。各项证据如下(head
|
There was a problem hiding this comment.
As a PR reviewer and CODEOWNER, I have reviewed this and have:
Checklist items
- Verified that as of the moment of typing this, this is the latest version of PR_REVIEW_CHECKLIST.md
- Verified that the general code quality meets the InferenceX standard and does not make the code quality any worse.
- Verified that this PR has passed PR validation. Please link to GitHub Action workflow that shows this.
- Verified that this PR passes evals. Please link to GitHub Action workflow that shows this.
- Verified that speculative decoding PRs uses chat templates to align the AL distribution to real world
- Verified that every draft model and draft head is served as it ships: the draft that ships with the served checkpoint, at its stored precision, through the pinned upstream image's default handling, with the shipped and effective draft precision recorded in the additional detail section. No submission-side quantization, dtype override, checkpoint substitution, or patch may lower draft precision below that default, regardless of eval results or AL. Explicitly verified that
SGLANG_NVFP4_CKPT_FP8_NEXTN_MOEis not enabled in the effective recipe, including inherited settings; enabling it is prohibited going forward, and historical runs do not grant an exception. See Draft-model precision for what counts as the default and the MLPerf comparison. - For agentic workloads: verified that speculative-decoding configs (EAGLE / MTP / draft models) run with simulated synthetic acceptance, with the acceptance-length value taken from the committed golden AL curve in infx/golden_al_distribution/ for that model, thinking mode, and draft length. A submission may choose any supported draft length, but it may not substitute a different acceptance target.
- Verified against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
- Verified that the model architecture isn't changed with benchmark hacks like using --hf-overrides to skipping indexer for every x layers on models that don't natively support this. As a general rule, we won't accept optimizations that reduces the number of model architecture FLOPs. Anything that makes that same computation run faster is fair game; target/verifier FLOPs at lower precisions is fine, given that the config passes private evals, but this does not permit lowering draft-model or draft-head precision below what ships. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
- Verified that new models disable integer all-reduce, with SGLang ROCm explicitly setting
ROCM_QUICK_REDUCE_QUANTIZATION=NONE. Existing models are grandfathered per MODELS.md. - For affected Dynamo TRT-LLM benchmarks, verified that iteration/KV-cache metrics are collected and published under the pinned Dynamo implementation and effective engine settings. Resolve the installed Dynamo version separately from the container tag; use supported metrics controls without requiring KV events. Record the version and configuration evidence in the additional detail section. See verifier Check 17. N/A for unaffected serving paths or frameworks without these Dynamo settings.
- If an company claims that they support vLLM/SGLang as first class LLM inference engines on their hardware, I have verified that the respective vLLM submission made using upstream https://hub.docker.com/u/vllm docker repo, upstream SGLang https://hub.docker.com/u/lmsysorg docker repo. The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
- For official InferenceX (non-preview), verified that established models use upstream engine images built from
master(or the equivalent default development branch), with new models transitioning within a reasonable time after release. See MODELS.md. - If an company claims that they support vLLM/SGLang as first class upstream in-tree LLM inference engines on their hardware, I have have verified that the respective vLLM/SGLang submission has been made before additional frameworks (TRT-LLM, ATOM, etc.). The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet.
- Verified that every affected vLLM/SGLang production serving configuration in this PR, including Dynamo deployments, is documented in the official vLLM recipes and/or the SGLang cookbook, for both single-node and multi-node aggregated and disaggregated serving. The documentation covers production-useful flags, environment variables, and launch commands (including prefill, decode, and router/frontend commands for disaggregation); InferenceX-only benchmark/harness settings are excluded with reasoning in the additional detail section:
- I linked the corresponding upstream PR in the vLLM recipe repo or SGLang cookbook source repo and verified that it is MERGED before this InferenceX PR merges. An opened, draft, or closed-without-merge upstream PR does not satisfy this requirement. If the matching recipe was already published, I linked the published recipe/cookbook page in the additional detail section below.
- Verified that this PR does not patch the inference engine or serving stack — the pinned image must run as shipped. This covers .patch files / git apply / patch, inline patches embedded in benchmark scripts (e.g. a python3/sed heredoc that rewrites installed engine sources before serving), in-place edits of site-packages, monkey-patching, overwriting container files, and installing forked/rebuilt engine wheels on top of the pinned image. The only exception is a patch covered by a filled-out waiver at docs/waiver/
<PR_NUMBER>.md— named after the PR that introduces the patch and filed in that same PR, stating what is patched, why the unmodified upstream image cannot run this benchmark, the upstream PR/issue link, and the removal plan — which I have linked below in the additional detail section. - If this PR uses
append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it. - If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.
- Reported measured throughput/E2EL Pareto counts and evidence per affected curve (≥5 points strongly recommended). Below 5 or unverifiable: tag a core maintainer for review; recorded admin bypass required before merge. N/A if no curves are affected. Details.
Additional detail section:
-
insert any additional info here
-
recipe vllm-project/vllm#64804
Signed: seungrokj
|
9117fe6 to
f5fac2a
Compare
新增 DeepSeek-V4.1-Flash MI355X vLLM TP8、并发 1、启用 monokernel 的单点扫描,使用最新 nightly 镜像。 Co-authored-by: Oxana Korzh <270792019+okorzh-amd@users.noreply.github.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… with TP8 mono 将 DeepSeek-V4.1-Flash MI355X TP8 c1 扫描更新到包含 TP8 mono 的最新 nightly。 Co-authored-by: Oxana Korzh <270792019+okorzh-amd@users.noreply.github.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…he diff - New key on vllm/vllm-openai-rocm:nightly-335dd77b0 (2026-10-30, digest sha256:3c634cc2…); the TP4/TP2 key stays on nightly-e68efc685. - Add one point: TP8, concurrency 1, no KV offloading. The TP4/TP2 search space is unchanged and is not rerun. - override_tp8_c1 uses the TP4 c1 settings: TP8, GPU-resident Engram, max-num-seqs 1, max-cudagraph-capture-size 8, max-num-batched-tokens 32768. Shared settings (--monokernel, five-token DSpark, block 128, MXFP4 sparse-logits indexer, INT4 quick all-reduce) are unchanged. - The image carries vllm-project/vllm#64101 (mono decode at TP8 on gfx950) plus #63885, #60154, #63179, #63915, #63576, #63689 and #63047 relative to e68efc685. - Draft data types unchanged: the DSpark draft loads with the checkpoint's FP8 config as shipped and inherits the target fp8_ds_mla KV cache. - 新配置键使用 vllm/vllm-openai-rocm:nightly-335dd77b0(2026-10-30,digest sha256:3c634cc2…);TP4/TP2 配置键仍使用 nightly-e68efc685。 - 新增一个点:TP8、并发 1、无 KV 卸载。TP4/TP2 搜索空间不变,不重跑。 - override_tp8_c1 沿用 TP4 c1 的设置:TP8、Engram 常驻 GPU、max-num-seqs 1、max-cudagraph-capture-size 8、max-num-batched-tokens 32768。共享设置(--monokernel、五 token DSpark、block 128、MXFP4 sparse-logits indexer、INT4 quick all-reduce)不变。 - 该镜像包含 vllm-project/vllm#64101(gfx950 上 TP8 mono decode),相对 e68efc685 还包含 #63885、#60154、#63179、#63915、#63576、#63689 和 #63047。 - 草稿数据类型不变:DSpark 草稿按 checkpoint 自带的 FP8 配置原样加载,并沿用目标模型的 fp8_ds_mla KV cache。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
f5fac2a to
4f4d4f5
Compare
|
/use 41394320841 |
|
@functionstackx staged run 41394320841. This run remains available across future |
|
/reuse-sweep-run 41394320841 |
# Conflicts: # inferencex-e2e/perf-changelog.yaml
|
Ingest report — ✅ Results ingested into the Ingest workflow · Merge Ingest run · Benchmark source run
benchmarkFiles 11, rawBenchmarkRows 20, coveredByPerJobFiles 10, purgedPoints 0, failedRunRows 0, runStatsNew 0, runStatsDuplicate 0, evalSamplesNew 2638, gpuMetricSamplesNew 136212, powerPublicationPoints 10, changelogEntriesWritten 2 Counts cover only this run. Rows: benchmark_results, eval_results, agentic rows linked to a trace, gpu_metrics series. This comment updates if the ingest is rerun. 中文Ingest 报告 — ✅ 结果已写入 上表仅统计本次运行写入的数据,各行单位依次为 benchmark_results 行、eval_results 行、已关联 trace 的 agentic 行和 gpu_metrics 序列。重新运行 ingest 时本评论会原地更新。 |
Summary
Adds a TP8, concurrency-1 monokernel point for DeepSeek-V4.1-Flash on MI355X with vLLM. Removes INT4 QuickReduce from the shared recipe by explicitly setting
VLLM_ROCM_QUICK_REDUCE_QUANTIZATION: NONE, so integer QuickReduce is disabled for TP2, TP4 and TP8.The TP8 key uses
vllm/vllm-openai-rocm:nightly-335dd77b09161c5d63139b4e7ae51bb9928305b1pinned to digestsha256:3c634cc2c51eda7eb840a236b1f09a5ecf6a4b0cb92c4b8486e2158770507291. The existing TP4/TP2 key retains itsnightly-e68efc685ab1e6f1eda004ced7157e3ca411da2fimage.dsv41flash-fp4-mi355x-vllm-agentic-dspark-tp8-c1andoverride_tp8_c1, with GPU-resident Engram tables,max-num-seqs: 1,max-cudagraph-capture-size: 8andmax-num-batched-tokens: 32768.The pinned TP8 nightly includes vllm-project/vllm#64101, which enables mono decode at TP8 on gfx950. The earlier nightly failed at startup outside TP2/TP4. The TP8 key remains a temporary scan to retire after collecting the point.
Earlier validation
Run 41098938196 on
fa9d486passed its TP8 benchmark and eval-only jobs. That run predates removal of INT4 QuickReduce and does not validate this revised recipe.Co-authored-by: @okorzh-amd
中文
新增 DeepSeek-V4.1-Flash 在 MI355X 上使用 vLLM 的 TP8、并发 1 monokernel 测试点。共享 recipe 中将
VLLM_ROCM_QUICK_REDUCE_QUANTIZATION从INT4改为NONE,为 TP2、TP4 和 TP8 显式禁用整数 QuickReduce。TP8 使用固定 digest 的
nightly-335dd77b09161c5d63139b4e7ae51bb9928305b1,现有 TP4/TP2 保留nightly-e68efc685ab1e6f1eda004ced7157e3ca411da2f。新增 changelog 条目将两个配置键均纳入完整 sweep,取代此前仅运行 TP8 的范围。Monokernel、五 token DSpark、checkpoint、KV cache 配置及草稿精度保持不变。此前 41098938196 在
fa9d486上的 TP8 基准测试和评测通过,但该结果早于禁用 INT4 QuickReduce,不能验证修改后的 recipe。共同作者:@okorzh-amd
AI model disclosure