Skip to content

task: add a model-level speed-of-light analysis skill distilled from HuggingArch #385

Open

Description

@fake0fan

Current state: Proposed on 2026-11-10 by the issue author; no implementation is accepted. Draft PR #386 (head dbe0cf04) holds a candidate implementation stacked on #351, which it builds on. CI and the knowledge-policy check are expected to report there; no approval is requested while it is stacked.
Decision needed: Accept, revise or reject a new methods/ owner for model-level speed-of-light analysis, from the maintainers. This also bears on open question 1 of #303 (new methods/ owner or a second slice of performance-ceiling-analysis); see the boundary below.
Next action: The issue author keeps the Draft PR in Draft until three things happen: this scope is accepted, #351 lands, and the skill index is regenerated after #359. The Draft carries a provisional regeneration so that CI can run.

Goal and acceptance

  • Problem / desired outcome: methods/performance-ceiling-analysis computes a conditional L1 floor for one device, one operation class and one traffic tier. Its roofline contract states that it does not walk a model, sum devices or compose stages. So an agent asked "what is the prefill / decode ceiling of model M under layout L on hardware H?" has no procedure for the model-level question. It assembles one by hand from per-op formulas, without:

    • ground-truth anchors on the counts,
    • a rule for which graph to price (fused or unfused),
    • per-rank geometry or injected communication,
    • a separation between what is a bound and what is a conditional estimate.

    HuggingArch (MIT) implements this question end to end. task: anchor L1 weight demand against the checkpoint in performance-ceiling-analysis #348 / docs: anchor L1 weight demand against the checkpoint in performance-ceiling-analysis #351 already carry one prerequisite from it, the checkpoint weight anchor. This issue distills the rest of the method into a portable candidate procedure.

  • Completion criteria:

    • A new registered candidate skill methods/model-sol-analysis (SKILL.md, metadata.json, references/), with one skill-index.json entry and the count updates that follow.
    • The procedure walks a model to per-phase (prefill, decode) floors: anchored counts, the fused graph with provenance for every fusion, per-rank geometry under a declared layout, communication as explicit terms, and KV traffic per attention family with its growth law stated.
    • Every figure is labelled as either an invariant bound (per-resource totals over rated peaks) or a conditional estimate (per-op serial composition, calibrated rates). Only a bound may reject a result, consistent with the bounds, predictions and decisions reference.
    • A pure offline helper with tests. It takes saved inputs (a checkpoint header, an analytical tensor inventory, per-op counts, rated hardware facts) and returns join residuals, a byte checksum, and both the bound and the estimate per phase. It does no I/O, no network access and no device execution, and it returns INSUFFICIENT_EVIDENCE rather than guess.
    • A typed source identity at one pinned commit, with per-file blob, sha256, bytes and inspection scope. Claims in the reference documents carry [code] / [doc] markers with locators, following the convention reviewed on docs: anchor L1 weight demand against the checkpoint in performance-ceiling-analysis #351.
    • One docs/reference-matrix.md row and the matching docs/searchspace-matrix.md row(s); regenerated docs/skill-coverage.md and skill index.
    • locally_verified: false, empirical_validation: not_run. No measurement, benchmark or performance claim.

Scope and constraints

Ownership and authorization

  • Proposed by / actual requester: repository owner (via authorized agent)
  • Status: Proposed
  • Accountable parent (Issue-level owner, if assigned): TBD
  • Slice implementer(s) / acting contributor (if assigned): issue author, if accepted
  • Goal-acceptance owner: TBD
  • Accepted decision or scoped delegation: Not yet granted

Inputs and deliverables

Completion and closure

  • Who accepts completion and may close: the named acceptance owner, not the PR merge.
  • Remaining uncertainty / next decision: whether model-level analysis belongs in a new owner (proposed here) or as further slices of performance-ceiling-analysis; whether the helper's bound/estimate split should be reused by [RFC] Per-task SOL modeling and a KDA-flow gap metric for fused operators #303 if that RFC is accepted.

Activity

  1. amy-why-3459 commented on Nov 10, 2026

    @amy-why-3459
    Collaborator

    Thanks for the careful write-up. Splitting model-level composition out from the single-op floor in performance-ceiling-analysis reads as a sensible boundary to me. I also like the explicit split between bound and estimate and the INSUFFICIENT_EVIDENCE fallback. A few points I think are worth settling before the Draft PR, so that review stays focused:

    1. Which graph the bound is computed on. A fused graph moves fewer bytes than an unfused one, so a memory floor computed on the fused graph is only a valid lower bound if that fusion is achievable for the declared layout and hardware. Could the issue state which graph the invariant bound is taken over? Options include the minimal-traffic graph, or the fused graph whose every fusion has provenance, which would make the bound conditional on those fusions. Also, should a fusion without provenance fall back to unfused bytes or to INSUFFICIENT_EVIDENCE? This decides whether "only a bound may reject a result" really holds.
    2. Layout and communication. Per-rank geometry and injected communication depend on the declared layout, so the per-phase bound is a bound given that layout, not across layouts. A one-line statement of this in the completion criteria would stop readers from treating it as layout-independent.
    3. Interface with performance-ceiling-analysis. To avoid two copies of the per-op formulas, could the new owner explicitly consume the existing L1 floor and roofline contract, and describe only the walk, the composition and the communication terms? The proposed one-line cross-link covers discovery, but naming that dependency would make the boundary clearer for [RFC] Per-task SOL modeling and a KDA-flow gap metric for fused operators #303's open question 1 as well.
    4. Initial scope for KV traffic. "KV traffic per attention family" could grow large. Listing the families covered in this first slice, for example MHA/GQA/MQA, MLA and sliding-window, with the rest marked unsupported, would keep the Draft reviewable.
    5. Two pins of the same upstream. This proposal pins HuggingArch at e69d20a0…, while docs: anchor L1 weight demand against the checkpoint in performance-ceiling-analysis #351 keeps facbbbc9… for the weight anchor. Keeping them separate is reasonable, but could the identity file state either that the anchor semantics the new skill relies on are unchanged between the two revisions, or which revision wins when they differ?
    6. Clean-room helper. The readset includes code files used to verify claims, and the helper is written from the documented method. The PR description should probably state this explicitly. Even under MIT, keeping the attribution and "no vendored code" note in one place makes later audits easy.

    On process, the acceptance owner and the accepted decision are still TBD, and the Draft depends on both #351 landing and the post-#359 regeneration. Keeping the PR in Draft until a maintainer accepts the scope, as you proposed, sounds right to me.

  2. added
    area:knowledgeKnowledge line: packs, skill library, knowledge admission
    kind:taskBounded delivery task with a delegated slice
    status:proposedWaiting for the decision named in the status block
    on Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:knowledgeKnowledge line: packs, skill library, knowledge admissionkind:taskBounded delivery task with a delegated slicestatus:proposedWaiting for the decision named in the status block

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions