Skip to content

Add Kimi K2.6 NVFP4 B300 EAGLE3 AgentX benchmark / 新增 Kimi K2.6 NVFP4 B300 EAGLE3 AgentX 基准测试#2158

Merged
cquil11 merged 5 commits into
mainfrom
kimik2.6-fp4-b300-mtp
Jul 15, 2026
Merged

Add Kimi K2.6 NVFP4 B300 EAGLE3 AgentX benchmark / 新增 Kimi K2.6 NVFP4 B300 EAGLE3 AgentX 基准测试#2158
cquil11 merged 5 commits into
mainfrom
kimik2.6-fp4-b300-mtp

Conversation

@xinli-sw

@xinli-sw xinli-sw commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Adds an EAGLE3 speculative-decoding AgentX (agentic-coding) benchmark for Kimi K2.6 NVFP4 on B300, served with upstream vLLM (vllm/vllm-openai:nightly-94c0ef30…).

Changes

  • New config kimik2.5-fp4-b300-vllm-agentic-mtp (configs/nvidia-master.yaml), runner cluster:b300-nv. Search space: TP8, TP4, TP4 + native CPU KV offload (SimpleCPUOffloadConnector, dram-utilization: 0.80), and TP4/DCP4 with and without offload at high concurrency.
  • New script benchmarks/single_node/agentic/kimik2.5_fp4_b300_mtp.sh: EAGLE3 draft lightseekorg/kimi-k2.6-eagle3-mla with simulated synthetic acceptance — non-DCP arms use num_speculative_tokens=4 / AL 3.24; DCP4 arms use num_speculative_tokens=3 / AL 2.88. TOKENSPEED_MLA attention backend, TRTLLM_RAGGED MLA prefill (non-DCP), fp8 KV cache.
  • Launcher: add Kimi-K2.6-NVFP4 to the b300-nv model allowlist.
  • Changelog tooling: process_changelog.py now emits JSON with exclude_none=True; perf-changelog entry added.

Validation


为 B300 上的 Kimi K2.6 NVFP4 新增 EAGLE3 投机解码 AgentX(agentic-coding)基准测试,使用上游 vLLM 镜像。新增 kimik2.5-fp4-b300-vllm-agentic-mtp 配置(TP8 / TP4 / TP4+CPU KV offload / TP4+DCP4 组合)、基准脚本(EAGLE3 草稿模型 lightseekorg/kimi-k2.6-eagle3-mla,非 DCP 使用 spec4/AL 3.24,DCP4 使用 spec3/AL 2.88)、b300-nv 模型白名单及 perf-changelog 条目。

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

@xinli-sw xinli-sw added full-sweep-fail-fast agentx AgentX benchmarks, recipes, and infrastructure NVIDIA full-sweep-enabled and removed full-sweep-fail-fast labels Jul 10, 2026
Comment thread configs/nvidia-master.yaml Outdated
image: vllm/vllm-openai:nightly-09663abde0f50944a8d5ea30120666024b503faa
model: Kimi-K2.6-NVFP4
model-prefix: kimik2.5
runner: cluster:b300

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.

🔴 The new kimik2.5-fp4-b300-vllm-agentic-mtp config sets runner: cluster:b300 at configs/nvidia-master.yaml:2985, but that label doesn't exist in configs/runners.yaml — only cluster:b300-nv and cluster:b300-cw are defined. Because one search-space entry uses kv-offloading: dram, matrix generation calls agentic_dram_offload_gbrunner_available_cpu_dram_mib('cluster:b300', ...) which raises ValueError (no hardware entry), aborting sweep-config generation before any benchmark runs. Change to cluster:b300-nv to match the sibling non-mtp config at line 2970.

Extended reasoning...

What the bug is

The new kimik2.5-fp4-b300-vllm-agentic-mtp recipe added in this PR (configs/nvidia-master.yaml:2981-2996) declares runner: cluster:b300 at line 2985. This label does not exist anywhere in configs/runners.yaml. Grepping the runners file shows only two B300 cluster labels are defined: cluster:b300-cw (line 216) and cluster:b300-nv (line 222), and only cluster:b300-nv has a hardware: entry (line 306). The sibling non-mtp recipe kimik2.5-fp4-b300-vllm-agentic at line 2970 correctly uses cluster:b300-nv on what is clearly the same physical fleet.

How it manifests

The recipe contains a search-space entry with kv-offloading: dram, kv-offload-backend: native (line 2995). In utils/matrix_logic/generate_sweep_configs.py, generate_full_sweep calls agentic_dram_offload_gb(agentic_config, bmk, runner, runner_data) for that entry. That function calls runner_available_cpu_dram_mib('cluster:b300', runner_data)runner_hardware_int(...) which looks up hardware['cluster:b300']. Since there is no such key (only cluster:b300-nv is registered under hardware:), runner_hardware_int raises:

ValueError: Runner 'cluster:b300' requires 'available-cpu-dram-mib' in runner hardware metadata.
Available hardware keys: cluster:b300-nv, ...

That exception propagates out of generate_full_sweep, so the entire sweep-config generation step (the get-jobs/setup job in the workflow) fails with a non-zero exit code. No benchmark job in the matrix ever dispatches — not even the non-dram entries at lines 2993/2994/2996.

Why existing code doesn't catch it

AgenticCodingConfig.validate_dram_offload_capacity in validation.py only checks that dram-utilization is set when kv-offloading == 'dram'; it does not cross-check that the recipe's runner: label actually appears in runners.yaml. Master-config validation is purely structural, so an arbitrary string is accepted for runner. The mistake only surfaces at matrix-generation time.

Impact

This is the whole point of the PR: the sweep for the new MTP recipe cannot generate configs, so no runs will occur. Even for the non-dram entries where the missing-hardware code path is not exercised, GitHub Actions would try to schedule jobs with runs-on: cluster:b300, which no self-hosted runner group carries — so they would sit in "waiting for a runner" forever and eventually time out.

Fix

One-character change: replace runner: cluster:b300 with runner: cluster:b300-nv at configs/nvidia-master.yaml:2985, matching the sibling recipe at line 2970. If the CW fleet was intended instead, use cluster:b300-cw — but note that cluster:b300-cw has no hardware: entry either, so the dram search-space entry would still fail; only cluster:b300-nv currently supports DRAM offload matrix generation.

Step-by-step proof

  1. configs/runners.yaml line 306: hardware: only contains cluster:b300-nv (no cluster:b300).
  2. run-sweep.yml / e2e-tests.yml 'setup' job runs python3 utils/matrix_logic/generate_sweep_configs.py ....
  3. generate_full_sweep iterates configs; reaches kimik2.5-fp4-b300-vllm-agentic-mtp, is_multinode = False, runner = "cluster:b300".
  4. Enters the agentic loop; for the dram entry {tp: 4, ep: 1, spec-decoding: mtp, kv-offloading: dram, kv-offload-backend: native, conc-list: [2, 4, 16]}.
  5. total_cpu_dram_gb = agentic_dram_offload_gb(agentic_config, bmk, "cluster:b300", runner_data).
  6. agentic_dram_offload_gbrunner_available_cpu_dram_mib("cluster:b300", runner_data)runner_hardware_int("cluster:b300", runner_data, "available-cpu-dram-mib").
  7. runner_hardware(runner_data).get("cluster:b300", {}) returns {}; value = None → raises ValueError.
  8. Python exits non-zero; CONFIG_JSON=$(python3 ...) fails; the get-jobs/setup step fails; no downstream benchmark job dispatches.

Comment on lines +61 to +77
"{\"kv_connector\":\"SimpleCPUOffloadConnector\",\"kv_role\":\"kv_both\",\"kv_connector_extra_config\":{\"cpu_bytes_to_use\":$CPU_OFFLOAD_BYTES,\"lazy_offload\":false}}"
)
;;
*) echo "Error: unsupported KV_OFFLOAD_BACKEND value '$KV_OFFLOAD_BACKEND' with EAGLE3 (expected: native)" >&2; exit 1 ;;
esac
fi

DCP_SIZE="${DCP_SIZE:-1}"
DCP_ARGS=()
if [[ "$DCP_SIZE" -gt 1 ]]; then
DCP_ARGS+=(--decode-context-parallel-size "$DCP_SIZE")
NUM_SPEC_TOKENS=3
SYNTHETIC_ACCEPT_LEN=2.88
else
NUM_SPEC_TOKENS=4
SYNTHETIC_ACCEPT_LEN=3.24
fi

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the contribution @xinli-sw

can u please update recipes.vllm.ai with ur new configs?

vllm recipes doesn't currently support offloading tho the inferact guys said they are open to contributions to support mooncake store, lmcache, vllm native offloading support in vllm recipes

as in sglang cookbook recipes , they also have support for cpu offloading recipes

similar applies to DCP, doubt the inferact folks won't mind contributions to add DCP support too

Image

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@xinli-sw xinli-sw force-pushed the kimik2.6-fp4-b300-mtp branch from 3b42122 to e5923ca Compare July 11, 2026 04:04
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@Ankur-singh

Copy link
Copy Markdown
Collaborator

Opened this PR for the recipe. Will work with the vLLM team to get it in. Feel free to comment and review the PR, and help me get the right recipe in.

vllm-project/recipes#626

@xinli-sw xinli-sw force-pushed the kimik2.6-fp4-b300-mtp branch from 41f7b72 to 979b077 Compare July 14, 2026 13:58
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@xinli-sw xinli-sw force-pushed the kimik2.6-fp4-b300-mtp branch from e5846cd to 79012e8 Compare July 14, 2026 17:02
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@xinli-sw

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run

@xinli-sw

Copy link
Copy Markdown
Collaborator Author

@xinli-sw

Copy link
Copy Markdown
Collaborator Author

@cquil11 @functionstackx this PR is good to ship

@cquil11

cquil11 commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

/stage-results 29359203708

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@cquil11 staged run 29359203708: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-07-14~r29359203708

This shared staging slot remains available until the next /stage-results request. Staging workflow

@cquil11

cquil11 commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

@claude Add simple, succinct, no fluff PR description for posterity.

@cquil11 cquil11 merged commit ececf32 into main Jul 15, 2026
47 checks passed
@cquil11 cquil11 deleted the kimik2.6-fp4-b300-mtp branch July 15, 2026 14:47
@Klaud-Cold

Klaud-Cold commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Claude finished @cquil11's task in 1m 47s —— View job


PR description added ✅

  • Review PR changes (merge commit ececf32b)
  • Write and set PR description

Added a succinct description to the PR body covering: the new kimik2.5-fp4-b300-vllm-agentic-mtp config and its search space (TP8 / TP4 / TP4+CPU-offload / TP4+DCP4±offload), the EAGLE3 setup (draft lightseekorg/kimi-k2.6-eagle3-mla, spec4/AL 3.24 non-DCP, spec3/AL 2.88 DCP4), backends (TOKENSPEED_MLA, TRTLLM_RAGGED, fp8 KV), the b300-nv launcher allowlist addition, the process_changelog.py exclude_none fix, plus validation-run and upstream-recipe links — with a brief Chinese summary per repo convention.

cquil11 added a commit that referenced this pull request Jul 15, 2026
中文:通过复用扫描产物恢复 PR #2158 的数据库摄取。
cquil11 added a commit that referenced this pull request Jul 15, 2026
…数据库摄取 (#2222)

* feat(kimik2.6-b300-mtp): add Kimi-K2.6 NVFP4 B300 EAGLE3 AgentX benchmark

- Add kimik2.5-fp4-b300-vllm-agentic-mtp config (runner: cluster:b300-nv)
- Add benchmark script with EAGLE3 speculative decoding (draft: lightseekorg/kimi-k2.6-eagle3-mla, num_speculative_tokens=4, synthetic_acceptance_length=3.24)
- TOKENSPEED_MLA attention backend + TRTLLM_RAGGED prefill backend
- Search space: TP8 no-offload, TP4 no-offload, TP4 native CPU-offload, TP4 DCP4 no-offload, TP4 DCP4 native CPU-offload
- Add cluster:b300-nv runner label and hardware entry
- Add spec-decoding field propagation for single-node agentic matrix
- Add perf changelog entry for PR 2158

* fix(kimik2.6-b300-mtp): use spec3/AL2.88 for DCP configs

* fix(kimik2.6-b300-mtp): align DCP vllm args with working command

* fix(changelog): omit null optional metadata

* chore: prepare PR 2158 ingest recovery

中文:准备恢复 PR #2158 的数据库摄取。

* fix: recover PR 2158 ingest

中文:通过复用扫描产物恢复 PR #2158 的数据库摄取。

---------

Co-authored-by: Xin Li <xinli@nvidia.com>
functionstackx added a commit that referenced this pull request Jul 15, 2026
….6 NVFP4 B300 EAGLE3 AgentX 基准测试 (#2158)" (#2227)

This reverts commit ececf32.
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.

6 participants