Downloads · 30 days
59
47% of all-time downloads
lethargicgeek/UI-Venus-2-9B-mlx-4bit
UI-Venus-2-9B-mlx-4bit is a image-text-to-text model from lethargicgeek. 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-vlm.
Smallest build, and it measured just as accurate at grounding as every other build here. No calibration.
Downloads · 30 days
59
47% of all-time downloads
All-time downloads
126
Public
Parameters
9.4B
6 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors6 GB · 100%
How the weights are stored.
U329B · 95%
From the Hugging Face model README
Smallest build, and it measured just as accurate at grounding as every other build here. No calibration.
MLX quantization of inclusionAI/UI-Venus-2-9B — a GUI-agent vision-language model on the Qwen3.5 architecture (hybrid Gated-DeltaNet linear attention + full attention, SigLIP-style vision tower). Converted with mlx-vlm 0.6.17 / mlx 0.32.2.
| Build | Size | Effective bpw | ScreenSpot-Pro (n=50) | Notes |
|---|---|---|---|---|
6bit | 7.7 GB | 6.96 | 60% (30/50) | Uniform 6-bit RTN. Closest to Q6_K. |
mixed_4_6 | 6.2 GB | 5.67 | 56% (28/50) | Mixed 4/6-bit on llama.cpp's Q4_K_M recipe. Closest to Q4_K_L. |
4bit-awq | 5.6 GB | 5.06 | 58% (29/50) | AWQ, calibrated on 64 real GUI screenshots. Closest to an imatrix Q4_K_S. |
→ 4bit | 5.6 GB | 5.06 | 60% (30/50) | Uniform 4-bit RTN, no calibration. Baseline. |
Measured with Click on: <instruction> over 50 held-out
ScreenSpot-Pro samples (images capped at 2048 px;
a prediction counts as correct only if the point falls inside the ground-truth bbox). These four numbers are
within noise of each other — see below. This is not the paper's evaluation protocol and 50 samples is a small
set, so read it as a relative check between quants, not as a benchmark score for the model.
pip install -U mlx-vlm
python -m mlx_vlm.generate \
--model lethargicgeek/UI-Venus-2-9B-mlx-4bit \
--image screenshot.png \
--prompt "Click on: the Save button" \
--max-tokens 64
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
model, processor = load("lethargicgeek/UI-Venus-2-9B-mlx-4bit")
prompt = apply_chat_template(processor, model.config, "Click on: the Save button", num_images=1)
print(generate(model, processor, prompt, ["screenshot.png"], max_tokens=64))
Grounding prompts return a <point> tag. Coordinates are normalized to 0–1000, not pixels:
px = x / 1000 * image_width
py = y / 1000 * image_height
Both <point>X Y</point> and <point x1="X" y1="Y" alt="..."> forms occur, so parse for either.
| Method | RTN (round-to-nearest), no calibration |
| Bits | 4 uniform |
| Group size | 64 |
| Mode | affine |
The vision tower is not quantized. All 333 vision tensors stay at bfloat16 in every build here — mlx-vlm's
skip_multimodal_module() excludes them. This mirrors how GGUF conversions ship the vision encoder as a
separate f16 mmproj. Only the language model is quantized, which is why a "4-bit" build measures 5.06
effective bits per weight rather than 4.
Grounding is essentially unaffected by quantization. All four builds landed between 56% and 60%. At n=50 with p≈0.6 the standard error is roughly ±7 percentage points, so a 4-point spread is noise. There is no evidence here that 6-bit grounds better than 4-bit, or that calibration helps.
AWQ did not measurably beat plain RTN. Worth stating plainly, since calibrated quants are usually assumed
to win. The likely reason is coverage: only 8 of 32 layers received AWQ scaling (layers: 8, groups: 24). The
other 24 are linear_attention (Gated DeltaNet) layers that AWQ's scale search does not handle, so they fell
back to RTN. On a conventional all-attention transformer AWQ would cover the whole network; on this hybrid it
reaches a quarter of it.
Structured description degrades somewhat at 4 bits. Asked to list the buttons in a screenshot, 4bit and
mixed_4_6 sometimes emit coordinate tags (<ex>10 110</ex>...) instead of prose, where 6bit and 4bit-awq
returned a proper list. That was 5 prompts across 4 builds — suggestive, not conclusive. Ordinary description
("what application is this?", "summarize this screen") worked on every build.
6bit.4bit-awq is included for completeness and reproducibility, not because it won.The upstream repo inclusionAI/UI-Venus-2-9B declares no
license — no license tag, no cardData.license, no LICENSE file. None is asserted here. Check with
inclusionAI before using these weights in a product. (Some third-party conversions label this Apache-2.0; I
could not find a basis for that in the source repo.)
Credit for the model goes to inclusionAI (technical report, project page), derived in turn from Qwen/Qwen3.5-9B. This repo contains only a quantized conversion.