[Docs] Rebase Kimi SM120 Draft onto synced main
This commit is contained in:
parent
a5248ed80e
commit
0fdcab9927
@ -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 目录。
|
||||
|
||||
@ -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 |
|
||||
|
||||
## 原始证据位置
|
||||
|
||||
@ -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,也不重复运行四机实验。
|
||||
|
||||
## 目标
|
||||
|
||||
|
||||
@ -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 |
|
||||
|
||||
@ -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%`;这只作为
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user