anyformer 0.4.16 → 0.4.17
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.
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/src/backends/diskformer.js +11 -0
- package/src/models.js +5 -1
- package/src/sources.js +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.17 — 2026-10-30
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `MODELS.chat.CLOVER_35B_A3B`: Diffuspace's Clover-35B-A3B-Preview (Apache-2.0), block diffusion on Qwen3.6-35B-A3B,
|
|
7
|
+
text only, on diskformer's `clover_moe_ssd.js` (Q4_0 GGUF, 19.6 GB, from OPFS; 4 GB budget). `diffusion` and
|
|
8
|
+
`experimental`; speed unmeasured. generate() yields once per committed 32-token block. Hub fixture at revision
|
|
9
|
+
32e22a0. Browser test `chat` passed (Chrome, this Mac, 23:17 IST, GGUF from Models2, 4 GB budget): load 55.6 s
|
|
10
|
+
including the copy into OPFS, an on-topic 25-token reply in 25.4 s.
|
|
11
|
+
- Browser test `chat` takes `?local=1` for a diskformer GGUF served from `--models`.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- diskformer pin 93193d0 → f17009c (v0.6.15: the Clover engine; `qwen35_moe_ssd.js` and `qwen3_moe_ssd.js` only learn
|
|
15
|
+
to accept the `clover_moe` architecture).
|
|
16
|
+
|
|
3
17
|
## 0.4.16 — 2026-10-30
|
|
4
18
|
|
|
5
19
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anyformer",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.17",
|
|
4
4
|
"description": "One call to run a model in a browser tab: anyformer reads the Hub repo, probes the browser, and picks the back end (transformers.js, LocalMind's WebGPU kernels, diskformer, kohra) that fits the model's format, architecture and your GPU budget.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -27,6 +27,17 @@ export const DISKFORMER_MODELS = [
|
|
|
27
27
|
engine: 'qwen35_moe_ssd.js', Engine: 'MiniCpmV47Ssd', minBudget: 4e9,
|
|
28
28
|
speeds: [[6.1e9, 14.1]],
|
|
29
29
|
},
|
|
30
|
+
// Clover-35B-A3B-Preview (Diffuspace, Apache-2.0): block diffusion on Qwen3.6-35B-A3B, text only. The engine
|
|
31
|
+
// (engines/clover_moe_ssd.js CLOVER_35B_A3B, rev 32e22a0) fills a 32-token block over several denoising passes
|
|
32
|
+
// (kohra's denoise module), so generate() yields once per committed block. Gated by diskformer (v0.6.15: oracle
|
|
33
|
+
// and browser chat) at a 1 GB expert pool and maxCtx 1024; speed unmeasured. At maxCtx 1024 the engine fixes about
|
|
34
|
+
// 2.0 GB (dense 1.46, KV and DeltaNet state 0.09, working buffers) and refuses under about 2.05 GB (diskformer's
|
|
35
|
+
// reading of its budget formula); 4 GB, Qwen3.6's floor, leaves about 1.9 GB of experts.
|
|
36
|
+
{
|
|
37
|
+
repo: 'Diffuspace/Clover-35B-A3B-Preview-GGUF', file: 'Clover-35B-A3B-Preview-Q4_0.gguf', size: 19586909600,
|
|
38
|
+
engine: 'clover_moe_ssd.js', Engine: 'CloverMoeSsd', minBudget: 4e9,
|
|
39
|
+
speeds: [],
|
|
40
|
+
},
|
|
30
41
|
// From LocalMind's gates (M4 Pro, 4 GiB pool; plan/2026-10-22-flint-harness): Flint ~7.3 GB on the GPU at maxCtx
|
|
31
42
|
// 8192 (dense 2.33, pool 4.29, KV 0.41, batch 0.20), 8.66 tok/s at lookahead 1. LFM2.5 24B ~16 tok/s at a 4 GiB
|
|
32
43
|
// pool; its total GPU use was not recorded, so it carries no speed estimate. The smallest working budget of either
|
package/src/models.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Models that pass a browser test through anyformer, grouped by what they do. Pass an entry to load() in place of a
|
|
2
2
|
// repo id; it carries the task and, where the back end needs one, the budget. DEFAULT is the smallest download that
|
|
3
3
|
// passed. `test` names the page under test/browser/ that proves the entry; test/models.test.js checks it exists.
|
|
4
|
-
// `diffusion: true` marks a text-diffusion model (the reply denoises in blocks); `experimental: true` marks an entry its
|
|
4
|
+
// `diffusion: true` marks a text-diffusion model (the reply denoises in blocks, so generate() chunks arrive a block at a time); `experimental: true` marks an entry its
|
|
5
5
|
// app shows as opt-in until that app's own checks pass; `audioOut: true` marks a model that can also answer in speech
|
|
6
6
|
// (generate({ speech: true })).
|
|
7
7
|
|
|
@@ -21,6 +21,8 @@ const MINICPM5_2B = M('openbmb/MiniCPM5-2B-GGUF', 'wllama', 'text-generation', '
|
|
|
21
21
|
const QWEN3_0_6B_MDLM = M('naklitechie/Qwen3-0.6B-diffusion-mdlm-ONNX', 'kohra', 'text-generation', 'kohra', { downloadBytes: 1.54e9, diffusion: true });
|
|
22
22
|
const NEMOTRON_DIFFUSION_3B = M('naklitechie/Nemotron-Labs-Diffusion-3B-ONNX', 'kohra', 'text-generation', 'kohra', { downloadBytes: 2.77e9, diffusion: true, experimental: true });
|
|
23
23
|
const GEMMA4_26B_A4B = M('google/gemma-4-26B-A4B-it-qat-q4_0-gguf', 'diskformer', 'text-generation', 'diskformer-chat', { budget: 2.5e9, downloadBytes: 14.44e9 });
|
|
24
|
+
// Block diffusion on Qwen3.6-35B-A3B: replies arrive one 32-token block at a time. Speed unmeasured.
|
|
25
|
+
const CLOVER_35B_A3B = M('Diffuspace/Clover-35B-A3B-Preview-GGUF', 'diskformer', 'text-generation', 'chat', { budget: 4e9, downloadBytes: 19.59e9, diffusion: true, experimental: true });
|
|
24
26
|
const LFM3_1_7B = M('LiquidAI/LFM3-1.7B-ONNX', 'transformers', 'text-generation', 'chat', { downloadBytes: 1.63e9 });
|
|
25
27
|
// transformers.js 4.3.2 has no lfm3_omni class, so diskformer's hand engine runs it; swap the entry to transformers.js
|
|
26
28
|
// when it adds the model.
|
|
@@ -57,6 +59,8 @@ export const MODELS = {
|
|
|
57
59
|
NEMOTRON_DIFFUSION_3B,
|
|
58
60
|
/** 26B parameters in 2.5 GB of GPU memory; 14.4 GB on disk (diskformer). */
|
|
59
61
|
GEMMA4_26B_A4B,
|
|
62
|
+
/** Diffuspace's Clover-35B-A3B-Preview: block diffusion on Qwen3.6-35B-A3B, 19.6 GB on disk; replies arrive in 32-token blocks (diskformer). */
|
|
63
|
+
CLOVER_35B_A3B,
|
|
60
64
|
/** NVIDIA's Nemotron 3.5 Bolt E4B (dense, text only), a community q4f16 ONNX export in Gemma 4 E4B's graph. */
|
|
61
65
|
NEMOTRON_3_5_BOLT_E4B,
|
|
62
66
|
/** LiquidAI's LFM3 1.7B (dense), LiquidAI's own ONNX export; thinking off unless a request asks for it. */
|
package/src/sources.js
CHANGED
|
@@ -9,6 +9,8 @@ export const PINS = {
|
|
|
9
9
|
// v0.3.1: seeded block-KV graphs (Nemotron-Labs-Diffusion-3B), chatFormat, split external data; download progress
|
|
10
10
|
// (progress_callback) and the graph files cached in Cache Storage 'kohra-models'.
|
|
11
11
|
kohra: 'bf95d44c3e3cfc001201baa03fa121c2bf9c7d73',
|
|
12
|
+
// v0.6.15 (f17009c): engines/clover_moe_ssd.js, Clover-35B-A3B-Preview (block diffusion on Qwen3.6-35B-A3B; kohra's
|
|
13
|
+
// denoise loop vendored in engines/vendor/). qwen35_moe_ssd.js and qwen3_moe_ssd.js only learn to accept clover_moe.
|
|
12
14
|
// v0.6.14 (93193d0): LFM3-Omni speech out's inverse STFT uses an FFT (same samples), 0.54x → 1.5–1.8x real time on
|
|
13
15
|
// an M4 Pro. Changes only engines/lfm3_omni.js.
|
|
14
16
|
// v0.6.13 (7ffbea5): LFM3-Omni serves one reply at a time; overlapping runs broke onnxruntime-web WebGPU.
|
|
@@ -21,7 +23,7 @@ export const PINS = {
|
|
|
21
23
|
// Gemma 4 E2B/E4B and Ternary Bonsai 2) under engines/, and the llama.cpp path under ggml/, which loads split GGUFs
|
|
22
24
|
// and drafters, and reads past 2 GiB (Nemotron 3.5 Bolt E4B needs v0.6.8 or later). The hand engines' ingest
|
|
23
25
|
// streams the GGUF header with progress and resumes a dropped range.
|
|
24
|
-
diskformer: '
|
|
26
|
+
diskformer: 'f17009cc31e15361af7ae5536e8f55cb43c5066f',
|
|
25
27
|
};
|
|
26
28
|
|
|
27
29
|
const gh = (repo, sha, path) => `https://cdn.jsdelivr.net/gh/NakliTechie/${repo}@${sha}/${path}`;
|