Rahspide commited on
Commit
52a9acb
·
verified ·
1 Parent(s): f5fc8a5

docs: MNN INT4 build, run instructions, release v1.1

Browse files
Files changed (1) hide show
  1. README.md +14 -1
README.md CHANGED
@@ -161,6 +161,7 @@ used, so the resulting weights stay publishable.
161
  |---|---|---|---|
162
  | Q8_0 | 310 MB | [`MNN-Pocket-0.3B-RU-Q8_0.gguf`](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU/blob/main/gguf/MNN-Pocket-0.3B-RU-Q8_0.gguf) | near-lossless, for desktop |
163
  | Q4_K_M | 223 MB | [`MNN-Pocket-0.3B-RU-Q4_K_M.gguf`](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU/blob/main/gguf/MNN-Pocket-0.3B-RU-Q4_K_M.gguf) | the size to ship on a phone |
 
164
 
165
  Both files sit under `gguf/` with the quant tag in the name, which is what llama.cpp matches on:
166
 
@@ -178,6 +179,17 @@ Converted with llama.cpp `convert_hf_to_gguf.py` (f16) and quantised with `llama
178
 
179
  Phone figures will be several times lower; these are desktop-CPU numbers.
180
 
 
 
 
 
 
 
 
 
 
 
 
181
  Two conversion quirks, both already fixed in this repository's `tokenizer_config.json`.
182
 
183
  - the base pre-tokenizer does not hash-match in current llama.cpp, so the Qwen pre-tokenizer has to be pinned
@@ -235,13 +247,14 @@ deliberate trade: Russian is the target, English and Chinese are kept from degra
235
  | **v1** | Russian continuation model — this run | **released** |
236
  | **v2** | Russian assistant: SFT on ChatML on top of v1 — [released](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU-Chat) | **released** |
237
  | **v3** | Tokenizer extension measured: +8,192 Cyrillic merges give ×1.49 more Russian characters per token, +16,384 give ×1.63. `model_ext` (73,728 rows, child-mean init) is built; needs a 100–200 M token CPT to pay for itself | measured, CPT pending |
238
- | **v4** | Quantised builds for devices: GGUF Q8_0 / Q4_K_M shipped; MNN INT4 with device-side tok/s still open | partially done |
239
 
240
  ## Releases
241
 
242
  | Date | Version | What changed |
243
  |---|---|---|
244
  | 2026-11-10 | **v1.0** | 1.2 B-token continued pretraining released: bf16 weights, GGUF Q8_0 and Q4_K_M, measured ru/en/zh bits-per-char |
 
245
  | 2026-11-10 | v2.0 (sister) | Assistant checkpoint released: 50 M-token SFT on top of v1, weights and GGUF |
246
 
247
  ## Licence and attribution
 
161
  |---|---|---|---|
162
  | Q8_0 | 310 MB | [`MNN-Pocket-0.3B-RU-Q8_0.gguf`](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU/blob/main/gguf/MNN-Pocket-0.3B-RU-Q8_0.gguf) | near-lossless, for desktop |
163
  | Q4_K_M | 223 MB | [`MNN-Pocket-0.3B-RU-Q4_K_M.gguf`](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU/blob/main/gguf/MNN-Pocket-0.3B-RU-Q4_K_M.gguf) | the size to ship on a phone |
164
+ | MNN INT4 | 165 MB | [mnn/MNN-Pocket-0.3B-RU-INT4](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU/tree/main/mnn/MNN-Pocket-0.3B-RU-INT4) | MNN runtime, Android |
165
 
166
  Both files sit under `gguf/` with the quant tag in the name, which is what llama.cpp matches on:
167
 
 
179
 
180
  Phone figures will be several times lower; these are desktop-CPU numbers.
181
 
182
+ The MNN build runs through MNN's own runtime. Build `llm_demo` from the MNN repository with
183
+ `-DMNN_BUILD_LLM=ON`, then point it at the folder:
184
+
185
+ ```bash
186
+ cd mnn/MNN-Pocket-0.3B-RU-INT4 && llm_demo config.json prompt.txt
187
+ ```
188
+
189
+ 165 MB on disk, ~354 tok/s prefill and ~77 tok/s decode on 12 CPU threads here. `llm_config.json` carries no
190
+ chat template on purpose: this checkpoint continues the prompt, so the runtime should not wrap it in a dialogue
191
+ format.
192
+
193
  Two conversion quirks, both already fixed in this repository's `tokenizer_config.json`.
194
 
195
  - the base pre-tokenizer does not hash-match in current llama.cpp, so the Qwen pre-tokenizer has to be pinned
 
247
  | **v1** | Russian continuation model — this run | **released** |
248
  | **v2** | Russian assistant: SFT on ChatML on top of v1 — [released](https://huggingface.co/Rahspide/MNN-Pocket-0.3B-RU-Chat) | **released** |
249
  | **v3** | Tokenizer extension measured: +8,192 Cyrillic merges give ×1.49 more Russian characters per token, +16,384 give ×1.63. `model_ext` (73,728 rows, child-mean init) is built; needs a 100–200 M token CPT to pay for itself | measured, CPT pending |
250
+ | **v4** | Quantised builds for devices: GGUF Q8_0 / Q4_K_M and MNN INT4 shipped; phone-side tok/s still open | desktop done, phone pending |
251
 
252
  ## Releases
253
 
254
  | Date | Version | What changed |
255
  |---|---|---|
256
  | 2026-11-10 | **v1.0** | 1.2 B-token continued pretraining released: bf16 weights, GGUF Q8_0 and Q4_K_M, measured ru/en/zh bits-per-char |
257
+ | 2026-11-11 | v1.1 | MNN INT4 build for the MNN runtime: 165 MB, ~77 tok/s decode on 12 CPU threads |
258
  | 2026-11-10 | v2.0 (sister) | Assistant checkpoint released: 50 M-token SFT on top of v1, weights and GGUF |
259
 
260
  ## Licence and attribution