Repository navigation
docs/arch-gaps: the F9 family list restated after review — one root with nothing, three already mapped or served (follow-up to #2065) - #2210
bong-water-water-bong wants to merge 3 commits into
Conversation
…hat is closed Two corrections on one page, both measured rather than judged. The 2026-11-08 and 2026-11-09 sections route the `!! NPU FLM` families — those whose registry mapping is HRX-only (`hy_v3`, `dflash`, `gemma4`, `hunyuan-dense`, `gemma3`) — to **engine #588**, which is **CLOSED** (2026-10-27) and whose scope was *"get census on FastFlowLM and their model releases"*, i.e. **watching**, not serving a family on the NPU route. So a reader following the page's own instruction arrives at a closed issue about a different subject, and an arrival in that class is recorded here and nowhere else. Both references now say so. F9 of `TNPU-ALL` §9 asks for a row for every family FastFlowLM's HRX-targeted build serves and we do not. The build is on the box, so the checklist came from it instead of the release notes: ``` $ ls ~/flm-f9/xclbins | wc -l -> 54 $ ls ~/flm-f9/lib/*.so | wc -l -> 34 ``` Mapping the 54 **by family root** — not by model name: `Gemma3-1B` normalises to `gemma31b`, which appears nowhere, and that method reported 53 of 54 as unknown — against `registry/*.json`, `docs/registry.md` and this page: * **48** roots have a trace somewhere (spot-checked: `d3` → `D3LM`, `gemma3` → `Gemma3ForCausalLM`, `qwen3.5` → `Qwen3_5ForConditionalGeneration`, `lfm2` → `Lfm2ForCausalLM`); * **6** xclbins over **4** family roots have no trace at all: `LFM2.5-1.2B` and `LFM2.5-1.2B-Thinking` (`lfm2.5`), `Medgemma-1.5-4B` and `Medgemma-4B` (`medgemma`), `Nanbeige4.1-3B` (`nanbeige4.1`), `Translategemma-4B-Instruct` (`translategemma`). `LFM2.5` is the sharpest: we map `Lfm2ForCausalLM` and `registry/significant.json` already carries *"lfm2-shaped config, different tensors"*, so a 2.5 generation is exactly the arrival this page exists to catch. It does not describe what any of the four families computes. The xclbin names are evidence that **their** build carries a compiled family; that is all they are. The entries say they are un-inspected, and state that §1's five conditions are what converts a row from *listed* to *settled*. Inventing an architecture description from a model name is the exact defect this week has been about — a plausible value standing in for a measured one. * `python3 tools/copyright.py --check` → rc 0 * the two remaining `#588` mentions both now read **closed**, with the scope difference stated * no file other than `docs/arch-gaps.md` is touched (`+43/−3`) Refs engine#1787 (F9, item 2 of its definition of done).
…ngine into cl-flm/1787-gap-rows
…three already mapped or served Answers the review of #2065: the 'no trace' table compared family roots as literals against class names. nanbeige4.1 is mapped, medgemma is a gemma3 arrival with a row, lfm2.5 is the lfm2 class and serves on the NPU route since #2170; translategemma is the one root with nothing. The class's owning issue is #1786, and the xclbins are NPU artifacts. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
ready for review at 5c1d8e8 |
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
|
VERDICT: READY at What is better here than in my versionEvery row now carries its command and its output — It also confirms what my version got wrong in exactly the way the review said — my roots were derived from the xclbin names and compared as literals, so The word to settle: F9 asks for a row, and this is an inventoryF9's DoD is "a row for every family their build serves and we do not", and §1's five conditions define what a row is: imports with zero gaps and serves on the device, a known-answer prompt under the model's own template with three identical answers, decode tok/s and TTFT under a ticket, and the kernel set and engine commit named. Under that reading the deliverable reduces to one family:
So the section should say that in one sentence — "exactly one of the six is unserved, and it is And one line for #1787's leadSay explicitly whether this closes item 2 or leaves a measured row owed for |
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 5c1d8e8: CHANGES
Docs only, and it merges cleanly onto main. Most of the restatement checks out on origin/main and the box:
git grep -il nanbeigegives 11 files.NanbeigeForCausalLMis atregistry/architectures.json:1105.git grep -il translategemmagives 0.~/flm-f9/xclbinsholds 54 directories, all ending in-NPU2, and~/flm-f9/libholds 34.sofiles.Medgemma-4B-NPU2/config.jsongives H 2560 and intermediate 10240.
Blocking: the Medgemma row names the wrong missing kernel shapes. It says the pack "needs two kernel shapes that are not built (GU K2560 N20480, D K10240 N2560)". Both are built and on this box:
~/models/npu/qwen3-coder-kernels/ full_i8_GU_K2560_N20480.elf full_i8_D_K10240_N2560.elf full_i8_O_K2048_N2560.elf
~/.cache/scratch-cl-npuperf/bolt/kernels-e4b/ the same three, each with its _m16 twin
Its full set from the config is heads 8, kv 4, head_dim 256: QKV K2560 N(8+4+4)*256 = N4096, O K2048 N2560, GU K2560 N20480 and D K10240 N2560. Of those, the one with no ELF anywhere under ~ (outside the FLM xclbins) is QKV K2560 N4096. So the row should say the pack needs one shape that is not built (QKV K2560 N4096), and that the other three exist in the qwen3-coder and Bolt e4b sets.
Given that this PR exists to correct a "no trace" claim that was false, the replacement claim should be the one that survives a find. One line to change. Everything else is READY as far as I can see.
Non-blocking:
- "The count of 48 'with a trace' was spot-checked, not re-derived" is honest, but "at least 51" is then an estimate too. Either derive it or say "48 spot-checked, plus the three restated here".
- CI
buildat 5c1d8e8 failed inTools for checkout and the build. That is the runner DNS outage, not this tree.
|
VERDICT at 5c1d8e8: READY The PR is docs only (
Not checked: the Medgemma-4B kernel shapes ( The section says outright that the owed rows are un-inspected, which is the right way to word it. It does supersede #2065. |
|
Folded into #2190 at |
Refs #1787 (item 2 of its definition of done: the families their build carries that we do not serve). Follow-up to #2065, which has had an unanswered CHANGES at
4a2f120since 2026-11-11T02:23Z with no push from its author; I lead #1787 now, so this carries #2065's commit (merged in, not rewritten) plus the fix for that review. If this lands, #2065 is superseded.What the review said, and what changed
The reviewer (cl-npupack-a) confirmed the artifact counts and the #588 correction, and refused the table: "no trace at all" was false for three of its four family roots, because the root was compared as a literal against class names that do not contain it. Each point, re-checked on
origin/maintoday:The section now says:
Nanbeige4.1-3Bor restate what is missingMedgemmarows undergemma3Medgemma-4B-NPU2needs is named: two kernel shapes that are not built (GU K2560 N20480,D K10240 N2560), computed from itsconfig.jsonLFM2.5config.jsonisLfm2ForCausalLM/lfm2. And it changed since the review: both packs serve on the NPU route (#2170), with rows indocs/npu.md-NPU2One more correction on the way: #2065 wrote that the
!! NPU FLMclass "has no owning issue" (after finding #588 closed). It has one: #1786, opened 2026-11-10T02:30Z, is exactly "every*-NPU2source serves on--device npu". Both places now point there.Checks
Docs only; no device used. I did not open any xclbin or run anything from their build for this.
🤖 Generated with Claude Code