H2O-Lightning-4B โ€” MLX 8-bit

Built and tested on Apple M5 Max (128 GB) ยท upstream revision H2O-Lightning-4B v1.4.2 (708e939)

An 8-bit MLX conversion (affine, group size 64; mlx-vlm 0.7.8) of h2oai/h2o-lightning-4b v1.4.2 (commit 708e93926a034195d908e033fcb796c55398a6f5; the weights are unchanged since v1.4.1, so this build was not reconverted), for Apple Silicon. 4.8 GB. Supports H2O's two-way reading and Box questions.

Published by NetProjects (Internet Projects Ltd). Not affiliated with H2O.ai. Linked from H2O.ai's official model card.

This is a decision model, not a chat model. It returns a probability for each answer option (or, for a Box question, a bounding box), not free text.

Serve it with the H2O shim, not with mlx_lm.server or a plain mlx_vlm generate call. The generic "Use this model" snippets Hugging Face shows for MLX models do not return the label probabilities this model is made for. The commands below set it up with H2O's official shim, unmodified, on top of h2o-lightning-mlx, which reads the label log-probabilities with a float32 head, as the original does on vLLM.

JevBench public (231, JevBench v1.2.1, --adapter typesafe) two-way one-way
this checkpoint 205 / 231 (48/48 ยท 72/72 ยท 85/111) 201 / 231
original weights on MLX (bf16) 205 / 231 201 / 231
H2O's model card (vLLM) 206 / 231 202 / 231
vs bf16 on MLX 231 / 231 answers identical; probability drift mean 0.003, p95 0.011 231 / 231 identical

Within one item of H2O's own result in both modes, and the same answers as the original weights on MLX: the recommended MLX build.

Two-way reading. H2O v1.3+ answers under two attention patterns, and two-way is its recommended default. This build serves both from one engine: a request picks "attention_mode": "two-way" or "one-way", and two-way is the default. Before its first two-way answer, H2O's shim checks the engine against the answers H2O recorded on the release weights; this build matches them to within 0.014 (tolerance 0.05).

Box questions (always on since v1.4.0): ask for a bounding box of a named object in an image and get box, a calibrated confidence, present and found. The facade answers H2O's guided box generation exactly as the shim requests it. On H2O's receipt example, the box for the total-amount line has confidence 0.97.

Speed (MacBook Pro M5 Max, 27 October 2026, through serve.sh, one request at a time): about 63 ms per JevBench item; a 2,000-token record in 0.46 s two-way and 0.39 s one-way; a 32K-token state in 14.3 s two-way and 7.8 s one-way. Two-way memory grows quickly with long inputs (MLX peak 55 GB at 32K tokens, against 8.9 GB one-way): for long inputs on a Mac with less than 64 GB, use one-way.

Images. Image input works through the unchanged shim. On H2O's own receipt example this build gives the same answers as the original weights. It is not a reproduction of H2O's image benchmark.

About v1.4.1 (from H2O's card): the v1.4.0 fine-tune continued on more training data, with unchanged calibration constants; stronger on retrieval and on six task families the added data covers (including choosing a function to call), level on H2O's held-out decision skills overall. The shim now checks at start that the engine uses the training tokenizer (tokenizer/, Qwen2Tokenizer), which this build ships and the facade uses.

v1.4.2 (29 October 2026). Carries v1.4.2 (708e939): weights unchanged, new serving files (H2O's shim and serve_config.json; the matching serve.sh options are in h2o-lightning-mlx). Yes/no answers are now served without the 0.801 floor by default (H2O's routing mode is the default); PROFILE=di ./serve.sh (h2o-lightning-mlx) restores the floor and turns on H2O's Decision Index re-read (a choice or score question under 0.8 is read once more with the input written twice, 2:1 in favour of the first read). Images up to 1,638,400 pixels are read whole (was 1,048,576); larger ones are resized to that size, as on vLLM (this needs h2o-lightning-mlx at v1.4.2, whose facade now applies the shim's image size cap). A request may also give the attention mode as kwargs.attention_mode, as on H2O's hosted gateway. A client that disconnects before its answer no longer leaves an error in the server log. Checked on this build: JevBench public 205 / 231 two-way and 201 / 231 one-way, the same 231 answers as with the 28 October files (only yes/no probabilities move, by the floor change); text and Box answers identical to the 28 October files under the same floor; tokenizer contract 24 / 24; two-way probe check 0.014.

28 October 2026 revision. H2O updated v1.4.1 in place; the weights did not change, so this build was not reconverted, and it now ships the updated shim, serve_config.json and the new selector_v2.py. Over-long records are now trimmed to fit the context by BM25 selection instead of a fixed cut at 32,000 tokens, so a request never fails for length: on a 60,000-token test record with one key line in the middle, this build now answers correctly (0.97 two-way, 0.96 one-way). Image answers are read at temperature 1.0 instead of 0.65: the top answers stay the same and the confidence values are lower (receipt item count 0.92 โ†’ 0.79 two-way, 0.94 โ†’ 0.82 one-way). Text requests that fit the context are read exactly as before.

Limits (as for the original): mostly evaluated in English; works best with about 16 answer options or fewer; no explanations and no video input.

git clone https://github.com/internet-projects/h2o-lightning-mlx && cd h2o-lightning-mlx && ./setup.sh
hf download netprojects/h2o-lightning-4b-mlx-q8 --local-dir mlx-q8
MODEL=mlx-q8 ./serve.sh # http://127.0.0.1:8741/v1/systemone

Versions. main is H2O v1.4.2 (tag v1.4.2). The 28 October v1.4.1 files stay available with --revision v1.4.1-oct28, and the original 27 October v1.4.1 files with --revision v1.4.1-initial. Earlier builds stay available: H2O v1.4.0 (two-way, 206 / 231) with --revision v1.4.0, H2O v1.3.1 (two-way, 203 / 231) with --revision v1.3.1, and H2O v1.2.3 (one-way, 205 / 231) with --revision v1.2.3; use each with the matching tag in the GitHub repo (git checkout v1.4.0).

Full precision: use the original weights, h2oai/h2o-lightning-4b, with the same repo and shim. There is no separate bf16 copy here.

Credits: H2O.ai (H2O-Lightning-4B, Apache-2.0), Qwen team (Qwen3.5-4B, Apache-2.0). This conversion is not affiliated with H2O.ai.

More NetProjects MLX builds: NetProjects MLX builds collection ยท all models at huggingface.co/netprojects

Downloads last month
910
Safetensors
Model size
5B params
Tensor type
U32
ยท
BF16
ยท
F32
ยท
MLX
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for netprojects/h2o-lightning-4b-mlx-q8

Finetuned
Qwen/Qwen3.5-4B
Quantized
(6)
this model

Collection including netprojects/h2o-lightning-4b-mlx-q8