Downloads · 30 days
46
41% of all-time downloads
mlx-community/Fara1.5-4B-8bit
Fara1.5-4B-8bit is a image-text-to-text model from mlx-community. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for mlx. The card lists the license as mit.
8-bit MLX quantization of microsoft/Fara1.5-4B, a 4.5B computer-use / web-agent VLM built on Qwen3.5-4B. It reads screenshots and acts on interfaces. Converted with mlx-vlm 0.6.8 (mlx 0.32.0) for inference on Apple Si…
Downloads · 30 days
46
41% of all-time downloads
All-time downloads
112
Public
Parameters
4.5B
5.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors5.1 GB · 99%
How the weights are stored.
U324.2B · 93%
From the Hugging Face model README
8-bit MLX quantization of
microsoft/Fara1.5-4B, a 4.5B
computer-use / web-agent VLM built on Qwen3.5-4B. It reads screenshots and acts on
interfaces. Converted with mlx-vlm 0.6.8 (mlx 0.32.0) for inference on Apple
Silicon.
Every prior MLX conversion of this model is 4-bit, so 8-bit was the open gap. Fidelity was measured against the unquantized bf16 source, not assumed.
pip install mlx-vlm
python -m mlx_vlm generate \
--model mlx-community/Fara1.5-4B-8bit \
--image screenshot.png \
--prompt "Describe the buttons and the total shown in this screenshot." \
--max-tokens 256
Image input needs mlx-vlm. Stock mlx-lm loads the text path only, which for a
computer-use model is not a smaller model but a broken one.
| Bits | 8 |
| Group size | 64 |
| Mode | affine |
| Effective bits/weight | 9.053 |
| Size on disk | 4.8 GB |
| Quantized tensors | 249 (language model) |
| Unquantized tensors | 297 (vision tower, bf16) |
Effective bits per weight exceeds the nominal 8 because mlx-vlm quantizes only
the language model and leaves the vision tower in bf16 by design. The vision
path is preserved, which for a computer-use model is the whole point: verified
at tensor level, of 297 vision tensors zero carry a .scales entry.
This model declares dtype: bfloat16 at the top level of its config but
float32 in both text_config and vision_config. mlx_vlm.convert honours
the sub-configs, so converting without an explicit --dtype bfloat16 silently
keeps the scales, biases and the entire vision tower in fp32:
| default | --dtype bfloat16 | |
|---|---|---|
| Effective bpw | 10.695 | 9.053 |
| Size on disk | 5.7 GB | 4.8 GB |
| Peak RAM | 7.44 GB | 6.23 GB |
| Weight SNR vs bf16 | 45.22 dB | 42.70 dB |
This repo is the --dtype bfloat16 build. The higher SNR of the fp32 build is
not better fidelity: it is a float32 reconstruction being compared against a
bf16 source, bought with 0.9 GB of precision that has no business in an 8-bit
repo. Rounding those scales to bf16 accounts for the entire 2.5 dB difference.
Against the unquantized bf16 source, greedy decoding, on an M2 Pro / 32 GB.
| Metric | bf16 (source) | 8-bit |
|---|---|---|
| Weight SNR | n/a | 42.70 dB |
| Relative L2 | n/a | 0.73% |
| Cosine similarity | n/a | 0.999973 |
| Worst single element | n/a | 0.003906 |
| Perplexity | 3.4974 | 3.4775 |
| Top-1 agreement | n/a | 0.9853 |
| KL (nats/token) | 0 | 0.00086 |
| Task accuracy | 7/8 | 7/8 |
| BLEU vs bf16 | n/a | 81.30 |
| Decode tok/s | 18.5 | 35.4 |
| Peak RAM | 9.23 GB | 6.15 GB |
Weight-level metrics stream the source tensor by tensor from disk over all 4,204,789,760 quantized parameters. No prompts, no sampling, hardware-independent.
42.70 dB is the expected value, and that is the point. Six 8-bit affine conversions at group size 64 across six different architectures (AREX-Turbo, Fara-7B, Fara1.5-4B, GLM-4.1V, MagenticBrain, OvisOCR2) all land on 42.66-42.70 dB. A reading outside that band is a defect signal, which is exactly how the fp32-scales issue above was caught.
Highest-error tensors, all in the linear-attention input projections:
rel_l2=0.00841 snr=41.50 dB language_model.model.layers.25.linear_attn.in_proj_a
rel_l2=0.00839 snr=41.53 dB language_model.model.layers.28.linear_attn.in_proj_a
rel_l2=0.00834 snr=41.57 dB language_model.model.layers.26.linear_attn.in_proj_a
1.9x faster, 1.5x less memory than bf16.
Given a synthetic UI screenshot, the 8-bit model read both button labels
(SubmitOrder, Cancel) and the total (42.50 USD) correctly.
The harness reports aggregate perplexity as exp(sum_nll/sum_tokens) over five
passages, and flags it as unreliable here: the bf16 source itself spans 10.3x
across those passages, so a single out-of-domain passage can dominate. The
per-passage ratios are reported instead, and they agree with the aggregate rather
than contradict it, all within 1.8% of the bf16 reference:
| Passage | bf16 PPL | 8-bit PPL | Ratio |
|---|---|---|---|
| prose | 4.66 | 4.69 | 1.007 |
| python-code | 1.23 | 1.23 | 0.999 |
| legal | 8.82 | 8.70 | 0.986 |
| biology | 6.62 | 6.64 | 1.002 |
| meta | 12.74 | 12.51 | 0.982 |
BLEU of 81.30 measures drift, not quality: it treats the bf16 output as ground truth, so it penalises valid paraphrase and would penalise a better answer.
<think> block, which consumes budget.| Model | Variant | Note |
|---|---|---|
| Fara1.5-9B-8bit | 8.86 bpw | larger sibling, top-1 agreement 1.000 |
| Fara-7B-8bit | 9.11 bpw | previous generation |
| Fara-7B-4bit | 5.44 bpw | previous generation |
All credit for the underlying model belongs to Microsoft. This is a format conversion and quantization; no training or fine-tuning was performed. See the source model card for license, intended use and limitations.