Skip to content

docs: the 21 Oct narrative (HRX + our HIP kernels + the NPU engine, inside Lemonade) - #488

Merged
bong-water-water-bong merged 1 commit into
mainfrom
1bit/site-narrative-2026-10-21
Oct 21, 2026
Merged

bong-water-water-bong merged 1 commit into
mainfrom
1bit/site-narrative-2026-10-21

Conversation

@bong-water-water-bong

Copy link
Copy Markdown
Collaborator

README.md and docs/ (which 1bit.gg publishes) brought to the current narrative. Pairs with 1bit-MONSTER/site branch 1bit/site-narrative-2026-10-21.

Checked: the site builds from this branch and the site branch together (37 pages), one h1 per page, no dead internal links or anchors, every meta title <= 65 and description <= 160 characters; tools/copyright.py --check clean.

🤖 Generated with Claude Code

…nside Lemonade)

- README: lead with the census (43/43 on the GPU, #476/#480/#481) and Qwen3.8-27B MTP
  36.0/26.8/29.9 tok/s (#487); one hop (#475), strict placement (#482), hw-gate kernels and
  placement (#478/#484), allocation safety (#486), Ubuntu 26.04 PPA lemond (#483), ONNX on the
  NPU via the user's Ryzen AI install (#386); Vulkan/ROCm/CUDA/ZINC/ComfyUI/MLX/Windows cut
  (#306); no release date; NPU in progress with no speed numbers.
- npu.md: a status page with the public parts only (model format, serving, add-on hook, build);
  no runtime method, no NPU speeds.
- releases.md: "Releases", first release when the checklist is done; neutral package checks.
- lemonade.md, serve.md, hrx.md, laya.md, PORTING.md, registry.md: one hop, MTP on HRX (#487),
  census lead, add-on wording without private repository names or NPU speeds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bong-water-water-bong
bong-water-water-bong enabled auto-merge (squash) October 21, 2026 10:00
@bong-water-water-bong
bong-water-water-bong merged commit 75c4c1a into main Oct 21, 2026
8 checks passed
@bong-water-water-bong
bong-water-water-bong deleted the 1bit/site-narrative-2026-10-21 branch October 21, 2026 10:04
@github-actions

Copy link
Copy Markdown

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

476 - Partially compliant

Compliant requirements:

Non-compliant requirements:

Requires further human verification:

  • Verification of G2 fix on main
  • Verification of G7 and G10 fixes in future PRs

480 - Partially compliant

Compliant requirements:

Non-compliant requirements:

  • None

Requires further human verification:

  • None

481 - Partially compliant

Compliant requirements:

  • Pins gpu-kernels ZINC: pin upstream, serve it through Lemonade, NVIDIA verified on an RTX 5090 #14 (strided batched matmul + ALiBi softmax for jina-bert)
  • With it, the 20 Oct HRX census closes: 43 of 43 runnable cells (chat, long, q8 KV, --parallel 4, MTP, embedding, rerank across Qwen3 0.6B/4B, LFM2, MiniCPM, ZAYA, Coder-30B, GLM, Qwen3.8-27B, nomic, jina, bge) with 0 nodes off HRX, 1 graph split, every request answered (pi goal mvgdshw8, evidence strixhalo ~/wt/HRX-GAPS-PROGRESS.md)
  • hw-gate label builds our kernels and runs the full gate

Non-compliant requirements:

  • merged by hand after it passes - not directly addressed in this PR

Requires further human verification:

  • Verification of merge by hand
⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Outdated Documentation

The documentation in docs/npu.md has been significantly rewritten to reflect the current state of the NPU engine. However, some sections still reference outdated information or historical paths, such as the mention of xclbin and the old full ELF generation process. These sections should be carefully reviewed to ensure they accurately reflect the current implementation and do not mislead users about the NPU engine's architecture.

# NPU engine

The NPU engine is in progress: correctness first, speed next. Its kernels, built from source,
match an fp64 reference on Qwen3-0.6B, 1.7B and 4B. The layer kernel and lm head reach cosine
similarity 0.9999 or better at every tested position, and greedy decoding matches the reference
token for token.
They are not merged into this repository yet. The release carries the NPU runtime, compiled into
`1bit`, and the `npu` backend of Lemonade's `onebit` recipe; until the kernels land, a release
package serves GGUF models on HRX, not NPU models ([releases.md](releases.md#the-npu-engine)).

The NPU runtime and the NPU kernels are proprietary and closed source
([releases.md](releases.md#private-components)). This page covers the public parts: the model
format, how `1bit serve` runs an NPU model, and how to build.

AMD's own NPU stack is a separate route that ships today: `1bit serve --device onnx` runs Ryzen AI
Software's ONNX Runtime GenAI (the RyzenAI provider) on the NPU, on Linux too, from the user's own
install of it ([ONNX Runtime, Linux NPU](onnx.md#linux-npu)).

## A model directory
Inconsistent Model Type Reference

The documentation in docs/npu.md refers to qwen3 as the model type for the NPU engine, but the actual implementation may differ. This inconsistency should be verified to ensure that the documentation accurately reflects the current model type used by the NPU engine.

decodes the first layout.
MTP Speed Numbers

The documentation in docs/serve.md provides specific speed numbers for MTP on HRX (36.0 / 26.8 / 29.9 tok/s), but these numbers are based on measurements taken on the removed Vulkan build and have not been repeated on HRX. This could mislead users about the actual performance on HRX.

On HRX, Qwen3.8-27B UD-Q4_K_XL with its MTP head (default draft length 3, greedy 256-token chats,
medians of 3 fresh servers) decodes at **36.0 / 26.8 / 29.9 tok/s** on code / prose / short, up
from 25.9 / 20.5 / 21.9, since our HIP kernels check 2 to 8 drafted tokens in one pass: the 4-token
verify step went from 121.5 to 88.0 ms ([#487](https://github.com/1bit-MONSTER/engine/pull/487)).

⚠️ Review coverage: The following files were not included in this review because of the token budget:

  • docs/lemonade.md
  • docs/hrx.md

bong-water-water-bong added a commit that referenced this pull request Oct 29, 2026
…ump-laya.yml keeps them

docs/laya.md's "The pin" table names bump-laya.yml as the thing that keeps both rows current,
but bump-laya.yml only moves third_party/laya and config/laya.json -- it never writes the doc.
So both rows had rotted:

  - Source: said `6d942c92`; the gitlink has been `b9fe351c` since #611 and is `fe9a6c35` here.
  - Checkpoints: said revision `55cf4c4e`; config/laya.json has been `7b928d82` since #317
    (37cf390). docs/laya.md was last edited in #488.

Set both to what this branch actually pins, so the doc and the gitlinks agree:

  git ls-tree HEAD third_party/laya -> fe9a6c35023a7d94102e7feaaeaae8857d9d1b07
  config/laya.json revision         -> 7b928d828b7b0e022f929d9bd2e44165aa270148

The durable fix is for bump-laya.yml to rewrite these two rows as it bumps, so they cannot drift
again. I cannot make that change here: pushing a file under .github/workflows needs a token with
the `workflow` scope and this one has only gist/read:org/repo --

  ! [remote rejected] tmp/scope-probe -> tmp/scope-probe (refusing to allow an OAuth App to
    create or update workflow `.github/workflows/bump-laya.yml` without `workflow` scope)
bong-water-water-bong added a commit that referenced this pull request Oct 29, 2026
* Bump Laya: source fe9a6c35023a, model 7b928d828b7b

* Laya: record this bump's pins in docs/laya.md, where the table says bump-laya.yml keeps them

docs/laya.md's "The pin" table names bump-laya.yml as the thing that keeps both rows current,
but bump-laya.yml only moves third_party/laya and config/laya.json -- it never writes the doc.
So both rows had rotted:

  - Source: said `6d942c92`; the gitlink has been `b9fe351c` since #611 and is `fe9a6c35` here.
  - Checkpoints: said revision `55cf4c4e`; config/laya.json has been `7b928d82` since #317
    (37cf390). docs/laya.md was last edited in #488.

Set both to what this branch actually pins, so the doc and the gitlinks agree:

  git ls-tree HEAD third_party/laya -> fe9a6c35023a7d94102e7feaaeaae8857d9d1b07
  config/laya.json revision         -> 7b928d828b7b0e022f929d9bd2e44165aa270148

The durable fix is for bump-laya.yml to rewrite these two rows as it bumps, so they cannot drift
again. I cannot make that change here: pushing a file under .github/workflows needs a token with
the `workflow` scope and this one has only gist/read:org/repo --

  ! [remote rejected] tmp/scope-probe -> tmp/scope-probe (refusing to allow an OAuth App to
    create or update workflow `.github/workflows/bump-laya.yml` without `workflow` scope)

---------

Co-authored-by: laya-bump <laya-bump@users.noreply.github.com>
Co-authored-by: bong-water-water-bong <bong-water-water-bong@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant