Downloads · 30 days
508
73% of all-time downloads
jmbarrancoidener/PaddleOCR-VL-1.6-mlx-8bit
PaddleOCR-VL-1.6-mlx-8bit is a image-text-to-text model from jmbarrancoidener. 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 apache-2.0.
An MLX 8-bit quantisation of PaddlePaddle/PaddleOCR-VL-1.6, for Apple Silicon. 1.0G on disk, 9.618 bits per weight after mixed-precision quantisation.
Downloads · 30 days
508
73% of all-time downloads
All-time downloads
695
Public
Parameters
906M
1.1 GB on disk
Likes
3
Public
Click a slice to open those files.
.safetensors1.1 GB · 99%
How the weights are stored.
U32771M · 85%
From the Hugging Face model README
An MLX 8-bit quantisation of PaddlePaddle/PaddleOCR-VL-1.6, for Apple Silicon. 1.0G on disk, 9.618 bits per weight after mixed-precision quantisation.
All the modelling work is PaddlePaddle's. This repository holds converted weights and nothing else.
pip install "mlx-vlm>=0.3.11"
mlx_vlm convert --hf-path PaddlePaddle/PaddleOCR-VL-1.6 \
-q --q-bits 8 --mlx-path paddleocr-vl-8bit --trust-remote-code
Deterministic: a fresh convert reproduces model.safetensors byte-identically,
checked by SHA-256. The build here is the output of exactly that command, so
this repository is a convenience rather than a source of truth. Downloading it
saves pulling the 1.8 GB bf16 first.
sha256 3abce24b6c447cce0e56ae9fd7464d507c4b288080bdc92526a07668c3a0a0e7
Measured against the bf16 original on the same pages of the same PDFs, counting layout regions whose recognised text differs.
| build | size | agreement with bf16 |
|---|---|---|
| bf16 | 1.8 GB | — |
| 8-bit | 1.0 GB | 2 differing regions |
| 4-bit | 682 MB | 8 differing regions |
Those counts only mean something against a control: bf16 compared with itself across two runs differs in 1 region, and it is the same flip-flopping superscript that separates it from the 8-bit build.
So 8-bit sits inside the model's own non-determinism. 4-bit sits outside it, and
its differences are systematic rather than random: markdown bullets degrade into
literal • characters and the occasional character drops mid-word.
Neither is faster than bf16. At 0.9B the weights are not the bottleneck; image prefill is, at roughly 2.5 s to emit two tokens per layout region. Pick a quantisation for disk and memory, not for speed.
Use 8-bit if you want the gigabyte back. 4-bit costs accuracy and returns nothing but disk.
from mlx_vlm import load, generate
model, processor = load("jmbarrancoidener/PaddleOCR-VL-1.6-mlx-8bit", trust_remote_code=True)
It also works as the recognition backend for the full PaddleOCR-VL pipeline, which is what it was converted for:
from paddleocr import PaddleOCRVL
pipeline = PaddleOCRVL(
vl_rec_backend="mlx-vlm-server",
vl_rec_server_url="http://localhost:8111/",
vl_rec_api_model_name="jmbarrancoidener/PaddleOCR-VL-1.6-mlx-8bit",
)
Apache-2.0, inherited from the base model. Quantisation changes the weights and nothing about the licence or the attribution.
Converted for Vela, a research agent that reads papers.