From 743b7618d0f6878029c6abb550d878579e0dd38e Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Mon, 3 Aug 2026 11:27:57 -0500 Subject: [PATCH 01/10] perf(agentx): refresh B300 Kimi K3 DSpark --- perf-changelog.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 7a064f8090..4bdc05c19c 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5374,3 +5374,8 @@ - "Image: lmsysorg/sglang:v0.5.16-cu130" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2420 +- config-keys: + - kimik3-fp4-b300-vllm-agentic-dspark + description: + - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/0 From 1103b865c88d7c9ffd59cf3ce0892105d07c2928 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Mon, 3 Aug 2026 11:28:22 -0500 Subject: [PATCH 02/10] chore: link B300 DSpark refresh PR --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 4bdc05c19c..f875f837b7 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5378,4 +5378,4 @@ - kimik3-fp4-b300-vllm-agentic-dspark description: - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/0 + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 From 98b563c0fb33276566a6fd5a7bd7860e7971028c Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Mon, 10 Aug 2026 10:16:01 -0500 Subject: [PATCH 03/10] fix: test B300 with modern Kimi nightly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:使用新版 Kimi nightly 镜像测试 B300 --- configs/nvidia-master.yaml | 2 +- perf-changelog.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 393babf91b..0359ea8770 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -1521,7 +1521,7 @@ kimik3-fp4-b300-vllm-agentic-dspark: # its native window is 32k YaRN-stretched to 1M, and the same image/draft/config # reaches AL 4.18 on short-context work. These throughput numbers measure the # system at a prescribed acceptance, not the draft's fitness at 100k+ context. - image: vllm/vllm-openai:kimi-k3 + image: vllm/vllm-openai:nightly-b22afe45ac797ae58e67a7a3ad79ee5714024420@sha256:144356af876edbb3a4bfee23e1444b196cc3fdadd0a0c1a7f11f721756972a21 model: moonshotai/Kimi-K3 model-prefix: kimik3 runner: cluster:b300-nv diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 30cb75861a..bd45c8a378 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5715,4 +5715,5 @@ - kimik3-fp4-b300-vllm-agentic-dspark description: - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" + - "Use the pinned 2026-08-10 vLLM nightly with upstream Kimi K3 and DSpark support" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 \ No newline at end of file From dbf99d878b4eca8215d04c3a41754bdb21db71fe Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Mon, 10 Aug 2026 11:10:58 -0500 Subject: [PATCH 04/10] fix: terminate Kimi changelog entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:补齐 Kimi 基准测试变更日志条目的末尾换行。 --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index bd45c8a378..bfb1d86f7f 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5716,4 +5716,4 @@ description: - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" - "Use the pinned 2026-08-10 vLLM nightly with upstream Kimi K3 and DSpark support" - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 \ No newline at end of file + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 From c86cb7e4072235ec8cab6bf7e1ac0e415917b640 Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Mon, 10 Aug 2026 11:31:27 -0500 Subject: [PATCH 05/10] fix: cap Kimi resident concurrency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:将 Kimi GPU 常驻基准测试的并发上限设为 8,并保留 DRAM 卸载在并发 16 的容量测试点。 --- configs/nvidia-master.yaml | 18 ++++++++---------- perf-changelog.yaml | 1 + 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 0359ea8770..ae4a509bd1 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -1533,17 +1533,15 @@ kimik3-fp4-b300-vllm-agentic-dspark: agentic-coding: - dram-utilization: 0.63 search-space: - # Mirrors the non-MTP entry's KV arms so the spec-decoding delta is - # readable at equal concurrency, but stops at conc 16 rather than 24: the - # non-MTP bring-up sweep (run 30326393603) showed the GPU-resident arm - # already thrashing at conc >= 16 (prefix cache hit 2.7%, TTFT p50 86-191s) - # because GPU KV holds only ~3.1 max-length requests, so conc 24 costs a - # full job per arm to re-measure that regime. conc 16 still exercises the - # DRAM tier meaningfully (62% external prefix cache hit rate there). - # TP8-only for the same memory reason: a ~1.5 TB MXFP4 checkpoint does not - # fit below 8 GPUs. + # Keep equal resident/offload points through conc 8. The digest-pinned + # bring-up sweep (run 31404943911) confirmed that resident conc 16 + # remained in warmup after 1,770 seconds (96/177 requests), while conc 8 + # entered profiling. The offload conc 16 arm completed warmup in 804 + # seconds and exercised the external KV tier, so retain it as the + # capacity endpoint. + # TP8-only: a ~1.5 TB MXFP4 checkpoint does not fit below 8 GPUs. # TP8 GPU-resident - - { tp: 8, ep: 1, spec-decoding: mtp, kv-offloading: none, conc-list: [1, 2, 4, 8, 16] } + - { tp: 8, ep: 1, spec-decoding: mtp, kv-offloading: none, conc-list: [1, 2, 4, 8] } # TP8 SimpleCPUOffload (host DRAM) - { tp: 8, ep: 1, spec-decoding: mtp, kv-offloading: dram, kv-offload-backend: { name: vllm-simple }, conc-list: [1, 2, 4, 8, 16] } diff --git a/perf-changelog.yaml b/perf-changelog.yaml index bfb1d86f7f..157a47a4e2 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5716,4 +5716,5 @@ description: - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" - "Use the pinned 2026-08-10 vLLM nightly with upstream Kimi K3 and DSpark support" + - "Cap the GPU-resident search at concurrency 8 after concurrency 16 failed to complete deterministic warmup; retain concurrency 16 for the DRAM-offload capacity tier" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 From ddc85dcce1120e97010f91cd9a0a03fa7d4c423f Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Mon, 10 Aug 2026 19:04:45 -0500 Subject: [PATCH 06/10] fix: preserve changelog newline after merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:合并 main 后保留性能变更日志末尾换行 --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 863460dd78..ba48df5fb4 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5770,4 +5770,4 @@ - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" - "Use the pinned 2026-08-10 vLLM nightly with upstream Kimi K3 and DSpark support" - "Cap the GPU-resident search at concurrency 8 after concurrency 16 failed to complete deterministic warmup; retain concurrency 16 for the DRAM-offload capacity tier" - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 \ No newline at end of file + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 From 77021db16a41c645cd057969b840e936723bea46 Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Mon, 10 Aug 2026 19:32:09 -0500 Subject: [PATCH 07/10] ci: exclude failed B300 NVLink node MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:排除发生不可纠正 NVLink 错误的 B300 节点,避免基准测试继续调度到故障硬件。 --- .github/workflows/benchmark-tmpl.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmark-tmpl.yml b/.github/workflows/benchmark-tmpl.yml index 6c4fe50fe5..257adcb1d9 100644 --- a/.github/workflows/benchmark-tmpl.yml +++ b/.github/workflows/benchmark-tmpl.yml @@ -197,7 +197,7 @@ env: MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} # These b300 nodes are currently broken. - SALLOC_EXCLUDE: 'b300-005,b300-006' + SALLOC_EXCLUDE: 'b300-005,b300-006,b300-017' permissions: contents: read From f7609f22f45445ca425ca954f48b57bf554f9fba Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Mon, 10 Aug 2026 19:56:49 -0500 Subject: [PATCH 08/10] ci: honor B300 node exclusions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:让 B300 启动器把 SALLOC_EXCLUDE 传递给 Slurm,避免任务调度到已知故障节点。 --- runners/launch_b300-nv.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/runners/launch_b300-nv.sh b/runners/launch_b300-nv.sh index cad9ba30aa..29cb0b418a 100644 --- a/runners/launch_b300-nv.sh +++ b/runners/launch_b300-nv.sh @@ -482,7 +482,11 @@ else export GPU_COUNT="${GPU_COUNT:-${TP:?TP must be set}}" SALLOC_TIME_LIMIT="${SALLOC_TIME_LIMIT:-480}" - salloc --partition=$SLURM_PARTITION --account=$SLURM_ACCOUNT -N 1 --gres=gpu:$GPU_COUNT --exclusive --mem=0 --time="$SALLOC_TIME_LIMIT" --no-shell --job-name="$RUNNER_NAME" + SALLOC_EXCLUDE_ARGS=() + if [[ -n "${SALLOC_EXCLUDE:-}" ]]; then + SALLOC_EXCLUDE_ARGS+=(--exclude="$SALLOC_EXCLUDE") + fi + salloc --partition=$SLURM_PARTITION --account=$SLURM_ACCOUNT -N 1 --gres=gpu:$GPU_COUNT --exclusive --mem=0 --time="$SALLOC_TIME_LIMIT" "${SALLOC_EXCLUDE_ARGS[@]}" --no-shell --job-name="$RUNNER_NAME" JOB_ID=$(squeue --name="$RUNNER_NAME" -u "$USER" -h -o %A | head -n1) srun --jobid=$JOB_ID \ From 02ca07dd851dda2336ae391e4d45b2e5879396be Mon Sep 17 00:00:00 2001 From: adibarra <93070681+adibarra@users.noreply.github.com> Date: Tue, 11 Aug 2026 10:49:29 -0500 Subject: [PATCH 09/10] fix: align kimi k3 b300 prefill MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:将 Kimi K3 B300 的 MLA 预填充后端对齐到上游 FlashInfer 配置,并保留真实 block 验证的评估路径。 --- .../single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh | 13 +++++++------ perf-changelog.yaml | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh b/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh index faf2232726..080f63aea0 100755 --- a/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh +++ b/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh @@ -226,9 +226,10 @@ VLLM_CMD=( # --no-enable-flashinfer-autotune, VLLM_USE_V2_MODEL_RUNNER=1) killed the # engine core on every concurrency with an assertion in the FlashInfer MoE # runner's shared-experts output buffer - # (fused_moe/runner/shared_experts.py:165, all 8 TP ranks at once). Only - # mla_prefill_backend=TRTLLM_RAGGED is retained from that set; the rest stay - # on the values that ran 12/12 green in run 30326393603. + # (fused_moe/runner/shared_experts.py:165, all 8 TP ranks at once). Those + # unrelated values stay on the settings that ran 12/12 green in run + # 30326393603; the isolated MLA prefill choice below follows the current + # published Kimi-K3 FP8-KV profile. --gpu-memory-utilization 0.90 --max-num-seqs "$MAX_NUM_SEQS" --max-model-len 1048576 @@ -240,9 +241,9 @@ VLLM_CMD=( --reasoning-parser kimi_k3 --tool-call-parser kimi_k3 --enable-auto-tool-choice - # FP8 KV cache requires the prefill query quantization flag. MLA prefill - # runs on TRTLLM_RAGGED per the upstream Blackwell override. - --attention-config '{"mla_prefill_backend":"TRTLLM_RAGGED","use_prefill_query_quantization":true}' + # FP8 KV cache requires prefill query quantization. Use FlashInfer MLA + # prefill, matching the current published upstream Kimi-K3 recipe. + --attention-config '{"mla_prefill_backend":"flashinfer","use_prefill_query_quantization":true}' --speculative-config "$SPEC_CONFIG" --compilation-config "$COMPILATION_CONFIG" --disable-uvicorn-access-log diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 639055164d..6586aff121 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5777,5 +5777,7 @@ description: - "Refresh B300 Kimi K3 DSpark submission with corrected AgentX harness" - "Use the pinned 2026-08-10 vLLM nightly with upstream Kimi K3 and DSpark support" + - "Match the current published upstream Kimi K3 FP8-KV profile by using flashinfer MLA prefill with prefill query quantization" + - "Keep DSpark K=2 probabilistic throughput on synthetic golden AL 2.51 while the generated EVAL_ONLY row uses real block verification" - "Cap the GPU-resident search at concurrency 8 after concurrency 16 failed to complete deterministic warmup; retain concurrency 16 for the DRAM-offload capacity tier" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2476 From 5eaa7c6242334239f46f77f1294d94a7ac06338b Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Tue, 11 Aug 2026 16:07:20 -0500 Subject: [PATCH 10/10] chore: trim unrelated B300 changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the PR-specific Slurm exclusion changes and restore the unrelated benchmark comment so the PR stays focused on the Kimi K3 refresh.\n\n中文:移除本 PR 中与 Slurm 节点排除相关的改动,并恢复无关的基准测试注释,使 PR 仅聚焦于 Kimi K3 刷新。 --- .github/workflows/benchmark-tmpl.yml | 2 +- benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh | 7 +++---- runners/launch_b300-nv.sh | 6 +----- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.github/workflows/benchmark-tmpl.yml b/.github/workflows/benchmark-tmpl.yml index 257adcb1d9..6c4fe50fe5 100644 --- a/.github/workflows/benchmark-tmpl.yml +++ b/.github/workflows/benchmark-tmpl.yml @@ -197,7 +197,7 @@ env: MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} # These b300 nodes are currently broken. - SALLOC_EXCLUDE: 'b300-005,b300-006,b300-017' + SALLOC_EXCLUDE: 'b300-005,b300-006' permissions: contents: read diff --git a/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh b/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh index 080f63aea0..1d9bff1320 100755 --- a/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh +++ b/benchmarks/single_node/agentic/kimik3_fp4_b300_vllm_mtp.sh @@ -226,10 +226,9 @@ VLLM_CMD=( # --no-enable-flashinfer-autotune, VLLM_USE_V2_MODEL_RUNNER=1) killed the # engine core on every concurrency with an assertion in the FlashInfer MoE # runner's shared-experts output buffer - # (fused_moe/runner/shared_experts.py:165, all 8 TP ranks at once). Those - # unrelated values stay on the settings that ran 12/12 green in run - # 30326393603; the isolated MLA prefill choice below follows the current - # published Kimi-K3 FP8-KV profile. + # (fused_moe/runner/shared_experts.py:165, all 8 TP ranks at once). Only + # mla_prefill_backend=TRTLLM_RAGGED is retained from that set; the rest stay + # on the values that ran 12/12 green in run 30326393603. --gpu-memory-utilization 0.90 --max-num-seqs "$MAX_NUM_SEQS" --max-model-len 1048576 diff --git a/runners/launch_b300-nv.sh b/runners/launch_b300-nv.sh index 29cb0b418a..cad9ba30aa 100644 --- a/runners/launch_b300-nv.sh +++ b/runners/launch_b300-nv.sh @@ -482,11 +482,7 @@ else export GPU_COUNT="${GPU_COUNT:-${TP:?TP must be set}}" SALLOC_TIME_LIMIT="${SALLOC_TIME_LIMIT:-480}" - SALLOC_EXCLUDE_ARGS=() - if [[ -n "${SALLOC_EXCLUDE:-}" ]]; then - SALLOC_EXCLUDE_ARGS+=(--exclude="$SALLOC_EXCLUDE") - fi - salloc --partition=$SLURM_PARTITION --account=$SLURM_ACCOUNT -N 1 --gres=gpu:$GPU_COUNT --exclusive --mem=0 --time="$SALLOC_TIME_LIMIT" "${SALLOC_EXCLUDE_ARGS[@]}" --no-shell --job-name="$RUNNER_NAME" + salloc --partition=$SLURM_PARTITION --account=$SLURM_ACCOUNT -N 1 --gres=gpu:$GPU_COUNT --exclusive --mem=0 --time="$SALLOC_TIME_LIMIT" --no-shell --job-name="$RUNNER_NAME" JOB_ID=$(squeue --name="$RUNNER_NAME" -u "$USER" -h -o %A | head -n1) srun --jobid=$JOB_ID \