File size: 2,515 Bytes
4288307
 
 
e7f336a
4288307
 
e7f336a
 
 
 
 
 
4288307
 
e7f336a
4288307
e7f336a
 
 
4288307
e7f336a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
license: other
license_name: lfm-open-license-v1.0
license_link: https://huggingface.co/LiquidAI/LFM2.5-Encoder-350M-Spellchecker/blob/main/LICENSE
library_name: minima-lfm
base_model: LiquidAI/LFM2.5-Encoder-350M-Spellchecker
pipeline_tag: token-classification
tags:
- ternary
- 1.58-bit
- grammatical-error-correction
- spell-check
---

# Minima Spellcheck

Packed W1.58A8 adaptation of
[LiquidAI/LFM2.5-Encoder-350M-Spellchecker](https://huggingface.co/LiquidAI/LFM2.5-Encoder-350M-Spellchecker),
built with [SSHDotCodes/minima](https://github.com/SSHDotCodes/minima).

- Logical matrix values: `{-1, 0, +1}` (1.585 bits)
- Physical artifact format: I2_S, four trits per byte
- Group size: 32; recovery rank: 128
- Full encoder context: 8,192 tokens
- Weight file: 226.0 MB
- CPU demo: [Minima Spellcheck](https://huggingface.co/spaces/ProCreations/minima-spellcheck)

## Use

```bash
pip install "minima-lfm @ git+https://github.com/SSHDotCodes/minima.git"
```

```python
from minima import MinimaModel

model = MinimaModel.from_pretrained("ProCreations/minima-spellcheck", device="cpu")
print(model.correct(
    ["I has went to the stor yesterday ."],
    max_iter=4,
    min_error_prob=0.0,
    rerank=False,
))
# ['I went to the store yesterday .']
```

CPU inference defaults to a one-time FBGEMM INT8 packing of each effective
ternary-plus-recovery matrix. Set `MINIMA_CPU_BACKEND=i2s` to execute the strict
2-bit AVX2/NEON kernel instead.

## Validation

The 1,000-step distillation run used held-out corrupted FineWeb text and the
LiquidAI model as teacher. With both models' optional dense reranker disabled:

| Diagnostic | Result |
|---|---:|
| Tag top-1 agreement within teacher candidates | 99.51% |
| Error-detection top-1 agreement | 99.41% |
| Exact correction agreement, held-out + reference examples | 70.0% (14/20) |
| Exact agreement on the four published-style examples | 100% (4/4) |

The Space smoke test corrected `I has went to the stor yesterday .` to
`I went to the store yesterday.` and returned a warmed CPU latency of 110 ms.
These are teacher-agreement diagnostics, not an ERRANT benchmark. The upstream
optional reranker is deliberately disabled because it contains a separate
1.42 GB dense encoder, which would invalidate this model's CPU memory profile.

See `spellcheck_report.json` for the full immutable training and evaluation log.

## License

The weights remain subject to the LFM Open License v1.0 shipped in this repository.
The Minima runtime code is MIT licensed.