[unified-memory] Let Kimi-Linear use the paged MLA attention backends - #32972
Merged
Merged
Conversation
ch-wan
requested review from
BBuf,
DarkSharpness,
Fridge003,
HaiShaw,
HydraQYH,
Qiaolin-Yu,
Ying1123,
alphabetc1,
celve,
hanming-lu,
hebiao064,
hnyls2002,
hzh0425,
ispobock,
merrymercy,
xiezhq-hermann,
yizhang2077 and
yuan-luo
as code owners
July 30, 2026 22:43
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf06c6f7e4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Collaborator
Author
|
/tag-and-rerun-ci |
ch-wan
force-pushed
the
feature/unified-memory-kimi-linear-triton
branch
from
July 30, 2026 23:29
0cd5c8c to
a4c7c69
Compare
ch-wan
force-pushed
the
feature/unified-memory-kimi-linear-mla-backends
branch
from
July 30, 2026 23:29
cf06c6f to
9b158ab
Compare
Base automatically changed from
feature/unified-memory-kimi-linear-triton
to
main
July 31, 2026 05:10
Collaborator
Author
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 12, 2026
GPU-CI cells covering every arm the backend allow-list can take. All are label-gated or nightly, so there is no per-commit cost. - gpt-oss (uniform-row hybrid SWA): unified cells for triton and fa3, plus a pin-free resolved-default boot, the pattern that caught both review defects in sgl-project#32972. No flashinfer cell, as gpt-oss uses attention sinks. - Qwen3.5 GDN hybrid: unified cells for triton, fa3, flashinfer and the resolved default. The conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - Kimi-Linear: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad, end to end. - New MiMo V2.5 cell (nightly-8-gpu-h200): the STRIDED fallback arm, where asymmetric K/V (192/128) keeps dense views off and the allow-list narrows to Triton. It is the one arm no dense cell can reach. est_time registrations are bumped for the added boots. The four files collect 14 cells in total; execution is GPU CI. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint, which no registered tiny model provides today. Its verify-shape contracts are unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 12, 2026
GPU-CI cells covering every arm the backend allow-list can take. All are label-gated or nightly, so there is no per-commit cost. - gpt-oss (uniform-row hybrid SWA): unified cells for triton and fa3, plus a pin-free resolved-default boot, the pattern that caught both review defects in sgl-project#32972. No flashinfer cell, as gpt-oss uses attention sinks. - Qwen3.5 GDN hybrid: unified cells for triton, fa3, flashinfer and the resolved default. The conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - Kimi-Linear: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad, end to end. - New MiMo V2.5 cell (nightly-8-gpu-h200): the STRIDED fallback arm, where asymmetric K/V (192/128) keeps dense views off and the allow-list narrows to Triton. It is the one arm no dense cell can reach. est_time registrations are bumped for the added boots. The four files collect 14 cells in total; execution is GPU CI. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint, which no registered tiny model provides today. Its verify-shape contracts are unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
saturn-acc
pushed a commit
to saturn-acc/sglang
that referenced
this pull request
Aug 16, 2026
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 18, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 24, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 25, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 25, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 25, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 25, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 25, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 25, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 27, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 27, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ch-wan
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 28, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ch-wan
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 30, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ch-wan
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 30, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ch-wan
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 30, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_source.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
caihuali95
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 30, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the canonical block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_translator.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ch-wan
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 30, 2026
Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the read table block-table builder together with the 64-token sink floor and the dense tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_translator.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ch-wan
pushed a commit
to caihuali95/sglang
that referenced
this pull request
Aug 30, 2026
… gate Add GPU-CI cells covering every arm the backend allow-list can now take, so each pool shape is exercised by a real boot rather than only by unit pins. All cells are label-gated or nightly, so there is no per-commit cost. - test/registered/page_major/test_page_major_gpt_oss.py: unified cells for triton and fa3 on a uniform-row hybrid-SWA model, plus a pin-free resolved-default boot (the pattern that caught both review defects in sgl-project#32972). No flashinfer cell — gpt-oss uses attention sinks. - test/registered/page_major/test_page_major_qwen_hybrid.py: unified cells for triton, fa3, flashinfer and the resolved default on a GDN hybrid; the conv/SSM state stays envelope-strided in every cell, with linear and mamba pinned to triton as the gate enforces. - test/registered/models_e2e/test_kimi_linear_unified_memory.py: a flashmla cell at its page-size-64 snap, exercising the read table block-table builder together with the 64-token sink floor and the view tail pad end to end. `est_time` registrations are bumped for the added boots. DSPARK with --enable-unified-memory has no cell here: it needs a DSPARK-capable draft checkpoint that no registered tiny model provides today, so its verify-shape contracts stay unit-pinned in test_kv_index_translator.py and test_triton_unified_verify_sources.py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some refactor work is needed after Kimi K3 is merged to main.
What this does
With the dense per-layer MLA views from #32971 in place, the stock paged MLA kernels can read the unified pool directly — only their
kv_indices/ block tables need remapping to dense ids. No change to the physical layout, the allocator, or compaction.So this opens the page-major full-attention allowlist from
{triton}to the paged MLA backends when--enable-unified-memoryis set on an MLA model:trtllm_mlacreate_flashmla_kv_indices_triton, now fused withv2p_ptr+PAGE_MULTflashinferkv_indicesremapped to dense, written back in place (see below)cutedsl_mlaTRTLLMMLABackend, inherits the dense path with zero extra codetokenspeed_mlaflashmla/cutlass_mlashare thecreate_flashmlablock-table path and can be added the same way once exercised.Cuda-graph safety
trtllm_mladecode gets a capture-stable dense write-loc buffer (cuda_graph_out_cache_loc_dense) filled out of graph, so the in-graphset_mla_kv_buffercaptures no translate. The replay prep zeroes the buffer's tail beyond the raw batch size — without that, pad rows retain stale dense locs from earlier larger replays and scatter garbage KV into live pages (a bug that only appears once a server has load history, and which bf16 can mask through batch saturation).Validation
Kimi-Linear-48B-A3B-Instruct (27 layers = 20 KDA + 7 MLA,
kv_lora_rank512 +qk_rope_head_dim64), single node 8×B300 SXM6, TP1 per cell, GSM8K 200q. Every cell has a same-commit, same-GPU static-pool twin, so the unified column is a delta and not an absolute:The 0.895–0.925 band is noise: the static arms span the same 0.905–0.915, and each unified arm matches its own twin inside it.
Unit tests:
test_unified_mla_dense_block_table.py(new) plus the #32971 suite and the allowlist test — 43 passed on B300.Correction: flashinfer decode is admitted, not excluded
The second commit fixes a bug found while validating the first. Admitting
flashinferfor decode under unified served silently wrong output:Cause:
FlashInferMLAIndicesUpdaterDecode.call_begin_forwarddid its virtual→dense remap as a per-forward gather returning a fresh tensor, rebinding a local. On replay, the capture-stable buffer the captured kernel actually reads kept the raw virtual ids —fast_mla_decode_planignores itskv_indicesargument entirely, so the rebind was dead.trtllm_mlaescaped this only because it was given the out-of-graph capture-stable buffer described above.The remedy that merged writes the translation back in place rather than rejecting the backend:
bounded to the prefix the index kernel just filled, so the stale tail can never index the v2p table out of bounds. This is why a per-role split was not taken:
--attention-backend flashinferresolves to flashinfer for both roles, so a decode-only rejection would have rejected the only invocation anyone actually uses, leaving only a never-exercisedflashinferprefill +tritondecode mix._handle_page_major_kv_layouttherefore keeps a singleallowed_fullset, withflashinferadmitted for both roles.The in-place write is correct because of a flashinfer-side contract: under
use_cuda_graph,BatchMLAPagedAttentionWrapperkeeps the buffer passed at construction as_kv_indices_bufandplan()copies into it rather than rebinding, so the kernel reads exactly the buffer we wrote. No flashinfer patch is needed.Post-merge validation (this was measured after merge; every flashinfer figure above was eager, so the captured path had not actually been run). Kimi-Linear-48B, 2×H200 TP2,
--attention-backend flashinfer, cuda graph enabled and confirmed replaying (cuda graph: Trueon every decode batch line):Pooled over 600: 0.913 unified vs 0.910 static. The gap changes sign between the two sample sizes — noise, not a regression.
Fusing the remap into
create_flashinfer_kv_indices_triton(v2p_ptr+PAGE_MULT, ascreate_flashmla_kv_indices_tritonalready does) remains a worthwhile follow-up — it saves a launch and a temporary, and makes the remap impossible to skip — but it is an optimization, not a correctness prerequisite.Two pre-existing issues found, NOT introduced here
Both reproduce on the static pool at this commit, so they belong to
main, not to this PR. Filing separately; noting them here because they shape what a reviewer can reproduce on Kimi-Linear:ValueError: q.shape[0] (2586) does not match qo_indptr[-1] (664)from the chunked-MHA path (flashinfer_mla_backend.pymha_chunk_kv_cache.forward←deepseek_common/.../forward_mha.py forward_normal_core←hybrid_attn_backend.py). Fires whenever flashinfer prefill is paired with a different decode backend; a uniform flashinfer pair never hits it.k_buf = self.token_to_kv_pool.get_key_buffer(layer_id).to(q.dtype)→OutOfMemoryError: Tried to allocate 270.37 GiB. Routingtokenspeed_mlathrough atrtllm_mlaprefill instead gives the 0.905 == 0.905 row above, so the fp8 decode backend itself is fine.Limitations
9f5655340; wants a rebase (mainis ~24 commits ahead).CI States
Latest PR Test (Base): ❌ Run #30614286898
Latest PR Test (Extra): ❌ Run #30614286592