CoolFace
Modelpublic

cstr/h2ovl-mississippi-2b-crispembed-GGUF

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes152downloads
Model Card

h2ovl-mississippi-2b — CrispEmbed GGUF

H2OVL-Mississippi-2B for CrispEmbed. Needs MSAC two-scale tiling and the h2ogpt2 prompt template (no BOS) — all handled by the runtime.

bash
crispembed -m h2ovl-mississippi-2b-q8_0.gguf --ocr page.png
filesizeverdict
h2ovl-mississippi-2b-f16.gguf4636 MBreference precision
h2ovl-mississippi-2b-q8_0.gguf2592 MBrecommended — vision tower held at F16
~~q4_k~~—withdrawn, measured broken

Parity

Per-stage against a reference dumped from the Python blueprint (internvl2/h2ovl-mississippi-2b/ref.gguf in cstr/crispembed-regression-fixtures), CPU backend, plus the decoded output on a full scanned page:

stagef16q8_0 (shipped)q4_k
visprojoutput0.9999740.9999740.912992
vispixelunshuffle0.9996910.9996910.380373
llmlayer01.0000000.9827470.594995
llmlayer31.0000000.962142−0.279113
decoded pagetranscribestranscribesfluent but wrong

The shipped q80 keeps the **vision tower at F16** — that costs ~13 % size and lifts every vision stage to the f16 ceiling. The InternViT encoder is 24 residual blocks, so per-weight error compounds: at Q80 the tower drifts to 0.90 by layer 11, and the projector output falls to 0.913. The decoder stays Q8_0, where the output is correct.

q4_k was withdrawn. It loads and produces confident, well-formed text that is not what is on the page — the worst failure mode for OCR. Its decoder is anti-correlated with the reference by layer 2. Checkpoint-specific: internvl2-1b and h2ovl-800m are fine at q4_k.

Attribution

Upstream © H2O.ai, Apache-2.0 — see h2oai/h2ovl-mississippi-2b; vision tower InternViT-300M is MIT. Conversion and quantization do not relicense it. Per CrispEmbed POLICY.md, OCR output is a probabilistic reconstruction, not a faithful copy.