diff --git a/README.md b/README.md index 24caad8..0bdfa6d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # sskj — 多平台大模型推理性能基准测试项目 +**更新(2026-08-19 13:58:50 CST)**:用户同步 GitHub fork 后,将 Kimi-K3 SM120 SGLang 的 7 个提交无冲突重放到最新 `main` `593b1a9`,`range-diff` 逐提交确认补丁等价;最终 Draft HEAD `b95b534` 已推送至 `ACEEE-1222/sglang:hzy/kimi-k3-sm120-flashinfer-mxfp4`。在 601 统一验证镜像中重跑最终 HEAD 的语法与定向回归,结果为 `10 passed, 3 deselected`;代表性四机性能数据保留,不重复消耗 GPU。 + **更新(2026-08-19 13:07:48 CST)**:完成 Kimi-K3 SM120 SGLang Draft PR 的最终代表点验收。基于 SGLang `300c87a` 与 FlashInfer #4460 `b525c51`,在 601-604 四节点 TP32×EP4 上完成 16K→1、C=8、Chunk=8K 的 Marlin/FlashInfer 各 3 次 A/B;240/240 请求成功。FlashInfer 的 Input TPS 中位数提升 10.96%,TTFT P50/P95 分别下降 9.91%/9.92%。公开 PR Checklist 已全部勾选,轻量汇总和原始证据索引已归档。 **更新(2026-08-19 10:45:18 CST)**:新增 Kimi-K3 SM120 SGLang Draft PR 的单点代表性验收入口。使用精确 SGLang `300c87a`、FlashInfer #4460 实现 `b525c51` 和统一镜像,在 601-604 四节点 TP32×EP4 上仅复测 16K→1、C=8、Chunk=8K 的 Marlin/FlashInfer A/B,各 3 次重复;完整命令、镜像身份、原始日志和汇总统一落入单个 Run 目录。 diff --git a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/COMPLETION_AUDIT.md b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/COMPLETION_AUDIT.md index 6779044..468f795 100644 --- a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/COMPLETION_AUDIT.md +++ b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/COMPLETION_AUDIT.md @@ -11,20 +11,21 @@ | 区分官方 0.6.17 与实际能力 | 已证明 | 605 profile 设置 `FLASHINFER_DISABLE_VERSION_CHECK=1` 并启动前执行两个补丁;报告未再声称 0.6.17 原版直接支持完整组合 | | 逐文件比较 605 补丁、FlashInfer #4460、SGLang 上游 | 已证明 | `UPSTREAM_DUPLICATION_AUDIT.md` 的“上游已有/605 已有/我们新增/明确排除”四部分;605 补丁目标已从原文件重新核验 | | 不提交重复 FlashInfer kernel | 已满足 | FlashInfer 历史实现与测试仅作为本地研究记录;SGLang Draft 不含 FlashInfer C++、依赖 pin 或 private capability marker | -| SGLang 仅保留真实增量 | 已满足 | SGLang base `63d783bbe095` 到 head `300c87a431ac` 仅修改 5 个文件;补丁位于 `patches/sglang-kimi-k3-sm120-flashinfer-mxfp4-draft.patch` | -| 可应用 patch 与 Draft HEAD 一致 | 已证明 | 在全新 detached base `63d783bbe095` 应用仓库 patch 并 `git add -A` 后,暂存树与 `300c87a431ac` 的 diff 为空 | +| SGLang 仅保留真实增量 | 已满足 | SGLang base `593b1a9b8aee` 到 head `b95b5341ab95` 仅修改 5 个文件;补丁位于 `patches/sglang-kimi-k3-sm120-flashinfer-mxfp4-draft.patch` | +| 可应用 patch 与 Draft HEAD 一致 | 已证明 | 在全新 detached base `593b1a9b8aee` 应用仓库 patch 并 `git add -A` 后,暂存树与 `b95b5341ab95` 的 diff 为空 | | Kimi gate/up 权重和 scale 布局 | 已证明 | 注册测试覆盖连续 `[gate; up]` 到 CUTLASS `[up; gate]`,并保留 GPT-OSS pair-interleaved 分支 | | SiTU 4.0/25.0 参数透传 | 已证明 | #4460 ABI 的 SM120 GPU correctness 测试覆盖独立 `situ_beta` 与 `situ_linear_beta` | | 非连续 hidden states | 已证明 | GPU correctness 测试输入为非连续 view,runner 在 MXFP8 quantize 边界 materialize contiguous tensor | | attn_residual SM120 guard | 已证明 | 注册架构测试覆盖 SM100/103/110 为 true、SM120/SM90 为 false | | autotune 稳定性边界 | 已证明且不纳入 PR | 605 的 skip workaround 未进入 Draft;正式 24 点候选矩阵未复现 autotune 崩溃,因此没有用历史 workaround 扩大 PR | | 最终定向 correctness | 已通过 | RTX 6000D GPU6、#4460 snapshot:`8 passed, 17 warnings in 559.87s`;wheel SHA256 `deafdac2dc44b331441daba64e5b5dd28f591fe44f087af0aac3521c6ddbfa1f` | -| 最终兼容回归 | 已通过 | Draft HEAD `300c87a`:`8 passed, 5 deselected, 17 warnings in 22.23s` | +| fork 同步与补丁等价性 | 已通过 | 旧 base/head `63d783b..300c87a` 重放到 `593b1a9..b95b534`,7/7 commits 在 `git range-diff` 中均为 `=` | +| 最终兼容回归 | 已通过 | Draft HEAD `b95b534`:compileall 通过,`10 passed, 3 deselected, 17 warnings in 33.30s` | | 格式和 CI 注册 | 已通过 | 五个变更文件完整 pre-commit 全部通过;两个测试文件注册到 CUDA CI `base-b/1-gpu-small` | | 保留 EP4 服务级结果 | 已证明 | 601 原始目录有 24 个正式 JSONL 点;每组 3 repeats、每点 40/40 成功;错误扫描为空;未重跑 EP32 | | 当前 Draft 代表点 A/B | 已通过 | Run `kimi3-sm120-pr-representative-20260819-115530`;Marlin/FlashInfer 各 3 次,240/240 请求成功;FlashInfer Input TPS +10.96%,TTFT P50/P95 -9.91%/-9.92% | | 公开 PR 标题、正文、依赖和已知限制 | Draft 正文已完成 | `SGLANG_DRAFT_PR.md` 遵循官方模板,Checklist 全部勾选;标题为 `[Feature] Support Kimi-K3 FlashInfer MXFP4 MoE on SM120`;Speed Tests 只报告一个目标硬件代表点,不作普遍加速声明 | -| GitHub fork 交付 | 已完成 | `ACEEE-1222/sglang:hzy/kimi-k3-sm120-flashinfer-mxfp4`,Draft HEAD `300c87a` | +| GitHub fork 交付 | 已完成 | `ACEEE-1222/sglang:hzy/kimi-k3-sm120-flashinfer-mxfp4`,Draft HEAD `b95b534`,远端 ref 已复核 | | 内部仓库独立分支 | 本地和 601 已完成,远端待推送 | 601 分支 `hzy/feature-kimi-k3-sm120-flashinfer-mxfp4` 已到审计提交;`git.meta-stone.net` 尚未为本机或 601 key 授权,HTTPS 也无 Token | ## 原始证据位置 diff --git a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md index de8ea70..5c24d53 100644 --- a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md +++ b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/README.md @@ -7,21 +7,24 @@ > Kimi-K3 SGLang 接入、精确 MXFP8×MXFP4+SiTU 测试和 6000D 实测证据。 > 权威边界见 [`UPSTREAM_DUPLICATION_AUDIT.md`](UPSTREAM_DUPLICATION_AUDIT.md)。 -当前 SGLang Draft HEAD 为 `300c87a431ac`,已推送到 +当前 SGLang Draft 基于 `main` `593b1a9b8a`,HEAD 为 `b95b5341ab95`,已推送到 `ACEEE-1222/sglang:hzy/kimi-k3-sm120-flashinfer-mxfp4`。公开 PR 正文见 [`SGLANG_DRAFT_PR.md`](SGLANG_DRAFT_PR.md),可审查补丁见 [`patches/sglang-kimi-k3-sm120-flashinfer-mxfp4-draft.patch`](patches/sglang-kimi-k3-sm120-flashinfer-mxfp4-draft.patch)。 -五个变更文件已通过完整 pre-commit;最终非 JIT 回归为 -`8 passed, 5 deselected, 17 warnings in 22.23s`。 +五个变更文件已通过完整 pre-commit;同步 fork 后,7 个提交的 +`range-diff` 全部为补丁等价,最终非 JIT 回归为 +`10 passed, 3 deselected, 17 warnings in 33.30s`。 逐项验收和唯一剩余交付项见 [`COMPLETION_AUDIT.md`](COMPLETION_AUDIT.md)。 -最终 PR 代表点已经在与 Draft HEAD 对齐的统一镜像中完成:四节点 +最终 PR 代表点已经在同步前的等价 patch `300c87a` 统一镜像中完成:四节点 TP32/EP4、16K→1、C=8、Chunk=8K,Marlin 与 FlashInfer 各三次重复, 240/240 请求成功。FlashInfer 相对 Marlin 的 Input TPS 中位数为 `+10.96%`,TTFT P50/P95 为 `-9.91%/-9.92%`。轻量结果见 `results/pr_representative_16k_c8_chunk8k_summary.json` 和 `results/pr_representative_16k_c8_chunk8k_results.csv`。 +同步后的 `b95b534` 与该 7 提交系列逐提交等价,因此保留原始性能证据, +不把容器中的旧 commit object 错写成最终 HEAD,也不重复运行四机实验。 ## 目标 diff --git a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/SGLANG_DRAFT_PR.md b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/SGLANG_DRAFT_PR.md index 0524cd5..ba82be4 100644 --- a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/SGLANG_DRAFT_PR.md +++ b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/SGLANG_DRAFT_PR.md @@ -64,8 +64,9 @@ MXFP4 weights, SiTU `(4.0, 25.0)`, Kimi gate/up layout, and non-contiguous input. It compares the SGLang adapter output directly with the public FlashInfer CUTLASS API. -After the final compatibility and CI-registration changes, the non-JIT subset -was rerun from the final commit: +After syncing the fork and rebasing the seven-patch series onto SGLang main +`593b1a9b8aeedb908ee21870c02a0fd1a3dc30a5`, the non-JIT subset was rerun +from the final Draft head `b95b5341ab9555ba5ea53f5828f6de203d749cce`: ```bash pytest -q -s \ @@ -75,7 +76,7 @@ pytest -q -s \ ``` ```text -8 passed, 5 deselected, 17 warnings in 22.23s +10 passed, 3 deselected, 17 warnings in 33.30s ``` ## Speed Tests and Profiling @@ -91,11 +92,19 @@ Model: Kimi-K3 Parallelism: TP32 / EP4 / DP1 Workload: ISL=16384, OSL=1, concurrency=8, 40 requests Chunked Prefill: 8192 tokens -SGLang: 300c87a431ac40d3e7817246376b7fe20932db09 +SGLang patch series used for the run: 300c87a431ac40d3e7817246376b7fe20932db09 +Final rebased Draft head: b95b5341ab9555ba5ea53f5828f6de203d749cce +Final SGLang main base: 593b1a9b8aeedb908ee21870c02a0fd1a3dc30a5 FlashInfer: PR #4460 implementation b525c513fef7c1d162efd3ce8636fcc8760de66a Repeats: 3 per backend ``` +The service benchmark was collected before the fork sync. `git range-diff` +reports all seven commits as patch-equivalent after the rebase, and the +directed tests above were rerun from the final Draft head. The performance +result is therefore retained without claiming that the benchmark container +contained the new commit object. + | Backend | Median Input TPS | Median TTFT P50 | Median TTFT P95 | |---|---:|---:|---:| | Marlin | 2930.03 | 43.587 s | 46.287 s | diff --git a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/UPSTREAM_DUPLICATION_AUDIT.md b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/UPSTREAM_DUPLICATION_AUDIT.md index 6a85796..7b7f3f1 100644 --- a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/UPSTREAM_DUPLICATION_AUDIT.md +++ b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/UPSTREAM_DUPLICATION_AUDIT.md @@ -103,11 +103,15 @@ activation_situ_linear_beta = 25.0 SGLang Draft 的完整可审查 diff: ```text -base: 63d783bbe0955237ec41f9ddabf7235ddf04673c -head: 300c87a431ac40d3e7817246376b7fe20932db09 +base: 593b1a9b8aeedb908ee21870c02a0fd1a3dc30a5 +head: b95b5341ab9555ba5ea53f5828f6de203d749cce patch: patches/sglang-kimi-k3-sm120-flashinfer-mxfp4-draft.patch ``` +该 7 提交系列由旧范围 `63d783b..300c87a` 重放到用户新同步的 main; +`git range-diff` 逐项均为 `=`。在新 base 的独立 worktree 应用上述 patch、 +暂存全部文件后,与 `b95b534` 比较的 diff 为空。 + GitHub 交付分支: ```text @@ -154,16 +158,16 @@ GPU: NVIDIA RTX 6000D, SM120 最终审查发现普通 SwiGLU 路径也曾无条件访问 `ActivationType.Situ`,可能误伤 旧 FlashInfer。提交 `775aa076` 改为动态加入 SiTU enum,并新增旧版兼容回归。 -最终提交 `300c87a` 为两个测试文件增加正式 CUDA CI 注册,并通过完整 -pre-commit。最终 HEAD 的能力探测、旧版兼容和架构 gate 为 -`8 passed, 5 deselected, 17 warnings in 22.23s`;GPU kernel 路径继续由前述 -8/8 测试覆盖。 +同步前提交 `300c87a` 为两个测试文件增加正式 CUDA CI 注册,并通过完整 +pre-commit。同步后的最终 HEAD `b95b534` 在 601 通过 compileall;能力探测、 +旧版兼容和架构 gate 为 `10 passed, 3 deselected, 17 warnings in 33.30s`; +GPU kernel 路径继续由前述 8/8 测试覆盖。 完整 pre-commit 命令覆盖全部五个变更文件;isort、ruff、black、codespell、 registered-tests 检查及其他 hook 全部通过。下载 GitHub hook 时只对该命令使用 HTTPS-to-SSH URL rewrite,没有修改全局 Git 配置。 -最终代表点使用当前 Draft HEAD 和 #4460 implementation commit 的统一组合, +最终代表点使用同步前等价 patch `300c87a` 和 #4460 implementation commit 的统一组合, 六轮 240/240 请求成功。FlashInfer 在所有 32 rank 完成 autotune,因此 605 的 skip-autotune workaround 仍不属于 SGLang PR 增量。该固定点的 FlashInfer Input TPS 为 Marlin 的 `+10.96%`,TTFT P50/P95 为 `-9.91%/-9.92%`;这只作为 diff --git a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/decision_log.md b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/decision_log.md index 608deab..581ebca 100644 --- a/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/decision_log.md +++ b/experiments/pro6000/kimi3_pro6000_sglang_sm120_flashinfer_mxfp4/decision_log.md @@ -2,6 +2,18 @@ 本文件记录可恢复的关键决策、失败尝试和证据路径。成功结论见 `README.md`。 +## 2026-08-19 fork 同步与最终交付 + +- 用户重新同步 `ACEEE-1222/sglang:main` 后,最终 base 为 `593b1a9b8aee`。 +- 原 7 提交系列从 `63d783b..300c87a` 无冲突重放为 + `593b1a9..b95b534`;`git range-diff` 的 7 项全部为 `=`,没有语义改动。 +- 最终 HEAD 在 601 统一验证镜像中通过 compileall 和定向非 JIT 回归: + `10 passed, 3 deselected, 17 warnings in 33.30s`。 +- GitHub feature 分支通过精确 `force-with-lease` 从 `300c87a` 更新到 + `b95b534`,随后用 `ls-remote` 复核远端 ref。 +- 四机代表点不重跑。其容器记录的是同步前 `300c87a`,但对应 patch 与最终 + HEAD 逐提交等价;PR 正文同时列出实验 patch SHA 和最终 HEAD,不混淆对象。 + ## 2026-08-19 最终 PR 代表点 - 只补跑一个代表点,不重跑 EP32:TP32/EP4、16K→1、C=8、Chunk=8K,