@tryhamster/gerbil 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +18 -16
  2. package/dist/{architectures-wan0swXu.mjs → architectures-Ol7yUmKf.mjs} +128 -68
  3. package/dist/architectures-Ol7yUmKf.mjs.map +1 -0
  4. package/dist/cli.mjs +8 -8
  5. package/dist/cli.mjs.map +1 -1
  6. package/dist/{defaults-9komdrbY.mjs → defaults-bJcmOaRG.mjs} +2 -2
  7. package/dist/defaults-bJcmOaRG.mjs.map +1 -0
  8. package/dist/frameworks/express.mjs +1 -1
  9. package/dist/frameworks/fastify.mjs +1 -1
  10. package/dist/frameworks/hono.mjs +1 -1
  11. package/dist/frameworks/next.d.mts +2 -2
  12. package/dist/frameworks/next.mjs +1 -1
  13. package/dist/frameworks/trpc.mjs +1 -1
  14. package/dist/gerbil-BjGA5L2E.mjs +4 -0
  15. package/dist/{gerbil-DZbWbIm2.d.mts → gerbil-CCVOEU-J.d.mts} +2 -2
  16. package/dist/{gerbil-DZbWbIm2.d.mts.map → gerbil-CCVOEU-J.d.mts.map} +1 -1
  17. package/dist/{gerbil-CQspp8fS.mjs → gerbil-Cv7rXGOV.mjs} +2 -2
  18. package/dist/{gerbil-CQspp8fS.mjs.map → gerbil-Cv7rXGOV.mjs.map} +1 -1
  19. package/dist/gpu/hooks.d.mts +27 -10
  20. package/dist/gpu/hooks.d.mts.map +1 -1
  21. package/dist/gpu/hooks.mjs +19 -12
  22. package/dist/gpu/hooks.mjs.map +1 -1
  23. package/dist/gpu/index.d.mts +2 -2
  24. package/dist/gpu/index.mjs +5 -5
  25. package/dist/{gpu-BYCQ5aTI.mjs → gpu-BWLMlkVW.mjs} +78 -21
  26. package/dist/gpu-BWLMlkVW.mjs.map +1 -0
  27. package/dist/{index-CKszv3lt.d.mts → index-CSLqgNu-.d.mts} +212 -133
  28. package/dist/index-CSLqgNu-.d.mts.map +1 -0
  29. package/dist/index.d.mts +2 -2
  30. package/dist/index.mjs +6 -6
  31. package/dist/integrations/ai-sdk.mjs +1 -1
  32. package/dist/integrations/langchain.mjs +1 -1
  33. package/dist/integrations/llamaindex.mjs +1 -1
  34. package/dist/integrations/mcp.d.mts +2 -2
  35. package/dist/integrations/mcp.mjs +4 -4
  36. package/dist/{mcp-CszII8GJ.mjs → mcp-C0yKaH39.mjs} +3 -3
  37. package/dist/{mcp-CszII8GJ.mjs.map → mcp-C0yKaH39.mjs.map} +1 -1
  38. package/dist/{moonshine-stt-DDUm5WfP.mjs → moonshine-stt-C4GKK-h5.mjs} +45 -5
  39. package/dist/{moonshine-stt-DDUm5WfP.mjs.map → moonshine-stt-C4GKK-h5.mjs.map} +1 -1
  40. package/dist/moonshine-stt-zJ9YEi1X.mjs +4 -0
  41. package/dist/{one-liner-DVche8Eg.mjs → one-liner-DfJh2O0X.mjs} +2 -2
  42. package/dist/{one-liner-DVche8Eg.mjs.map → one-liner-DfJh2O0X.mjs.map} +1 -1
  43. package/dist/repl-DTSxHD6t.mjs +9 -0
  44. package/dist/skills/index.d.mts +2 -2
  45. package/dist/skills/index.d.mts.map +1 -1
  46. package/dist/skills/index.mjs +3 -3
  47. package/dist/{skills-BQI-VSn2.mjs → skills-B5cDRVJ1.mjs} +2 -2
  48. package/dist/{skills-BQI-VSn2.mjs.map → skills-B5cDRVJ1.mjs.map} +1 -1
  49. package/package.json +1 -2
  50. package/dist/architectures-wan0swXu.mjs.map +0 -1
  51. package/dist/defaults-9komdrbY.mjs.map +0 -1
  52. package/dist/gerbil-tHnYb9nZ.mjs +0 -4
  53. package/dist/gpu-BYCQ5aTI.mjs.map +0 -1
  54. package/dist/index-CKszv3lt.d.mts.map +0 -1
  55. package/dist/moonshine-stt-BtR-KiSP.mjs +0 -4
  56. package/dist/repl-BYJA2U7t.mjs +0 -9
  57. package/docs/PROJECT-STATE.md +0 -321
  58. package/docs/adding-a-model-family.md +0 -280
  59. package/docs/ai-sdk.md +0 -205
  60. package/docs/architecture/README.md +0 -84
  61. package/docs/architecture/caching.md +0 -227
  62. package/docs/architecture/inference.md +0 -176
  63. package/docs/architecture/overview.md +0 -189
  64. package/docs/architecture/streaming.md +0 -261
  65. package/docs/architecture/webgpu.md +0 -213
  66. package/docs/browser.md +0 -762
  67. package/docs/cli.md +0 -155
  68. package/docs/embeddings.md +0 -156
  69. package/docs/frameworks.md +0 -90
  70. package/docs/gerbil-site-native-migration.md +0 -217
  71. package/docs/gpu-engine/architectures.md +0 -398
  72. package/docs/gpu-engine/ir.md +0 -372
  73. package/docs/gpu-engine/kernels.md +0 -718
  74. package/docs/gpu-engine/paper.html +0 -1759
  75. package/docs/gpu-engine/paper.md +0 -2109
  76. package/docs/gpu-engine/safetensors.md +0 -312
  77. package/docs/gpu-engine/tokenizer.md +0 -302
  78. package/docs/kernel-research-queue.md +0 -85
  79. package/docs/mcp-client.md +0 -224
  80. package/docs/mcp.md +0 -109
  81. package/docs/memory-rag.md +0 -91
  82. package/docs/memory.md +0 -301
  83. package/docs/metal-safari-intel.md +0 -190
  84. package/docs/mobile-failure-diagnosis.md +0 -124
  85. package/docs/mobile.md +0 -99
  86. package/docs/observability.md +0 -230
  87. package/docs/onnx-removal-plan.md +0 -339
  88. package/docs/repl.md +0 -473
  89. package/docs/research/autoresearch-portable.md +0 -933
  90. package/docs/research/dispatch-reduction-hivemind.md +0 -84
  91. package/docs/research/ios-safari-model-caching.md +0 -117
  92. package/docs/research/mobile-webgpu-speed-fusion.md +0 -135
  93. package/docs/research/native-stt-model-selection.md +0 -49
  94. package/docs/research/native-tts-model-selection.md +0 -90
  95. package/docs/research/native-vs-chromium-decision.md +0 -152
  96. package/docs/research/nemotron-mamba2-inference.md +0 -910
  97. package/docs/research/qwen35-multimodal.md +0 -293
  98. package/docs/research/qwen36-gemma4-targets.md +0 -337
  99. package/docs/research/sota-embedding-models.md +0 -179
  100. package/docs/research/sota-mobile-models-2026.md +0 -263
  101. package/docs/research/sota-modality-models.md +0 -202
  102. package/docs/research/tps-baselines.md +0 -71
  103. package/docs/research/webgpu-m4-reference.md +0 -104
  104. package/docs/site-update-plan.md +0 -155
  105. package/docs/skills.md +0 -261
  106. package/docs/structured-output.md +0 -123
  107. package/docs/stt.md +0 -111
  108. package/docs/tools.md +0 -304
  109. package/docs/tts.md +0 -147
  110. package/docs/vision.md +0 -158
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CKszv3lt.d.mts","names":[],"sources":["../src/gpu/vocab-prune.ts","../src/gpu/ir.ts","../src/gpu/architectures/index.ts","../src/gpu/device.ts","../src/gpu/tokenizer.ts","../src/gpu/weight-source.ts","../src/gpu/model-loader.ts","../src/gpu/sampler.ts","../src/gpu/vision-preprocess.ts","../src/gpu/defaults.ts","../src/gpu/architectures/gemma4_vision.ts","../src/gpu/architectures/kani_tts.ts","../src/gpu/architectures/moonshine.ts","../src/gpu/architectures/qwen3_5_vision.ts","../src/gpu/executor.ts","../src/gpu/kani-tts.ts","../src/gpu/moonshine-executor.ts","../src/gpu/moonshine-stt.ts","../src/gpu/vision-executor.ts","../src/gpu/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import "./architectures-wan0swXu.mjs";
2
- import { t as MoonshineSTT } from "./moonshine-stt-DDUm5WfP.mjs";
3
-
4
- export { MoonshineSTT };
@@ -1,9 +0,0 @@
1
- import "./gerbil-CQspp8fS.mjs";
2
- import "./utils-DKO55ZmZ.mjs";
3
- import "./one-liner-DVche8Eg.mjs";
4
- import "./architectures-wan0swXu.mjs";
5
- import "./skills-BQI-VSn2.mjs";
6
- import "./tools-DQ1mPUw5.mjs";
7
- import { n as startRepl, t as setCleanupPromise } from "./cli.mjs";
8
-
9
- export { setCleanupPromise };
@@ -1,321 +0,0 @@
1
- # Gerbil — Project State & Architecture Decision
2
-
3
- **As of 2026-06-14.** The single authoritative snapshot. When something here conflicts
4
- with an older doc, this wins. Supersedes scattered findings in `docs/research/*` and
5
- the paper's roadmap. **Newest material is §12** (native audio begins — Moonshine STT
6
- + Kani-TTS-2 NanoCodec decoder; Gemma 4 E2B text decode; on-device memory/RAG; the
7
- text+ViT autoresearch campaign; gerbil-site live on the native engine). §11 captured
8
- EmbeddingGemma on-device, LFM2.5, the SPM tokenizer fix, MLX/DWQ loader, progress fix.
9
-
10
- ---
11
-
12
- ## 1. What Gerbil is
13
-
14
- A local LLM inference library that runs models in the browser and Node on a
15
- **single native WebGPU engine** behind one task API (no fallback lane — §2). The
16
- headline achievements this cycle: the from-scratch native engine **works on mobile**
17
- (iPad/iOS Safari 26.5+, WebKit) — previously it crashed — a desktop optimization
18
- pass roughly doubled its throughput, and the engine went **multimodal natively**:
19
- text embeddings ship (Qwen3-Embedding-0.6B) and the Qwen3.5 vision encoder is built
20
- **bit-exact vs HuggingFace** (vision LM-integration is phase 2).
21
-
22
- ## 2. The decided architecture — NATIVE-ONLY (owner decision, overrides the panel)
23
-
24
- **Decision (owner, 2026-06-13):** Gerbil is a single native WebGPU engine. **No
25
- tfjs fallback lane** — a permanent fallback "assumes defeat to begin with." The
26
- panel proposed keeping tfjs as a breadth lane; the owner rejected that. Instead:
27
-
28
- - **Launch set = text + vision + embeddings, ALL native.** One model per modality
29
- by default, expandable to other families via the add-model-family process.
30
- - **Audio (TTS/STT) is deferred, not delegated to tfjs** — it ships later as
31
- small *native* models (candidates under eval: VibeVoice-1.5B, OmniVoice,
32
- dots.tts-soar for TTS — IF they publish safetensors; Moonshine for STT). "What's
33
- the big deal" — launching without audio is fine; a permanent second engine is not.
34
- - **tfjs is at most temporary dev scaffolding, not a destination.** It may stay
35
- briefly to keep desktop demos working during the native build, but it is being
36
- removed, not kept as a lane. `chrome-backend.ts` is deleted outright.
37
- - **Vision uses Qwen3.5's OWN built-in ViT** (we currently skip its 192MB tower) —
38
- one multimodal model, not a separate vision model. Stop dropping it "like idiots."
39
- - **A thin onnxruntime-web bridge is a break-glass option only** — used solely if
40
- a needed model has no extractable weights AND no native alternative. Not a lane.
41
-
42
- **Status update (2026-06-13):** both next modalities have landed natively.
43
- **Embeddings ship** (Qwen3-Embedding-0.6B, validated). The **vision encoder is
44
- DONE** — the Qwen3.5 ViT runs natively and is **bit-exact vs HF transformers 5.12**
45
- (per-token cosine 1.000000). The earlier "parallel attention kernel first" gate was
46
- based on a misread of dead code (§5): the attention kernel was already parallel, and
47
- non-causal was a one-line `is_causal` flag, not a rewrite. The remaining vision work
48
- is **LM-side integration** (M-RoPE, token splice, image preprocessing) — phase 2,
49
- plumbing over a verified core. Audio follows once a native small model is validated.
50
-
51
- ## 3. Capability matrix (what's true today)
52
-
53
- Native-only. The "tfjs lane" is gone — tfjs is temporary dev scaffolding being
54
- removed (§2), not a capability path.
55
-
56
- | Modality | Native status |
57
- |---|---|
58
- | Text | ✅ ~51 tok/s mobile (sustained 200-tok), ~207 desktop, bit-correct |
59
- | Text (alt family) | ✅ **LFM2.5-350M LANDED** (`Lfm2ForCausalLM`, hybrid conv/attn): ~600 tok/s desktop (2.8× Qwen), ~46 tok/s mobile, ~199MB q4, no new kernels |
60
- | Embeddings | ✅ **DONE + ON iPad** — **EmbeddingGemma-300M** (bidirectional Gemma3 encoder, 173MB MLX-4bit) runs on iPad Safari; cos=1.00000 vs NumPy ref, Mars/bread margin >0.1, dim 768. First non-Qwen embedder. (Qwen3-Embedding-0.6B still works on desktop but OOMs iPad at 1.2GB BF16.) |
61
- | Vision (image) | ✅ **END-TO-END DONE** — Qwen3.5 ViT, bit-exact vs HF (cosine 1.000000); `describeImage()` word-identical to HF; runs on iPad |
62
- | Text model families (Llama/Mistral/Gemma) | 🟢 cheap — now usually **Tier-1, generator-only, NO new kernels** (kernel library saturated for standard transformers) |
63
- | Text (Gemma 4 E2B) | ✅ **COHERENT on q4** (`gemma4.ts`): "capital of France"→"Paris", ~83 tok/s, all 35 layers cos≥0.998 vs MLX-LM. PLE, KV-share (20 layers), proportional/dual-theta RoPE, GeGLU, `Softcap`, double-wide MLP, V-norm, per-node `attn_scale`, head_dim-512 attention. **PLE CPU-streamed (0 MB GPU)** — not GPU-sharded |
64
- | STT | 🟢 **Moonshine native LANDED** (`moonshine.ts`, `moonshine-executor.ts`, `moonshine-stt.ts`): raw-waveform Conv1d front-end (no FFT/log-mel), bit-exact `CrossAttention` kernel (max|err|<2e-4, cos≥0.9999), dual-graph encode-once/frozen-K-V/AR-decode, interleaved RoPE. Encoder cos≈0.990 vs HF; transcript substring-matches HF refs. **Whisper(ONNX) stays as multilingual / no-GPU fallback** (`src/core/stt.ts`) |
65
- | TTS | 🟡 **Kani-TTS-2 partial** (`kani_tts.ts`): NanoCodec decoder (FSQ + causal HiFi-GAN) **LANDED + validated bit-exact** (`test-nanocodec-decode.mjs`, gate err<1e-3, measured ~4.2e-6). LFM2-350M codec-LM backbone scaffolded; **AR-loop glue remaining** (frame positions + learnable RoPE + 4-token-frame decode). License: kani-tts-2-en = LFM1.0/other; 450m variant = Apache |
66
- | Memory / RAG | ✅ **SHIPPED** (`src/memory/`, `@tryhamster/gerbil/memory`): vector store (in-memory/IndexedDB/file), token-budgeted `recall()`, chunking, redaction, native EmbeddingGemma adapter. 12/12 tests. No new kernels |
67
- | No-WebGPU / old devices | not targeted — engine throws a clear error rather than degrading |
68
-
69
- ## 4. Performance baselines (re-confirm before quoting)
70
-
71
- | Platform | Config | Decode tok/s | Note |
72
- |---|---|---|---|
73
- | M4 Max, node-dawn | optimized | ~207 | re-confirm on a cooled run; numbers between commit 2f0cabc and the isMetalBackend fix are invalid |
74
- | iPad (iOS 26.5) native | batch-all | ~41 (cooled, consistent) | NOT thermal — confirmed; Dawn-tuned autoresearch wins did NOT transfer to Metal (was ~51 pre-optimization) |
75
- | iPad native, submit floor | group=1 awaited | 6–8 | proven-correct floor |
76
- | iPad transformers.js (same model) | WebGPU | 7–12 | ~5× slower than native |
77
-
78
- ## 5. Vision — DONE at the encoder level (bit-exact vs HF)
79
-
80
- The native Qwen3.5 vision encoder is **built and validated bit-exact** against HF
81
- transformers 5.12: **per-token cosine = 1.000000, max abs err ~5e-6**. Exposed as
82
- `engine.encodeImage(patches, gridTHW)` → merged image tokens `[rows, 1024]`. See
83
- paper §22 and `src/gpu/architectures/qwen3_5_vision.ts`, `src/gpu/vision-executor.ts`,
84
- `src/gpu/vision-preprocess.ts`.
85
-
86
- The earlier strategy panel claimed native vision was blocked on a single-threaded
87
- attention kernel. **That was wrong** — it read `src/gpu/kernels/wgsl/attention.wgsl`,
88
- a STALE reference file **not imported anywhere** (kernels are embedded strings in
89
- `registry.ts`; the dead `.wgsl` files have been deleted). What actually shipped:
90
-
91
- 1. **The live attention kernel was already parallel** — `WGSL_ATTENTION` is a
92
- tiled, online-softmax (flash-attention-style) kernel. No thread-0 serialization,
93
- no rewrite needed.
94
- 2. **Non-causal was a one-line flag.** An `is_causal` uniform
95
- (`S_eff = is_causal ? min(S, causal_limit) : S`) makes it bidirectional for the
96
- ViT; text stays causal by default. Done.
97
- 3. **Patch-embed was NOT a new Conv3d kernel.** Patches arrive pre-flattened to
98
- `[N, 1536]` from the host image processor, so the 5-D unfold/Conv3d collapses to
99
- a plain `MatMul` + `AddBias`. New ops added were small: `AddBias`, `GeluErf`
100
- (exact-erf merger GELU), `ApplyRotaryEmb` (2D rotary), `SliceCols` (fused-QKV
101
- split) — plus host-side pos-embed/rotary precompute (grid-only, bit-exact).
102
- 4. **A real bug surfaced during validation:** `WGSL_GELU` returned NaN for large
103
- args on Metal/Dawn (`x³` overflow into fast-math `tanh`); fixed by clamping the
104
- inner arg to ±15.
105
-
106
- **Net: vision is done at the encoder level.** Remaining work is **LM-side
107
- integration** (M-RoPE, image-token splice into the text stream, pixel→patch
108
- preprocessing) — phase 2, bounded plumbing over a verified numerical core. The
109
- ViT prefill runs through the same parallel attention as text, so there is no
110
- separate mobile attention risk; on-device ViT speed is a measure-when-integrated
111
- item, not a feasibility gate.
112
-
113
- ## 6. Build sequence (ordered)
114
-
115
- 1. ~~**Native embeddings**~~ — **DONE.** Qwen3-Embedding-0.6B (`Qwen3ForCausalLM`): last-token EOS pooling + `L2Norm` tail. Validated: dim 1024, unit norm, cos(similar)=0.81 > cos(unrelated)=0.56. Confirmed causal-LM-pooling. `engine.embed()`.
116
- 2. ~~**OPFS model cache**~~ — **resolved differently: OPFS removed.** Main-thread OPFS `createWritable` is broken on iOS (leaves unclearable junk that fills the quota). The loader is now **Cache-API-only**. Durable iOS caching needs a PWA (§ paper 24, `docs/research/ios-safari-model-caching.md`), not OPFS.
117
- 3. ~~**Native vision encoder**~~ — **DONE, bit-exact vs HF** (§5). Remaining: LM-side integration (M-RoPE, token splice, image preprocessing) — phase 2.
118
- 4. **Vision LM integration (phase 2)** — splice `encodeImage()` tokens into the text stream: M-RoPE position assignment, placeholder-token splice, host pixel→patch preprocessing. Plumbing over a verified encoder.
119
- 5. **Close the mobile WebKit correctness/perf sweep** — `?group=N` + Test-R bisect on real iOS 26.5 for a stable fast-and-correct submit config above the group=1 floor; re-measure desktop.
120
- 6. **Llama/Mistral/Gemma graph generator** — ~90% is the existing qwen2 generator; unlocks most of the HF text zoo. Low risk, high ROI.
121
- 7. **Remove tfjs scaffolding** — delete `chrome-backend.ts`. The engine is native-only; tfjs was temporary dev scaffolding, not a kept lane.
122
- 8. **Audio, native (deferred, not delegated)** — TTS: **OmniVoice** (Qwen3 backbone + codec decoder — mostly the existing text path + a decoder). STT: **Moonshine** (lean encoder-decoder; raw-waveform Conv1d frontend, no log-mel Conv2d; needs a parallel CrossAttention kernel). Ship once a native small model clears the mobile bar.
123
-
124
- ## 7. What NOT to build
125
-
126
- - **A second permanent engine / kept tfjs lane** — the architecture is native-only across text + vision + embeddings. tfjs is temporary scaffolding being removed, not a breadth lane.
127
- - **A Conv3d/unfold patch-embed kernel for the ViT** — not needed; patches arrive pre-flattened, so patch-embed is a plain MatMul + AddBias (§5).
128
- - **A heavyweight native TTS pipeline with custom vocoder kernels now** — audio is deferred; when it lands, OmniVoice's Qwen3 backbone reuses the text path. A thin onnxruntime-web bridge stays break-glass-only.
129
- - **A general Conv2d kernel / Whisper-on-native** — Moonshine's raw-waveform Conv1d avoids the log-mel Conv2d.
130
- - **An OPFS write path on iOS** — main-thread `createWritable` is broken; durable caching is a PWA concern, not an OPFS one.
131
- - **Trusting stale tok/s numbers** between 2f0cabc and the isMetalBackend fix.
132
-
133
- ## 8. Open spikes (measure before committing)
134
-
135
- - ~~**Embedder pooling direction**~~ — RESOLVED: causal-LM last-token (EOS) pooling, validated.
136
- - ~~**Parallel non-causal attention feasibility for the ViT**~~ — RESOLVED: the live attention kernel was already parallel; non-causal is a one-line `is_causal` flag; the encoder is bit-exact. Remaining ViT spike: **on-device ViT prefill speed on a real iPad** (measure when LM-integration lands; not a feasibility gate).
137
- - **Mobile WebKit submit config** — does `?group=N`/Test-R land a stable fast config above the group=1 floor on iOS 26.5? The critical path.
138
- - **Vision LM-integration correctness** — M-RoPE + token splice must stay bit-exact end-to-end (image+text), not just at the encoder boundary.
139
- - **Native audio on mobile** — OmniVoice (codec-decoder) and Moonshine (CrossAttention kernel) latency/correctness once a candidate is validated.
140
- - **Autoresearch on-device tax** — desktop kernel wins did NOT transfer to mobile (41 vs 51); the loop needs a mobile-validation leg, possibly per-backend tunings.
141
-
142
- ## 9. Decision log (this cycle)
143
-
144
- - Mobile native inference fixed (four-bug diagnosis: jetsam memory, WebKit visibility, attention race, detection predicate). See `docs/mobile-failure-diagnosis.md`, paper §17–19.
145
- - Desktop 145→~207 via autoresearch (paper §20).
146
- - **Architecture decision: NATIVE-ONLY** across text + vision + embeddings; no tfjs fallback lane; `chrome-backend.ts` to be deleted (paper §23).
147
- - **Native embeddings shipped** — Qwen3-Embedding-0.6B, last-token EOS pool + L2Norm, validated (paper §21).
148
- - **Native vision encoder shipped** — Qwen3.5 ViT, bit-exact vs HF transformers 5.12 (cosine 1.000000); LM-integration is phase 2 (paper §22). Supersedes the earlier "skip the ViT" stance (`docs/research/qwen35-multimodal.md`).
149
- - **Vision feasibility corrected** — attention was already parallel (panel read a dead `.wgsl` file); non-causal is a one-line flag (paper §22–23, §5 above).
150
- - **OPFS removed** — main-thread `createWritable` broken on iOS; Cache-API-only loader; durable caching needs a PWA (`docs/research/ios-safari-model-caching.md`, paper §24).
151
- - Modality model picks (`docs/research/sota-modality-models.md`); chromium decision (`docs/research/native-vs-chromium-decision.md`); site update plan (`docs/site-update-plan.md`).
152
-
153
- ---
154
-
155
- ## 10. 2026-06-13 evening — multimodal milestone + in-flight work (CAPTURE)
156
-
157
- **Major wins this session (all committed to `feat/webgpu-engine-mobile`):**
158
-
159
- - **Native VISION end-to-end DONE & validated bit-exact** (commit `5fed12b`). `engine.describeImage({pixels,width,height})` → coherent description. Validated vs HF transformers 5.12 on `examples/skelly.png`: 7/7 checks — encoder cosine 1.000000, M-RoPE 3D position ids EXACT, spliced embeds cosine 1.0, first-token exact, full greedy description WORD-IDENTICAL to HF for 201 chars ("This is a detailed black-and-white line drawing of the skeleton of a fox…"). New ops: `MRoPE`, `EmbedSplice`, host image preprocessing (smart-resize/normalize/patchify in `vision-preprocess.ts`). Text path unchanged (M-RoPE on linear positions reduces to 1D RoPE).
160
- - **Native EMBEDDINGS** (earlier commit): Qwen3-Embedding-0.6B works on DESKTOP (cosine 0.81>0.56). BUT **not iPad-viable** — only BF16 (~1.2GB, OOMs on-device) or a broken MLX-DWQ. → Pivot below.
161
- - **`is_causal` flag** on f32 attention (from vision) now unlocks **bidirectional encoders**.
162
-
163
- **The 51-vs-41 mobile throughput question — RESOLVED: NOT a regression.** t15 hit 51.7 on a 200-token sustained run; the 38-41 readings were 60-token runs (more warmup overhead/token). A fresh 200-token sustained run on the CURRENT (post-autoresearch-optimization) engine **hit ~51 again**. So the Dawn-tuned wins did NOT regress mobile; sustained mobile decode is ~51 tok/s. Lesson: benchmark with enough tokens (≥200) to be representative.
164
-
165
- **IN-FLIGHT / NOT YET MERGED (future-me: merge these):**
166
- - **LFM2.5-350M** — ✅ **LANDED** on `feat/webgpu-engine-mobile` (commit `3c4bac8`). Tier-1, no new kernels. **~600 tok/s desktop (2.8× Qwen3.5's ~213), ~199MB q4 (half Qwen), coherent, bit-exact vs NumPy ref.** Files: new `src/gpu/architectures/lfm2.ts` (824 lines), registered `Lfm2ForCausalLM`, LFM2 CANONICAL_KEYS, loader key-mapper. TWO GENERAL FIXES worth keeping: (1) effective FF dim is 4608 not config's 6656 (`block_auto_adjust_ff_dim` rounding — `multiple_of(⌊2/3·6656⌋)`); (2) **the "garbage output" was the CHAT TEMPLATE, not the graph** — LFM2.5 ships its template as a `chat_template.jinja` sidecar (absent from tokenizer_config.json), so the engine fell back to Qwen ChatML which auto-injects an empty `<think>` → newline loop. Fix: fetch the `.jinja` sidecar + gate think-injection on the template actually emitting `<think>`. This fix helps ANY model with a jinja sidecar. Verdict: LFM2.5 is a viable faster/smaller text-default alternative to Qwen — user picks.
167
- - **EmbeddingGemma-300M** — ✅ **LANDED + CONFIRMED ON iPad** (commit `4874d01`, see §11). The iPad-ready embedding model (~173MB q4, MTEB 68.36, standard MLX-4bit). Bidirectional Gemma3 encoder — needs the new generator + a MeanPool kernel + dual-theta RoPE + 2 Dense head layers + the MLX-detection loader fix (research found: detector requires `mode:"affine"` but standard MLX converts omit it → silently fall to F32; and DWQ vs standard MLX are config-indistinguishable → the DWQ-garbage trap). See `docs/research/sota-embedding-models.md`.
168
-
169
- **iPad harness:** dashboard at `https://<lan-ip>:8766/` with Text/Vision/transformers.js/Storage-probe/Clear-cache/Stop-queue buttons, live results table, `/results` + `/enqueue` + `/clear-queue` endpoints. Embeddings button removed until EmbeddingGemma lands. TODO: show generated text in the results + default Text benchmark to 200 tokens (representative); wire the Vision button to `describeImage` (needs browser ImageBitmap/Canvas→pixels decode).
170
-
171
- **iOS caching:** OPFS removed (main-thread createWritable broken on iOS, left unclearable junk). Durable cache needs a PWA (persist() only granted when installed). See `docs/research/ios-safari-model-caching.md`. Deferred.
172
-
173
- **Native modality scorecard (as of §10):** text ✅, vision ✅ (end-to-end bit-exact), embeddings ✅ desktop / iPad-pending (EmbeddingGemma building), LFM2.5 text-alt ✅ (pending merge). Audio (TTS/STT) deferred to native OmniVoice/Moonshine. **The native-only multimodal engine is real.** **→ All "pending/building" items above have since landed; see §11.**
174
-
175
- ---
176
-
177
- ## 11. 2026-06-14 — EmbeddingGemma on-device, LFM2.5 landed, loader hardening (CAPTURE)
178
-
179
- The §10 in-flight items all landed on `feat/webgpu-engine-mobile`. New wins this session
180
- (paper §25–§30 document each in depth):
181
-
182
- - **EmbeddingGemma-300M LANDED and CONFIRMED RUNNING ON iPad Safari** (commit `4874d01`).
183
- First **non-Qwen** embedding family — a real **bidirectional Gemma3 encoder**
184
- (`src/gpu/architectures/gemma3_encoder.ts`, `generateGemma3EncoderGraph`): 24 pre-norm
185
- blocks, GQA 3q/1kv head_dim 256, per-head q/k-norm, **dual-theta RoPE** (sliding θ=10000
186
- / full θ=1e6 selected per layer from `layer_types`), GeGLU MLP, Gemma's **four-norm
187
- sandwich**, embed ×√768, tail **MeanPool → Dense0(768→3072) → Dense1(3072→768) → L2Norm**.
188
- **173 MB at MLX-4bit** (vs the abandoned 1.2 GB Qwen3-Embedding that OOM'd iPad).
189
- Two new kernels only: **MeanPool**, **Scale** (`kernels/registry.ts`). Validated
190
- **cos=1.00000 vs an independent NumPy reference** (`scripts/engine/test-embedding-gemma-reference.py`),
191
- reference gate `cos>0.95`; semantic test asserts a Red-Planet query is closer to two
192
- Mars docs than to a bread doc by **>0.1 cosine margin**, unit-norm dim-768, no NaN. The
193
- engine **generalizes across embedding families**, not just Qwen.
194
-
195
- - **SPM tokenizer fix (load-bearing, cross-family)** (`src/gpu/tokenizer.ts`). Gemma's
196
- `tokenizer.json` is `type:"BPE"` but **SentencePiece-flavored** (▁/U+2581 spaces, raw
197
- UTF-8 tokens, array-form merges, `<0xHH>` byte-fallback). The byte-level (`Ġ`) BPE path
198
- was char-splitting every word → semantically dead embeddings that still passed norm/NaN
199
- checks. Auto-detected `spmMode` (structural: `" "→"▁"` Replace normalizer **or**
200
- `byte_fallback && "▁the" in vocab`) now drives encode/decode/merges; **Qwen/LFM2 stay
201
- byte-level** (no model-name list — they just don't match). Lesson: `type:"BPE"` ≠
202
- byte-level BPE; any SentencePiece-lineage family (Gemma/Llama/Mistral) needs this path.
203
-
204
- - **MLX-4bit loader hardened** (`src/gpu/model-loader.ts`). (1) Detection broadened to
205
- accept mode-less `{bits:4, group_size}` configs (standard mlx-lm omits `mode`). (2) A
206
- `VERIFIED_MLX_REPOS` allowlist (currently `mlx-community/embeddinggemma-300m-4bit`) gates
207
- mode-less configs. (3) **Explicit DWQ reject** — DWQ repos carry an identical
208
- `{bits:4,group_size}` config but pack weights that dequant to garbage, so they're rejected
209
- by repo-name substring (`includes("dwq")`). Codifies the MLX-DWQ-garbage trap. (4) Gemma's
210
- `(1+weight)` RMSNorm absorption is **baked by the loader even for MLX** (mlx-lm pre-absorbs
211
- +1 for Qwen3.5 but NOT for Gemma — the Gemma branch deliberately omits `&& !isMLX`).
212
-
213
- - **Progress-reporting fix** (commit `682a09b`, `model-loader.ts`). The bar froze at
214
- "10% discovering weight files" because the gap between that emit and the first download
215
- chunk (index probe + 2 header range-requests + first-byte latency) emitted nothing. Now
216
- emits "Reading {file} header" + "Downloading {file} (0/{N} MB)" up front. **Affected every
217
- model**; fixed universally.
218
-
219
- - **LFM2.5-350M landed** (commit `3c4bac8`) — Tier-1, no new kernels, ~600 tok/s desktop /
220
- ~46 tok/s mobile, ~199 MB q4. The general jinja-sidecar chat-template fix from it helps any
221
- model shipping `chat_template.jinja`.
222
-
223
- - **Cross-device multi-modal parity.** Text (Qwen3.5 ~51 tok/s, LFM2.5 ~46 tok/s), vision
224
- (Qwen3.5 ViT `describeImage`), and embeddings (EmbeddingGemma) **all now run natively on
225
- iPad Safari** — the native engine reaches transformers.js-path modality coverage on the
226
- modalities that matter, without the mobile crashes and ~5× faster. **Remaining native gap:
227
- audio** — TTS via OmniVoice (in progress), STT via Moonshine (not started).
228
-
229
- - **Effort-tier shift.** Adding a new TEXT family is now usually **Tier-1: generator only, no
230
- new kernels** — the kernel library has saturated for standard transformers (Llama/Mistral/
231
- Gemma-text reuse existing ops). New kernels are needed only for genuinely novel ops (SSM,
232
- PLE, new norms, cross-attention). See `docs/adding-a-model-family.md`.
233
-
234
- - **Site migration assessment** written: `docs/gerbil-site-native-migration.md` (how the
235
- marketing/docs site can move its in-browser inference from the transformers.js/ONNX worker
236
- to the native engine, modality-by-modality, with the no-fallback device-coverage tradeoff
237
- stated plainly). Assessment only — the site repo was not modified.
238
-
239
- ---
240
-
241
- ## 12. 2026-06-14 — native audio begins, Gemma 4, memory/RAG, autoresearch campaign (CAPTURE)
242
-
243
- This session pushed past the §11 "multimodal parity minus audio" milestone. Paper
244
- **§31–§35** document each in depth. The decided order from §6 (audio last, native not
245
- delegated) held — and audio is now *under way natively*, not deferred to tfjs.
246
-
247
- - **Native STT — Moonshine LANDED** (`src/gpu/architectures/moonshine.ts`,
248
- `moonshine-executor.ts`, `moonshine-stt.ts`; paper §31). Chosen over Whisper to avoid
249
- a log-mel/Conv2d front-end: it consumes **16 kHz PCM directly** through three strided
250
- `Conv1d`s (downsample 384×, ~41.6 frames/s) — new kernels `Conv1dFull`, `GroupNorm`,
251
- `Tanh`, `Transpose`. The real new attention primitive is **`CrossAttention`**
252
- (`WGSL_CROSS_ATTENTION`, tiled online-softmax), validated **bit-exact vs NumPy**
253
- (`test-crossattention.mjs`: max|err|<2e-4, cos≥0.9999). Runtime is a **dual graph**:
254
- `MoonshineEncoderExecutor.encode()` runs the front-end + bidirectional encoder once and
255
- freezes per-decoder-layer K/V; `MoonshineSTT.transcribe()` runs greedy AR decode with
256
- self- + cross-attention into that frozen K/V. **Interleaved RoPE** (`ROPE_INTERLEAVED_SPEC`,
257
- adjacent-dim pairing) vs the default split-half. Validation: encoder cos≈0.990 vs HF
258
- (source comment); `test-moonshine-transcribe.mjs` asserts transcript contains HF-ref
259
- substrings; RTF/4-bit size are computed-and-reported, not hardcoded-asserted.
260
- **Whisper(ONNX) stays the multilingual / no-WebGPU fallback** (`src/core/stt.ts`,
261
- `WhisperSTT`) — separate, untouched.
262
-
263
- - **Native TTS — Kani-TTS-2 (partial)** (`src/gpu/architectures/kani_tts.ts`; paper §32).
264
- The hard novel piece — the **NanoCodec decoder** (FSQ 4×4 levels `[9,8,8,7]`, mixed-radix
265
- base `[1,9,72,576]` + causal HiFi-GAN, rates `[7,7,6,3,2]`, hop 1764 @ 22050 Hz) — is
266
- **implemented and validated bit-exact** (`test-nanocodec-decode.mjs`, gate `err<1e-3`,
267
- measured ~4.2e-6 vs MLX). New kernels: `FSQDequant`, `HalfSnake1d`,
268
- `ConvTranspose1dDepthwise`. The backbone is **LFM2-350M** (`KaniTTS2ForCausalLM`, audio
269
- tokens above the text vocab, 4/frame); `generateKaniTtsGraph` **deliberately throws** —
270
- remaining is the frame-position + learnable-RoPE + 4-token-frame AR-decode glue (most
271
- block math reused from `lfm2.ts`). License: **kani-tts-2-en = LFM1.0 (other)**, NanoCodec
272
- = NVIDIA OML; the **450m variant is Apache** (same arch).
273
-
274
- - **Gemma 4 E2B — text decode COHERENT on real q4 weights** (`src/gpu/architectures/gemma4.ts`;
275
- paper §33). **Tier-2**, no MatFormer/AltUp/LAuReL. **PLE** (2nd embedding gathered per
276
- token, per-layer gate+GELU+multiply+project+norm+residual), **KV-cache sharing** (E2B: 35
277
- layers, last **20** shared via graph-rewire, no kernel change), **proportional RoPE**
278
- (rotate 0.25·head_dim=64 dims but inv_freq over full head_dim denom; dual-theta 1e6/1e4),
279
- **GeGLU**, and a new **`Softcap`** kernel (`cap·tanh(x/cap)`, cap=30) on final logits.
280
- Generates coherently ("The capital of France is" → "Paris") at ~83 tok/s; all 35 layers
281
- match an MLX-LM reference cos≥0.998 with identical argmax (`test-gemma4-perlayer.mjs`).
282
- Structural validation **67/67** (`test-gemma4-graph.mjs`; 942 nodes); softcap kernel
283
- separately validated (`test-gemma4-softcap.mjs`, max err<1e-4). **PLE is CPU-streamed, not
284
- GPU-sharded**: the ~1.17 GB q4 PLE table stays CPU-resident (**0 MB GPU**) and the executor
285
- streams per-token rows each step — Gemma 4's intended flash design, mobile-viable, and it
286
- sidesteps the per-binding cap. Coherence required four fixes: per-node `attn_scale`=1.0
287
- (HF scaling=1.0; default 1/√head_dim keeps other models byte-identical), parameter-free
288
- V-norm, double-wide MLP on the KV-shared layers, and head_dim-512 support in the flash
289
- attention kernel (second per-thread accumulator + smem-capped tiling, 16 KB invariant kept).
290
-
291
- - **On-device Memory / RAG SHIPPED** (`src/memory/`, `@tryhamster/gerbil/memory`; paper §34).
292
- Pluggable vector store (`InMemoryStore` / `IndexedDBStore` / `FileStore`), token-budgeted
293
- `recall()` (default 1024-token greedy pack, ~4-chars/token, returns `{context, records,
294
- tokensUsed}`), overlapping-window chunking (1000/200), write-time redaction (regex →
295
- `[REDACTED]` or fn), and a `createGerbilEmbedder()` adapter over **native EmbeddingGemma**.
296
- **12/12 tests** (`src/memory/memory.test.ts`). No new kernels — a clean consumer of the
297
- embedding modality.
298
-
299
- - **Autoresearch TPS campaign — 3 more batches** (`scripts/engine/results.jsonl`,
300
- `scripts/engine/chart.html`; paper §35), M4 Max / node-dawn. Verified peaks:
301
- **Qwen3.5-0.8B 219→~234 tok/s**, **LFM2.5-350M 624→~672 tok/s**, **ViT encode
302
- 581.8→~502 ms (−~14%)**, **`describeImage` 37.0→42.0 tok/s (+13.5%)** — all kept changes
303
- bit-exact (merged cos 1.0, e2e 7/7). **The winning lesson (sharpened):** desktop wins come
304
- only from eliminating **large wide reads on poorly-occupied kernels** (fused conv+activation,
305
- vec4 + register-blocked + f16-mixed ViT matmul, `MatMul+AddBias→MatMulBias`); **pure
306
- dispatch-count cuts on already-tuned kernels are noise** (butterfly reduce, subgroup
307
- shuffle, bigger N-tiles all reverted). The INT4 matmuls and Mamba SSM sit at the
308
- **bandwidth floor** — the remaining headroom is **mobile**, not desktop (several
309
- reverted-on-desktop fusions are *predicted mobile wins*; the loop's next leg is a
310
- mobile-validation pass).
311
-
312
- - **gerbil-site is LIVE on the native engine.** The marketing/docs site's in-browser
313
- inference now runs on the native WGSL engine (no longer the transformers.js/ONNX worker)
314
- for the migrated modalities — see `docs/gerbil-site-native-migration.md`. (The §11 entry
315
- was an assessment-only; this cycle it went live.)
316
-
317
- **Native modality scorecard (as of §12):** text ✅ (Qwen3.5, LFM2.5), text-alt families 🟢
318
- Tier-1, Gemma 4 E2B 🟡 (decode validated, sharding gates real weights), vision ✅ (Qwen3.5
319
- ViT, on iPad), embeddings ✅ (EmbeddingGemma, on iPad), **STT ✅ native (Moonshine) + Whisper
320
- fallback**, **TTS 🟡 (Kani NanoCodec decoder validated, backbone AR loop pending)**, memory/RAG
321
- ✅ shipped. **Audio is no longer the deferred gap — STT is native; TTS is one AR-loop away.**