Repository navigation
[RFC] GDN hybrid decider kernels: close HF→vLLM/SGLang gap (causal_conv1d + FlashInfer/Triton GDN) #141
Copy link
Copy link
Open
Labels
area:knowledgeKnowledge line: packs, skill library, knowledge admissionKnowledge line: packs, skill library, knowledge admissionkind:rfcProposal / design discussion; scope review before buildProposal / design discussion; scope review before build
Description
Context (from system1-omni)
Owner asked to turn a live perf gap into an InferRSI problem and push it here.
On L20X, system1-omni draft integrations for PPLX-class 27B and Clef-class GDN hybrid deciders show C1 latency dominated by HF backbone forward—not frontend/HTTP/weight IO.
Measured baselines (Public231 C1, L20X, concurrency 1, 231/231; no-thinking where stock thinking 422s)
| Model | SHA | p50 (ms) | p95 (ms) |
|---|---|---|---|
| PPLX-27B | 1ba07d15 |
98.777 | 341.202 |
| Clef | 9030065 |
247.518 | 413.025 |
| StartLux 4B (contrast) | 5bb25be |
6.785 | 51.432 |
Profile sinks (PPLX @ 1ba07d15, in-process ~136 tok)
- Total ~89 ms; forward CUDA ~87.7 ms (~98%); prepare ~1.4 ms; parse/post/answer <0.3 ms
- Short-seq floor ~88–91 ms (nearly flat 123–275 tok); p95 driven by long prompts (fwd ~327 ms @ ~2676 tok)
- Missing
causal_conv1d→ transformers fallback warning → generic depthwiseF.conv1din trace - Path today: HF-SDPA + GDN, no CUDA graphs
- Param ratio vs StartLux (~6.75×) under-explains the ~12–14× latency gap
Tips pending remeasure (do not treat as gains yet): PPLX 7233620 (gate on causal-conv1d 1.7.0 + sm_89 cubin); Clef 033685b7 (FLA + causal_conv1d).
Research question
Can we close the kernel gap between our HF-serve path and the vLLM/SGLang stack for the same GDN hybrid family, with only verified Public231 C1 gains on L20X (sm_89)?
Reference stack (owner direction):
- Runtime stays ours (not “replace with vLLM/SGLang wholesale”)
- Full-attention layers: FlashInfer (or Triton/FA as fallback)
- GDN linear-attention: Triton default / FlashInfer optional (see SGLang
--linear-attn-*/ gdn-backend; vLLM FlashInfer GDN prefill/decode work) - Causal convolution:
causal_conv1das a required separate op (not FlashInfer); fail ready if fallback toF.conv1d
Hypotheses (falsifiable)
- Installing a correct sm_89
causal_conv1dand binding it (no fallback warning) yields a measurable C1 p50 drop on PPLX/Clef vs the baselines above. - Further GDN path work (FlashInfer or FLA/Triton GDN kernels, short-seq graphs) only pays if profile shows GDN/conv still in the top sinks after (1).
- Classification C1 (no decode) has a different optimal kernel mix than decode-heavy vLLM/SGLang benches—document what does not transfer.
Evidence loop (keep only verified gains)
- Profile → tip → L20X remeasure (warmup 5, c=1, Public231) → keep tip iff p50/p95 improve without quality collapse.
- AB/BA or remeasure-gate; no “samples=0” commits counted as wins.
- Record which kernels actually bind on sm_89 and the install/gencode recipe.
Success criteria
- Documented mapping: vLLM/SGLang GDN+conv1d ops ↔ our HF worker path
- Reproducible L20X install for
causal_conv1d(sm_89) with zero fallback warning on ready - At least one tip with verified C1 p50/p95 delta vs table baselines
- Knowledge note: what transferred from vLLM/SGLang vs what did not for classification C1
Non-goals
- Merging system1-omni PRs without separate owner yes
- Replacing system1-omni serving with vLLM/SGLang
- Publishing local infra details in group chats
Related
- system1-omni drafts: #164 StartLux, #165 Clef, #166 PPLX
- Skills draft (optimize-remeasure-gate): #172
- Upstream refs: vLLM FlashInfer GDN prefill/decode; SGLang GDN backends (Triton / FlashInfer);
causal_conv1d+ conv1d metadata work in vLLM GDN attn
Ask for InferRSI
Own this as an RSI track: distill kernel decision cases, run/guide the evidence loop on L20X, and feed verified recipes back to system1-omni model tips.
Metadata
Metadata
Assignees
Labels
area:knowledgeKnowledge line: packs, skill library, knowledge admissionKnowledge line: packs, skill library, knowledge admissionkind:rfcProposal / design discussion; scope review before buildProposal / design discussion; scope review before build
Activity
Dong1017 commentedon Oct 29, 2026
Original issue-owner plan (retained)
Issue-owner plan: finish the remaining GDN evidence chain
The authorized Codex parent agent is resuming accountability for this whole issue at the user's request, through delivery and an evidence-based closure-readiness assessment. The existing causal-conv1d and vLLM source slices are already delivered by #164 and #169; those slices will be reused.
Planned remaining slices:
Each delivery PR will retain immutable source provenance and licenses, source-derived candidate limits, independent revision-bound review and all applicable CI. Existing records and negative results remain intact. This plan does not start new device/model/provider execution or modify the serving engine.
Closure readiness will be assessed against all four success criteria, with a final Delivered / Verified / Limits card and exact remaining blockers if any. Source delivery or passing software CI alone will not mark the performance criteria complete. The issue remains open during that assessment.
Source delivery complete; original empirical acceptance pending
Issue141 remains open. Source criteria 1/4 are delivered; empirical criteria 2/3 are not yet independently verified.
flowchart LR A["Pinned Dao, vLLM, HF and SGLang sources"] --> B["HF worker/operator map and C1 limits"] B --> C["Candidate references and source cases"] C --> D["Independent review and software checks passed"] D --> F["Whole-Issue acceptance pending"] E["Original install, ready and kernel A/B receipts"] -. "still needed" .-> Fa8215b3ec314b8bc5cee152cdebbf4bb76ba4188; SGLang docs: qualify SGLang GDN and causal-conv caller contracts #251 is merged at7d1d82f55cda89842bd23ee2da91b521ee60eb08. The map includes the actual eligible default PPLX GVA forward/adapter, independent convolution/GDN binding, grouped heads/gates, state orientation/initialization and classification-prefill transfer boundaries. See the HF binding contract and integrated operator map.Full acceptance and evidence record
9030065→594528a9: 247.518/413.025 → 164.969/216.755 ms, and first PPLX1ba07d15→f968e576: 98.777/341.202 → 98.037/302.569 ms, each 231/231. Later settled/kept tips remain distinct author records, not replacements for the first-run figures.Final source/software identities. HF reviewed head
f0dfee58054c2be8d17afd75d78eb5782a861ff8generated from committed sourceb24d3525755376d2b0a5184ce66526b120729e6e. SGLang reviewed head1799639b95ec99e320346fb85963d4a207004131is a test-only child of projection witness5672d0075e214e4000b5d20f580ff0451ce9a270; canonical source is2f72a0ccabd87eefdc76223c9b82f7091c379da1. All 517 committed inputs and all 78 native outputs were verified. The final one-line exact inventory expectation accounts for the genuine sixth typed case while retaining every per-case check; source/generator/projection bytes did not change. The complete 11,346-byte Apache license is packaged through the existing Markdown contract, byte-identical to the pinned upstream license. No package/test policy was relaxed.Historical failures retained. Earlier SGLang head
2515627omitted the unsupported .txt license asset from its wheels;5672d00then exposed a stale exact case count5. Their results remain tied to those heads; the final head above passes actual full and isolated-package checks. The older automatic Codex review failed without a readable finding and supplies no current-head approval. Independent review checked the complete final change, submissions, comments and threads. SkillEval retained zero comparisons/zero calls and 90 gaps with an explicit source/software-only disposition, not an efficacy pass.Read-only archive recovery. The existing 29,114,507-byte migration archive's whole-file SHA-256 was verified as
af09735124e0630284740e0ac42884ab0176f2fb7985918efab28e8a40628e6e. Its inspected protocol compares Python HTTP504b272c46dc1963f981c6bed9ef0c7ebdd40c69with Rust HTTP3364dbd7f8b2cb414c24e73f24b74dd785888ecc. Selected protocol, metadata and summaries were independently reconciled; not every manifest member was rehashed. This is a different comparison and cannot replace the original kernel A/B evidence. The original run path remains unknown in the granted readable scope.Hardware scope. The original issue names L20X/sm_89; the engineering owner corrected the target to H200/sm_90, followed by a later L20X-reported8.9 startup statement. Original run properties must reconcile this discrepancy; a driver label or current server profile does not establish historical capability.
Next acceptance action: make the original experiment receipts readable, or record an explicit accepted scope decision from the responsible owner. Keep the issue open while criteria2/3 lack matching evidence. New device/model/provider experiments require their own concrete execution authorization and are not started by this source delivery.