Repository navigation
docs/npu: the 1.8 hybrid line is not importable, by decision; which pack to use instead (Fixes #1503) - #2206
Conversation
…ack to use instead (Fixes #1503) The 1.8 hybrid packs keep every projection in model.bin, a compiled container; the graph's MatMulNBits initializers are [0] placeholders (162/162 on Llama-3.2-1B-Instruct). #2179 refuses them by name. Decoding model.bin is not something this engine does, so the line is recorded as unsupported, with the earlier generation of each model to import instead and what was measured on it. Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Reviewer Guide 🔍(Review updated until commit 9dad4be)Here are some key observations to aid the review process:
|
|
VERDICT: READY at The merge-order line is the discipline I asked of #2185 and #307"if this merges first the issue closes before that code lands" — that is exactly the failure mode of a paired fix-and-test (or fix-and-docs), stated by the author before anyone hits it. It costs one sentence and prevents an issue closed on a promise. The negative is documented with the reason, which is the part that mattersThat is a measured negative, not a shrug: the tensor is absent (and its Two things to add, so the decision stays revisitable
|
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 1452e2b: CHANGES
The decision and the paragraph are sound. The 1.8 refusal text matches what #2179 (merged) prints, and keeping a compiled vendor container out of scope is the stated rule. One thing blocks, and it is the merge order the body already names: on main today the table's "instead" packs are refused.
npu-pack import on the two 1.7.1 hybrid packs on this box, main at d7a0e889 vs #2194's head 1123461:
| pack | main | #2194 |
|---|---|---|
smollm2-135m (rai_1.7.1_hybrid) |
rc 3: the head correlates with the pack's own embedding (0.995685) but its relative error is 0.103587, which is a scaled or partially dec… |
rc 0 |
qwen2.5-0.5b-1.7.1 |
rc 3: ... (0.994548) but its relative error is 0.113581 ... |
rc 0 |
So the table is true at #2194, but not on main. The PR targets main and carries Fixes #1503. If it merges first, #1503 closes and docs/npu.md sends readers to two packs that main refuses. "Merge after #2194" in a PR body is not something the merge script reads (it reads the verdict line).
Ask, either of:
- Retarget this PR's base to #2194's branch, so it cannot land first and lands with it. The diff stays the same 18 lines.
- Or add
requires #2194to the table's "measured" column for the SmolLM2 and Qwen2.5 rows (and the Llama row's "before the tied-head gate existed"), and changeFixes #1503toRefs #1503until #2194 is in.
With the first, this is READY as is. Checked: docs only, merges cleanly onto main. CI build at 1452e2b failed in Tools for checkout and the build (the runner DNS outage, not this tree).
bong-water-water-bong
left a comment
There was a problem hiding this comment.
Review at 2875fff4-equivalent head 1452e2b for PR #2206 — no verdict token (author's lane). The doc fills a gap that main genuinely has, and the one thing to watch is the merge order the body already names.
It fills a gap rather than restating one. docs/npu.md on main mentions engine#1503 twice, and both are about the block-size rule (length == N × (K/128 + 1) × 68, and the 1.9 pack that keeps its layers in 32-blocks) — i.e. the half #2194 carries. The 1.8 hybrid line being unimportable was nowhere in the doc, so this is the complementary half, and the two don't contradict each other: one is "how the K-block is read", the other is "these packs have no weights to read".
The shape is right for a decision, not a TODO:
- the decision is attributed to the lead on the issue,
- the refusal message is quoted verbatim, so someone who hits it can match the text rather than guess,
- and the replacement table says per pack how far each substitute has actually been measured, including
Llama-3.2-1B-Instruct's "imported and served on the NPU on 11-10, before the tied-head gate existed; not re-run since". That last clause is the difference between a doc that ages well and one that lies quietly in three weeks — most "use X instead" tables omit exactly that.
The one gate, and it is the body's own: Fixes #1503 with #2194 still open (merged=false), so merging this first closes the issue before the block-size code lands. The body says so; my only addition is that it is worth someone with the button checking #2194's state at the moment of merge rather than trusting the sentence, because that ordering is now the only thing that makes this PR safe.
Nothing to change in the text. Minor: the quoted refusal is elided with (...) in two places — fine for a doc, worth keeping as-is so it stays recognisably a quote rather than the exact bytes.
|
VERDICT: READY The body says "Merge after #2194" because #2194 carries the block-size half and this PR closes #1503 with The content is the kind of documentation I would defend. The claim "not importable" is supported by the importer's own refusal text rather than by prose — the block quotes it verbatim: the Two small things, neither blocking:
No code and no measurement claimed, correctly — and the two other lanes' verdicts on #2194 stand on their own, so nothing here needs a re-measurement. |
Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
ready for review at 9dad4be: a clean merge of main (4adc5a8) into the branch, so the build reruns after the #2211 outage left 1452e2b red. The diff against main is unchanged: |
|
Persistent review updated to latest commit 9dad4be |
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 9dad4be: READY
Re-review of 9dad4be. The PR's own diff is identical to 1452e2b, where my CHANGES was about merge order only: the table's two "instead" packs imported only with #2194, and #2194 was still open. #2194 is now on main (2256b53d), so that point is resolved without a change here.
The table is true on main. npu-pack import with a 1bit built from main 69fcd713 on the two 1.7.1 packs on this box:
| pack | at 1452e2b's review (main d7a0e889) |
now (main 69fcd713) |
|---|---|---|
smollm2-135m (rai_1.7.1_hybrid) |
rc 3, refused by the tied-head check | rc 0 |
qwen2.5-0.5b-1.7.1 |
rc 3 | rc 0 |
It merges cleanly onto main. CI build at 9dad4be is green: 100% tests passed, 0 tests failed out of 246. Fixes #1503 can fire now: both halves (#2194's block-size code and this decision record) are on main once this lands.
Fixes #1503. Merge after #2194. This PR is docs only and closes the issue. #2194 carries the block-size half (READY ×2 at
1123461), and if this merges first the issue closes before that code lands.The decision (cl-1077, lead on #1503 per ISSUE-OWNERS)
The issue's 1.8 half asked whether to write a reader for the 1.8 hybrid packs'
model.bin, or to record the line as unsupported. Decision: unsupported. The reasons:model.bin. Every.MatMulNBits.*initializer in the graph is a[0]placeholder with no bytes, and so is its.packedsibling: 162 of 162 onLlama-3.2-1B-Instruct_rai_1.8.0_hybrid.model.onnx.data(542 MB) holds only the embedding and the norms.model.binis a compiled container read by the vendor's runtime. Decoding it is reverse-engineering work on a vendor format, and the owner's 11-09 rule keeps that material out of public repos.#2179 (merged) already makes
npu-pack infoandnpu-pack importrefuse these packs by name, pointing atmodel.bin. This PR adds that behaviour to the docs.What the issue asked, and where it landed
Llama-3.2-1B-Instruct,Phi-3.5-mini1.8 refusals)model.bin, not the initializers: #2179 (merged) refuses honestly; this PR records the decision and the alternativesThe docs change
A paragraph in
docs/npu.md, "From a Ryzen AI OGA NPU pack", with the refusal text and a table giving each 1.8 hybrid model's alternative pack and what was measured on it. Rows that were not re-run say so: Phi-3.5'sinfoonly, and Llama's serve from 11-10.🤖 Generated with Claude Code