Repository navigation
Conversation
`methods/performance-ceiling-analysis` L1 divides a count by a rated peak and never revisits the model, so an error in the count reaches the floor unchallenged and no later roofline step re-examines it. The skill had no procedure for checking the demand side; `safetensors` appeared nowhere under this owner while the loading mechanics already lived next door. Add a two-gate prerequisite: the bidirectional per-tensor checkpoint join, and the separate per-rank weight ledger. The first needs no parallelism layout, so passing it certifies nothing about per-device bytes, and the distinction is stated rather than implied. State the blind spot too: the anchor covers the weight traffic term only, since a windowed and a global attention with equal head dimensions have byte-identical weights. Record the reviewed external source it derives from at a pinned commit, with per-file git blob and sha256 digests and per-file inspection scope. Documentation claims and source-verified claims are marked separately. Carry the source's two-threshold rule, which grants rejection authority only to a rated-peak bound and not to a per-operation roofline, and its archived guard-ablation study with the source's own limitations intact. What the source does not establish is recorded as explicitly as what it does: no end-to-end validation of predicted against measured serving performance within the inspected scope, unmeasured collectives upstream, and companion-blog corpus figures that the repository documents do not state and that must not be cited. `locally_verified` stays false; `empirical_validation` stays not_run. Agent-assisted-by: Claude Code / claude-opus-5 (author) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: Chenguang Zheng <zhengcg0505@gmail.com>
Define the two markers precisely. [code] means executable code in an inspected file. [doc] means the project's prose, docstrings and comments included, and also covers any behaviour that lives in a file that was not inspected. Re-audit every marker against the pinned commit and give each one a locator. Downgrade the claims that rested on docstrings or documentation: - the name lookup and composition behind the join - the layout-free join - which conditions fail the weight ledger - what the swa_window lever gates - the two-channel ablation drop - the HTTP 422 upload refusal The speed-of-light gate function, the lever vocabulary, the join's two residuals and the summing of shared names stay [code]. Record the environment-file count as a tree-listing fact. Correct statements against the source: - A header tensor is claimed by a leaf, not by exactly one; leaves sharing a name are summed. - The rule for a degree that does not divide comes from docs/parallelism.md, which now joins the readset with its digests and inspected section. - Both thresholds of the two-threshold rule use the engine's own counts, so the old rationale (rejection tracks invariance, because a legitimate implementation can change the counts) does not fit a source that refuses that case as a wrong numerator. The labelled reading is now that rejection is reserved for a row that contradicts its own record; a separately computed floor may only flag. - A sharded checkpoint needs one header read per shard, not two or three reads. - KV traffic can dominate decode only at long context or large batch. - The ablation study is archived evidence, not independent corroboration. - A single commit is not evidence of squashing. Locate the blog's 2x prefill example in section 2.6, inside the part retrieved verbatim, and describe it as an agent-written analysis that the tool caught. Reword the repository creation date so it is not read as the commit date, and keep the existing readset order. Agent-assisted-by: Claude Code / claude-opus-5-5 (author) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Chenguang Zheng <zhengcg0505@gmail.com>
Regenerate with `build_skill_index.py --source-revision 1536aeb` and `build_skill_coverage.py`. Apart from the performance-ceiling-analysis record and its coverage row, every generated file changes only its source pin. Agent-assisted-by: Claude Code / claude-opus-5-5 (author) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Chenguang Zheng <zhengcg0505@gmail.com>
performance-ceiling-analysis prices one device, one operation class and one traffic tier. Its contract says it does not walk a model, sum devices or compose stages, so a question such as "what is the decode ceiling of this model under this layout on this card" had no procedure. Add methods/model-sol-analysis, distilled from HuggingArch at a pinned commit. The procedure: - anchors weights, shapes and KV growth before pricing anything; - binds each phase with causal pair counts; - prices the fused graph the serving framework runs, with a source anchor for every fusion; - evaluates per rank under declared non-divisibility policies and MoE skew; - makes communication explicit; - keeps measured kernels beside the analytical figure, never over it. It reports a resource-total bound apart from a serial per-op estimate. The source publishes its per-op sum as "SOL", while its own code comment calls the whole-step maximum the bound. The per-op sum assumes no overlap between kernels, so here it is an estimate that may only flag a faster result; only the bound may reject one. The bound uses irreducible counts, such as the cheapest admissible collective, and peaks at the clock the device actually runs. Link latencies and launch floors enter only the estimate. A pure helper composes supplied counts: the checkpoint join, KV bytes by growth law, and per-phase bound and estimate. It does no I/O and is covered by synthetic tests. The source identity records 44 retrieved files with blob, sha256, bytes and inspection scope, and the source reading marks each claim [code] or [doc] with a locator. Register the skill, add the matrix rows, link it from performance-ceiling-analysis, and correct the library counts, which already lagged the registry by one. Agent-assisted-by: Claude Code / claude-opus-5-5 [effort=xhigh] (author) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Chenguang Zheng <zhengcg0505@gmail.com>
Provisional regeneration so that CI can run on the Draft. Regenerate with `build_skill_index.py --source-revision 64adb54` and `build_skill_coverage.py`. Besides the new model-sol-analysis record, two things change: - the performance-ceiling-analysis record, for its new cross-link; - the coverage rows. Every other record changes only its source pin and the skill-index.json hash that the new registry entry moves. The final regeneration happens after InferMatrixLab#351 and InferMatrixLab#359 land. Agent-assisted-by: Claude Code / claude-opus-5-5 [effort=xhigh] (author) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Chenguang Zheng <zhengcg0505@gmail.com>
The installed package now ships 129 source-grounded records, one more for model-sol-analysis. Agent-assisted-by: Claude Code / claude-opus-5-5 [effort=xhigh] (author) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Chenguang Zheng <zhengcg0505@gmail.com>
Skill evaluationPLANNED: not executed; there are no task outcomes yet.
Author verification steps (nonpaid; not yet run)
python tools/build_skill_index.py --source-revision 64adb54a2f96307d647791d1204a5123ebffe3e0 --checkThe declared source pin matches this head's canonical library bytes. The command has not run: retain its exit code and full drift/success output. It checks the generated projection, not claim truth or skill efficacy. Evidence and logs · Retention: 30 days. Plan bindings, budget, frozen exam and advisory detailsAdvisory: obtain missing evidenceRetained evidence availability: planned / unexecuted. No approval or merge authorization is issued.
Model/settings:
Automatic execution / cumulative PR budget: {"reason":"Trusted configuration or pricing missing, invalid or expired","remaining_usd":"unknown","reserved_or_unresolved_usd":"unknown","spent_or_legacy_usd":"unknown","state":"blocked"}Projection check selection (not an executed result): {"declared_in":"src/inferrsi/data/repo_packs/inferrsi/knowledge/README.md","source_revision":"64adb54a2f96307d647791d1204a5123ebffe3e0","status":"ready"}Provider/settings: Uncovered / unsupported paths (112)
|
Review (COMMENT only, not an approval)Reviewed range: the three commits you flagged as this PR's own, Verified
Issues
Questions
Not verified here
No approval implied. |
Refs #385 (the issue's acceptance owner decides closure; a merged PR does not satisfy the goal by itself). Builds on #351.
Draft, stacked on #351. The first three commits are #351's. Review only the last three:
64adb54a: the skill.817f57e3: a provisional index regeneration, so that CI can run.dbe0cf04: one clean-wheel count.After #351 lands, this rebases onto
main. The index is regenerated for real only after #359 lands, which avoids another repository-wide pin-only rewrite. Until #351 merges, the diff againstmainincludes #351's content, so the knowledge-policy declaration below lists its author too. No approval is requested at this head.What this adds
methods/performance-ceiling-analysisprices 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 "what is the decode ceiling of model M under layout L on card H?" had no procedure.methods/model-sol-analysisis a new candidate owner, distilled from HuggingArch (MIT) ate69d20a028e5b17524aa48b53bddf8b9aad5d15b. It works in eight steps:s².The one design decision to review
HuggingArch's "SOL" is
Σ_op max(t_compute, t_memory, t_comm, t_launch), a serial sum over fused ops ([code]). The source rejects the model-levelmax(Σ flops/peak, Σ bytes/bw)as one that "under-counts the true time". That holds only under its own stated assumption that "no compute hides a collective or another kernel's launch", and its own code comment calls the whole-step maximum "a bound and not an estimate". A stack that overlaps kernels can finish below the per-op sum, but never below the resource-total maximum.So this skill reports both, in separate columns:
max over resources (irreducible per-rank demand / peak rate)Σ_op max(compute, memory, summed link phases + latency, launch floor)from the counts actually run, no overlapLink latencies and launch floors enter the estimate, never the bound. A spec-sheet peak computed below the clock the device actually runs, which the source shows real rows exceeding, is not a bound input. This is the same split as #351's two-threshold rule.
Files
methods/model-sol-analysis/SKILL.md.../references/huggingarch-model-sol.md[code]or[doc]with a locator, and interpretations are labelled.../references/huggingarch-source-identity.json.../scripts/model_sol.py+references/model-sol-contract.md+references/model-sol-example.jsonjoin_checkpoint,kv_cache_bytes,phase_floors. JSON in, JSON out, no I/O,INSUFFICIENT_EVIDENCEinstead of defaultstests/test_model_sol_analysis.pytests/check_installed.pyskill-index.json, library README,docs/knowledge-base.md, count testsdocs/searchspace-matrix.md,docs/reference-matrix.mdmethods/performance-ceiling-analysis/SKILL.mddocs/skill-coverage.md,repo_packs/inferrsi/knowledge/**Provenance
[code]claims were rechecked against the source text before writing. A separate independent read-only audit then checked every marker and locator; its findings are folded in.facbbbc9…, the repository's root commit. At this pin, every file docs: anchor L1 weight demand against the checkpoint in performance-ceiling-analysis #351 relied on is byte-identical exceptdocs/measured_calibration.mdanddocs/parallelism.md, and docs: anchor L1 weight demand against the checkpoint in performance-ceiling-analysis #351's claims still hold.locally_verified: false,empirical_validation: not_run. No accelerator was used, HuggingArch was not run, and no predicted figure has been compared with a measurement.Found along the way, not changed here
performance-ceiling-analysisgives attention FLOPs as a fullseq²for DiT, whose attention is bidirectional, where that is right. Applied to causal LLM prefill, it would overstate attention work by about 2×, since causal pairs count about half ofseq²(inference, recorded in the source reading).Out of scope
Verification at this head
Head
dbe0cf04. The skill commits are64adb54a(content),817f57e3(provisional regeneration) anddbe0cf04(clean-wheel count).Local, Python 3.11:
ruff check src tests toolspasses.tests/test_model_sol_analysis.py: 43 tests pass.test_skill_index,test_collect_selection,test_knowledge_contract,test_skill_coverage_view,test_skill_libraryandtest_performance_ceilingpass.tests/check_installed.pysmoke passes, with 129 records and the new helper exercised.maincheckout at3f560642run in the same environment, with no new failures. All are in skill-eval andyibuapi_runtimetests, which this PR does not touch; this workstation has git 2.34 and nopythonon PATH.The generator ran through a local git wrapper that drops only
--no-lazy-fetch, which git 2.34 lacks. This clone has no promisor remote, so the hashed blob bytes are unaffected.Knowledge author declaration
claude-opus-5appears only because this branch carries #351's content commit. Once #351 has merged and this PR is rebased, the declaration will listclaude-opus-5-5/xhighalone, and no exception should be needed. Until then the policy check fails, and no approval is requested.🤖 Generated with Claude Code