Skip to content

[RFC] GDN hybrid decider kernels: close HF→vLLM/SGLang gap (causal_conv1d + FlashInfer/Triton GDN) #141

Open

Description

@hsliuustc0106

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 depthwise F.conv1d in 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_conv1d as a required separate op (not FlashInfer); fail ready if fallback to F.conv1d

Hypotheses (falsifiable)

  1. Installing a correct sm_89 causal_conv1d and binding it (no fallback warning) yields a measurable C1 p50 drop on PPLX/Clef vs the baselines above.
  2. 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).
  3. 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)

  1. Profile → tip → L20X remeasure (warmup 5, c=1, Public231) → keep tip iff p50/p95 improve without quality collapse.
  2. AB/BA or remeasure-gate; no “samples=0” commits counted as wins.
  3. 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.

Activity

  1. added
    kind:rfcProposal / design discussion; scope review before build
    area:knowledgeKnowledge line: packs, skill library, knowledge admission
    on Oct 25, 2026
  2. self-assigned this
    on Oct 27, 2026
  3. Dong1017 commented on Oct 29, 2026

    @Dong1017
    Collaborator
    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:

    1. HF Transformers caller contract (one source PR): pin the actual Qwen3.5 implementations used by the workers (Transformers 5.10.2 for Clef and 5.17.0 for PPLX), trace convolution/GDN binding and cache/forward behavior, and document the classification-prefill transfer boundary.
    2. SGLang caller/backend contract (a separate source PR): qualify the model-to-GDN/convolution dispatch, backend selection and state layout at a fixed upstream revision, preserving the existing skill owners and distinguishing prefill from decode.
    3. Whole-issue evidence reconciliation: independently inspect the existing system1-omni fix: compact Skill Eval comments while retaining evidence boundaries #173 and related measurement records for the required sm_89 installation/ready binding, Public231 C1 p50/p95 delta and quality controls. Newer hardware or changed workloads will not be substituted for the stated acceptance conditions.

    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" .-> F
    
    Loading
    Full acceptance and evidence record
    Original criterion Disposition and evidence Remaining action
    1. Document vLLM/SGLang GDN+conv operators against the actual HF worker Source scope delivered: #164/#169/#250/#251, pinned primary readsets and the concrete five-row worker/serving cross-map. The default eligible PPLX GVA body and FI adapter are covered explicitly. Retain source-derived limits; no runtime/kernel equivalence is implied.
    2. Reproducible sm_89 causal-conv1d installation with no fallback on ready Not independently accepted: installation recipes and source guards are documented, but matching original successful build/install, actual capability and ready/first-forward receipts were not recovered. Provide the original revision/environment/build/ready records and reconcile the public hardware correction.
    3. At least one verified C1 p50/p95 delta versus the issue's baseline table Positive author reports preserved; original comparison not independently verified here. System1 #173 reports Clef 9030065 → 594528a9: 247.518/413.025 → 164.969/216.755 ms, and first PPLX 1ba07d15 → 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. Durable original baseline/tip full revisions, workload/protocol hashes, warmup5/concurrency1, A/B order or remeasure-gate, request/outcome, quality and matching environment records.
    4. Explain classification-C1 transfer and non-transfer Source scope delivered: complete-prompt prefill versus decode/continuation, call/alias/architecture predicates, state initialization/axes and unsupported transfer conditions are documented. No numerical, model-quality or latency acceptance follows from the source note.

    Final source/software identities. HF reviewed head f0dfee58054c2be8d17afd75d78eb5782a861ff8 generated from committed source b24d3525755376d2b0a5184ce66526b120729e6e. SGLang reviewed head 1799639b95ec99e320346fb85963d4a207004131 is a test-only child of projection witness 5672d0075e214e4000b5d20f580ff0451ce9a270; canonical source is 2f72a0ccabd87eefdc76223c9b82f7091c379da1. 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 2515627 omitted the unsupported .txt license asset from its wheels; 5672d00 then 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 HTTP 504b272c46dc1963f981c6bed9ef0c7ebdd40c69 with Rust HTTP 3364dbd7f8b2cb414c24e73f24b74dd785888ecc. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:knowledgeKnowledge line: packs, skill library, knowledge admissionkind:rfcProposal / design discussion; scope review before build

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions