From 0684d269dfad8f6984f9adb9f18bc8edc98b0f3f Mon Sep 17 00:00:00 2001 From: Zhiyi Hong <2497491955@qq.com> Date: Fri, 14 Aug 2026 15:52:14 +0800 Subject: [PATCH] [Docs] Audit Kimi-K3 SM120 FlashInfer MXFP4 gap --- README.md | 2 + .../README.md | 98 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md diff --git a/README.md b/README.md index 540c5dc..e118a63 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # sskj — 多平台大模型推理性能基准测试项目 +**更新(2026-08-14 15:47:54 CST)**:建立 Kimi-K3 / RTX PRO 6000D / SGLang FlashInfer MXFP4 MoE 独立开发分支并完成 Phase 0 上游与真机审计;确认 SM120 基础 MXFP8×MXFP4 CUTLASS MoE 可运行,但 Kimi SiTU 激活尚未接入 SM120 CUTLASS runner,详见 `experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md`。 + > 历史更新见 `git log`。项目目的与工作流见下方。 > **项目目的**:当新显卡(GPU/NPU)到货时,用最短时间完成大模型在该平台上的推理性能评估与部署配置选型。 > 当前模型:DeepSeek-V4-Flash(FP8 / INT8);后续接入 GLM5.2,**完全复用**本项目的实验与报告流程。 diff --git a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md new file mode 100644 index 0000000..c7ce32c --- /dev/null +++ b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md @@ -0,0 +1,98 @@ +# Kimi-K3 SM120 FlashInfer MXFP4 MoE + +## 目标 + +为 Kimi-K3 在 NVIDIA SM120(RTX PRO 6000D)上的 SGLang 部署补齐 FlashInfer MXFP8 activation × MXFP4 weight fused MoE,并形成可回归、可性能比较、可提交上游的最小改动。 + +本目录不修改已有 Kimi-K3 基线实验。功能实现必须先通过算子正确性,再进入模型加载和性能测试。 + +## Phase 0 审计结论 + +状态:**完成**。 + +审计环境: + +| 对象 | 版本或提交 | +|---|---| +| GPU | NVIDIA RTX PRO 6000 Blackwell Server Edition,SM120 | +| SGLang | `827552bc1dda8507f2a1b11c7274340a83da49ce` | +| FlashInfer | `a9e03bf2f5fe`,Python package `0.6.18` | +| PyTorch / CUDA | PyTorch 2.11,CUDA 13 | +| 构建镜像 | `lmsysorg/sglang:kimi-k3-fiv617situ-warm` | +| Kimi-K3 | hidden 7168,expert hidden 3584,896 experts,top-k 16,SiTU `(alpha=4.0, beta=25.0)` | + +已确认: + +1. FlashInfer 当前 main 的 SM120 CUTLASS fused MoE 能完成基础 MXFP8×MXFP4 运算;官方最小测试通过。 +2. Kimi-K3 所需的 `ActivationType.Situ` 尚未接入该 SM120 CUTLASS C++ runner。 +3. Python `ActivationType.Situ` 的值为 10,而 CUTLASS C++ `ActivationType` 的值 10 当前是 `InvalidType`。SiTU 调用因此被当作非门控激活,FC1 门控维度判断错误。 +4. SGLang 当前 SM120 MXFP4 路径仍按 GPT-OSS 的 SwiGLU 权重布局和参数组织,未透传 Kimi SiTU 参数。 +5. 旧目录 `kimi3_pro6000_sglang_tp32ep32_deepep_flashinfer_mxfp4` 实际使用 `flashinfer_cutedsl`,并在模型加载前因量化配置识别失败;它不能作为 FlashInfer MXFP4 SM120 的成功或失败证据。 + +上游重叠审计: + +- SGLang PR #30272 只实现 DeepSeek-V4 的 SM120 FlashInfer MXFP4 路径。 +- FlashInfer issue #4223 跟踪 SM12x NVFP4 kernel,同一 issue 明确把 SiTU 标为当前目标模型“不需要”。 +- 截至本次审计,没有找到覆盖 Kimi-K3 + SM120 + SiTU + MXFP4 fused MoE 的已合并实现或开放 PR。 + +因此,本任务有明确的独立增量,不是重复实现。 + +## 真机证据 + +FlashInfer 源码与 wheel: + +```text +/data/hzy/src/flashinfer-kimi-sm120 +/data/hzy/artifacts/flashinfer-main-a9e03bf/flashinfer_python-0.6.18-py3-none-any.whl +/data/hzy/cache/flashinfer-sm120 +``` + +官方 SM120 MXFP8×MXFP4 基线: + +```bash +FLASHINFER_DISABLE_VERSION_CHECK=1 pytest -q \ + tests/moe/test_trtllm_cutlass_fused_moe.py::test_moe_mxfp8_mxfp4\[False-None-None-None-otype1-128-2-2-128-1\] -s +``` + +实际结果: + +```text +1 passed, 3 warnings in 540.58s +``` + +SiTU 最小负例沿用官方 `test_moe` 数据构造,只将激活改为 `ActivationType.Situ`: + +```python +test_moe(1, 128, 2, 2, 128, ActivationType.Situ) +``` + +实际首个错误: + +```text +fc1_expert_weights inter size must be equal to fc2_expert_weights inter size +(256 vs. 128) +``` + +对应源码事实: + +```text +flashinfer/tllm_enums.py: + Situ = 10 + InvalidType = 11 + +csrc/nv_internal/tensorrt_llm/kernels/cutlass_kernels/include/common.h: + Identity = 9 + InvalidType = 10 +``` + +## 后续硬门槛 + +Phase 1 必须先完成以下内容,才允许进入整模型实验: + +1. 为 SM120 CUTLASS runner 建立 SiTU 数学参考与 MXFP8×MXFP4 正确性测试。 +2. 明确 Kimi checkpoint 的 gate/up 排列以及 `(4.0, 25.0)` 参数语义。 +3. 补齐 C++ activation enum、gated 判断、激活实现及 Python/C++ 枚举一致性检查。 +4. 在 SGLang 中只对满足 Kimi SiTU 条件的模型选择新路径;不影响 GPT-OSS、DeepSeek 和现有 fallback。 +5. 覆盖 token 数 1/2/8/32、不同 expert 命中、TP/EP 权重切分以及 CUDA Graph capture/replay。 + +正确性未通过前,不做吞吐结论,不修改 checkpoint,不使用运行时 monkeypatch。