Skip to content

[AMD][AgentX] MI355X Kimi-K3.1-Pro FP4 SGLang: DFLASH single-node points / [AMD][AgentX] MI355X Kimi-K3.1-Pro FP4 SGLang:DFLASH 单节点配置点 - #4823

Closed
kevin-mii wants to merge 2 commits into
mainfrom
kevin/kimik31-mi355x-sglang-agentic-dflash
Closed

kevin-mii wants to merge 2 commits into
mainfrom
kevin/kimik31-mi355x-sglang-agentic-dflash

Conversation

@kevin-mii

Copy link
Copy Markdown
Collaborator

SGLang has no AMD Kimi-K3.1-Pro AgentX submission yet; the only K3.1 SGLang config is the GB300 disaggregated one in #4811. This adds the single-node MI355X curve on the public day-0 image, with the same DFLASH draft and verification as #4811, so the srt driver simulates the committed golden curve.

  • Config kimik3.1-fp4-mi355x-sglang-agentic-dflash (amd-master.yaml): lmsysorg/sglang:dev-kimi-k31-pro-mi35x@sha256:6af91676…, moonshotai/Kimi-K3.1-Pro, one 8x MI355X node, TP8.
  • Draft: RadixArk/Kimi-K3.1-Dflash2-Preview@d0d8bc2e, 5 draft tokens (speculative-num-draft-tokens: 6), speculative-use-block-verification: true, FP8 draft KV. The driver selects kimi-k3.1-pro__dflash__kimi-k3.1-dflash2-preview__default-block at 5 drafts (golden AL 3.43, thinking_on); no acceptance length is hard-coded, and the spec identity audit reports no findings. The width follows the SGLang cookbook's MI35x cells (block 6).
  • Bands (the SGLang cookbook's MI355X Unified cells):
    • c1, c4: Low-Latency, TP8 AMD monokernel, running cap 4, GPU-resident KV (kv-offloading: none).
    • c8 to c48: High-Throughput, TP8 + DCP8 (a2a), running cap = concurrency, HiCache host tier (write_back, hicache-ratio 2.5, KDA-state host ratio 12). The host pools pin about 192 GB per GPU (KV 49 GB, KDA state 134 GB, indexer 10 GB), about 1.54 TB per node, inside the nodes' 1511 GiB GTT limit; dram-utilization: 0.513 records that.
  • Precision (Kimi K3.1 Pro week-1 policy): BF16 dense linears, shared expert, MoE combine (AITER_OPUS_STAGE2_FP8=0) and all-reduce (ROCM_QUICK_REDUCE_QUANTIZATION=NONE); MXFP4 routed-expert weights with FP8 activations (A8W4); FP8 KV for target and draft; FP32 KDA state (ReplaySSM). The draft runs as shipped.
  • Shared HF cache (infx/launch/drivers/srt/models.py): Kimi-K3.1-Pro AgentX on mi355x-amds loads from /it-share/hf-hub-cache with HF_HUB_OFFLINE=1, as Muse Spark does; a cold 1.56 TB node-local download per node would also run into the Hub's 429 limit.

Before the sweep: /it-share/hf-hub-cache must hold both repos. Seeding it needs cluster access:

HF_HUB_CACHE=/it-share/hf-hub-cache hf download moonshotai/Kimi-K3.1-Pro
HF_HUB_CACHE=/it-share/hf-hub-cache hf download RadixArk/Kimi-K3.1-Dflash2-Preview --revision d0d8bc2e3c6d0a195d2e00a49017e71ca8d881f1

Known limits:

  • RUSTUP_TOOLCHAIN=stable on the HiCache points works around the image's Rust toolchain: without it some ranks fall back to the Python TreeCore, and write-back asserts on the mix. The Dockerfile fix is in [Feat] [AMD] model: Add Kimi-K3.1 MI35x support sgl-project/sglang#48427; the variable can go once the image is rebuilt.
  • No point above c48: past it the host tier hits the GTT limit (KDA-state host ratio 12 overflows at a running cap of 64, and ratio 10 thrashes the cache: c64 measured 6,569 tok/s/GPU on our node).
中文

SGLang 目前还没有 AMD 平台的 Kimi-K3.1-Pro AgentX 提交;唯一的 K3.1 SGLang 配置是 #4811 中的 GB300 分离式配置。本 PR 在公开的 day-0 镜像上新增 MI355X 单节点曲线,草稿模型与验证方式与 #4811 相同,因此 srt 驱动会模拟已提交的黄金接受长度曲线。

  • 配置 kimik3.1-fp4-mi355x-sglang-agentic-dflash(amd-master.yaml):lmsysorg/sglang:dev-kimi-k31-pro-mi35x@sha256:6af91676…,moonshotai/Kimi-K3.1-Pro,单个 8x MI355X 节点,TP8。
  • 草稿模型:RadixArk/Kimi-K3.1-Dflash2-Preview@d0d8bc2e,5 个草稿 token(speculative-num-draft-tokens: 6),speculative-use-block-verification: true,草稿 KV 为 FP8。驱动选用 kimi-k3.1-pro__dflash__kimi-k3.1-dflash2-preview__default-block 曲线的 5 个草稿 token 档(黄金 AL 3.43,thinking_on);没有硬编码接受长度,spec identity 审计没有发现问题。宽度沿用 SGLang cookbook 的 MI35x 配置(block 6)。
  • 分档(SGLang cookbook 的 MI355X Unified 配置):
    • c1、c4:Low-Latency,TP8 AMD monokernel,运行上限 4,KV 常驻 GPU(kv-offloading: none)。
    • c8 至 c48:High-Throughput,TP8 + DCP8(a2a),运行上限等于并发数,HiCache 主机层(write_back,hicache-ratio 2.5,KDA 状态主机比例 12)。主机内存池每个 GPU 固定约 192 GB(KV 49 GB、KDA 状态 134 GB、indexer 10 GB),每个节点约 1.54 TB,在节点 1511 GiB 的 GTT 上限之内;dram-utilization: 0.513 记录了这一用量。
  • 精度(Kimi K3.1 Pro 第一周规则):稠密线性层、共享专家、MoE combine(AITER_OPUS_STAGE2_FP8=0)和 all-reduce(ROCM_QUICK_REDUCE_QUANTIZATION=NONE)均为 BF16;路由专家权重为 MXFP4,激活为 FP8(A8W4);目标模型和草稿模型的 KV 均为 FP8;KDA 状态为 FP32(ReplaySSM)。草稿模型按发布时的精度运行。
  • 共享 HF 缓存(infx/launch/drivers/srt/models.py):mi355x-amds 上的 Kimi-K3.1-Pro AgentX 与 Muse Spark 一样从 /it-share/hf-hub-cache 加载,并设置 HF_HUB_OFFLINE=1;每个节点各自冷下载 1.56 TB 也会触发 Hub 的 429 限流。

运行 sweep 之前: /it-share/hf-hub-cache 必须已包含上述两个仓库,需要有集群权限的人预先下载(命令见上文)。

已知限制:

  • HiCache 配置点设置 RUSTUP_TOOLCHAIN=stable,用于绕过镜像中的 Rust 工具链问题:否则部分 rank 会回退到 Python TreeCore,write-back 在两者混用时触发断言。Dockerfile 修复在 [Feat] [AMD] model: Add Kimi-K3.1 MI35x support sgl-project/sglang#48427 中;镜像重建后即可去掉该变量。
  • 不包含 c48 以上的配置点:再往上主机层会触及 GTT 上限(运行上限为 64 时,KDA 状态主机比例 12 会溢出,比例 10 则导致缓存抖动:我们的节点上 c64 实测 6,569 tok/s/GPU)。
AI model disclosure
  • Claude Opus 5.5 (claude-opus-5-5), running in Claude Code at Kevin Mi's request: wrote the recipe, master-config entry, shared-cache rule, changelog entry and this description, and ran the local matrix, spec-identity and test checks. No other models or delegated agents contributed.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Nov 5, 2026

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 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

kevin-mii and others added 2 commits November 5, 2026 04:51
Add kimik3.1-fp4-mi355x-sglang-agentic-dflash: Kimi-K3.1-Pro MXFP4 AgentX
on one 8x MI355X node with the SGLang day-0 image and the
RadixArk/Kimi-K3.1-Dflash2-Preview draft at 5 draft tokens with block
verification, so the srt driver simulates the committed DFLASH golden
curve. TP8 monokernel at concurrency 1 and 4; TP8/DCP8 with the HiCache
host tier at 8-48. Serve Kimi-K3.1-Pro from the shared HF cache on
mi355x-amds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cquil11

cquil11 commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

Closing in favour of #4808, which already carries the Kimi K3.1 MI355X SGLang sweep. These configs are being moved into that PR.

@cquil11 cquil11 closed this Nov 5, 2026
cquil11 added a commit that referenced this pull request Nov 5, 2026
Take Kevin Mi's Kimi-K3.1-Pro MI355X SGLang DFLASH recipe and points:
TP8 monokernel at c1 and c4, and TP8/DCP8 with the HiCache host tier
at c8, c16, c32 and c48. Points above c48 are dropped because the node's
GTT limit makes their host pools overflow.

K3.1 is not staged in the shared HF cache on mi355x-amds, so the model
keeps loading from the node-local cache, without HF_HUB_OFFLINE.

Co-authored-by: Kevin Mi <mikevin920@yahoo.com>
cquil11 added a commit that referenced this pull request Nov 5, 2026
* feat(kimik3.1): add Kimi K3.1 Pro SGLang AgentX on MI355X

TP8 on the decode monokernel at c1 and c4 without KV offload, and TP8 DCP8
with HiCache from c4 to c60, both with the RadixArk DFLASH draft, following
the SGLang cookbook's MI355X AgentX recipes.

* chore(kimik3.1): link the MI355X SGLang changelog entry to its PR

* feat(kimik3.1): adopt the MI355X SGLang recipe from #4823

Take Kevin Mi's Kimi-K3.1-Pro MI355X SGLang DFLASH recipe and points:
TP8 monokernel at c1 and c4, and TP8/DCP8 with the HiCache host tier
at c8, c16, c32 and c48. Points above c48 are dropped because the node's
GTT limit makes their host pools overflow.

K3.1 is not staged in the shared HF cache on mi355x-amds, so the model
keeps loading from the node-local cache, without HF_HUB_OFFLINE.

Co-authored-by: Kevin Mi <mikevin920@yahoo.com>

---------

Co-authored-by: Kevin Mi <mikevin920@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants