Downloads · 30 days
379
27% of all-time downloads
OsaurusAI/Qwen3.8-27B-JANG_2D
Qwen3.8-27B-JANG_2D is a image-text-to-text model from OsaurusAI. 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.
<p align="center"<a href="https://osaurus.ai"<img src="./osaurus-x-banner.png" alt="Osaurus AI"</a</p
Downloads · 30 days
379
27% of all-time downloads
All-time downloads
1.4K
Public
Parameters
27.8B
34 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors11.7 GB · 100%
How the weights are stored.
U3227.6B · 100%
From the Hugging Face model README
The smallest tier — a 2-bit-class mixed allocation for tight memory budgets.
A JANG bundle of Qwen/Qwen3.8-27B
— Qwen's 27B dense hybrid (GatedDeltaNet + gated attention) vision-language
model with flexible thinking control — quantized for Apple Silicon / MLX and
runnable with stock mlx_vlm. Text, image and video paths are all present in
this exact bundle, with the model's native multi-token-prediction head preserved.
This is the aggressive tier. It is meaningfully lossier than JANG_4D — the numbers below are stated plainly so you can choose with your eyes open. If you have the memory, take 4D.
linear_fc2
projections (in_features 4304, indivisible by any MLX quant group) pass
through in fp16 rather than being force-fit.Scored against the bf16 source (not against another quant) on 24 held-out prompts that are disjoint from the calibration corpus, teacher-forced on the reference's greedy continuation.
| Metric | Value |
|---|---|
| Held-out KL vs bf16 (median) | 0.2004 nats |
| Held-out top-1 agreement | 86.72 % |
| MTP depth-1 draft acceptance | 85.9 % |
| Decode speed (M5 Max, depth 1) | 48.5 tok/s |
| Decode speed (best depth = 1) | 48.5 tok/s |
| On disk | 10.64 GiB |
| Runs on | Apple Silicon with ≥ 16 GB unified memory |
Median KL is reported rather than mean: against a near-deterministic reference continuation KL is unbounded, so a single low-entropy prompt dominates a mean.
JANG_2D (10.6 GiB) · JANG_4D (16.6 GiB) · JANG_6D (23.6 GiB) · MXFP8 (26.4 GiB)
| Field | Value |
|---|---|
| Base model | Qwen/Qwen3.8-27B (dense 27B VLM) |
| Layout | 64 layers — 48 GatedDeltaNet + 16 gated full-attention (partial RoPE dim 64) |
| Vision | native image + video tower (501 tensors, preserved) |
| MTP | native multi-token-prediction head preserved (31 tensors, own shard) |
| Context | 262,144 native, extensible to 1M |
| Quantization | 219x2-bit / 172x3-bit / 125x4-bit / 64x8-bit |
Read these from generation_config.json + jang_config.json rather than
re-deriving them:
temperature=1.0, top_p=0.95, top_k=20. This is
the agentic preset and the correct preset for coding agents.
Instruct / non-thinking preset: temperature=0.7, top_p=0.80, top_k=20, presence_penalty=1.5.reasoning_effort: low / medium / xhigh (default xhigh), carried
as a chat-template kwarg.preserve_thinking ON by default — Qwen3.8 retains reasoning context
across turns, and it is prefix-cache friendly.<think>\n\n</think>\n\n, never plain
omission. Reasoning parser qwen3; tool-call parser qwen3_coder
(XML function dialect).248046 and 248044.pip install -U mlx-vlm
from mlx_vlm import load, generate
model, processor = load("OsaurusAI/Qwen3.8-27B-JANG_2D")
out = generate(model, processor, "Describe this image.", image=["photo.png"],
max_tokens=512, temperature=1.0, top_p=0.95)
Video note: render video prompts through the bundle's own chat template
({"type": "video"} → <|vision_start|><|video_pad|><|vision_end|>);
mlx_vlm.prompt_utils.apply_chat_template silently drops video items.
The native MTP head is preserved as its own shard (31 tensors). Depth-1 draft acceptance was measured at 85.9 % on the model's own generated span — i.e. the span speculative decoding actually drafts, not the prompt.
Speculation depth. Measured against a warm KV cache: best_depth is
1 at 48.5 tok/s (depth 1 = 48.5 tok/s). Deeper speculation stops
paying fast — each extra verified token adds ~20% to the target decode step,
so depth 3 is a net loss on every tier. The bundle stamps the measured
depth in vmlx_mtp_tuning.json with its baseline/best/speedup evidence.
Head width was measured to be irrelevant to acceptance between 4-bit gs64 and 8-bit gs128 (spread inside one standard error, and non-monotonic), so the head is stored at the cheapest width that costs nothing.
Acceptance is strongly shape-dependent — it moves ~17 points across reasoning/tool/turn-shape changes, and structured tool output drafts far better than prose. Treat a single acceptance figure as one slice, not a guarantee.
Quantized by Jinho Jang — [email protected]