CoolFace
Modelpublic

Brooooooklyn/Ornith-1.0-35B-UD-Q8_K_XL-mlx

sourceHugging Facemitupdated 3mo agoView on Hugging Face
5likes195downloads
Model Card

Ornith-1.0-35B — UD-Q8KXL (mlx-node)

8-bit base mixed-precision quantization of deepreinforce-ai/Ornith-1.0-35B for Apple Silicon, using the Unsloth Dynamic per-tensor bit allocation (without imatrix AWQ) via mlx-node.

Ornith-1.0 is a self-improving family of open-source agentic coding models. The 35B member is a Qwen3.5-VL-MoE (hybrid Gated-DeltaNet + full attention, 256 experts, vision-language) post-train.

Original (BF16)This Model
Size~68 GB36 GB
FormatSafeTensors (sharded)SafeTensors (sharded)
PrecisionBF16 uniformMixed 8/8/8/8-bit affine + BF16

All Variants

RepoFormatSizeDecode (tok/s)
Brooooooklyn/Ornith-1.0-35B-UD-Q3_K_XL-mlxUD-Q3KXL17 GB111.6
Brooooooklyn/Ornith-1.0-35B-mxfp4-mlxMXFP420 GB107.8
Brooooooklyn/Ornith-1.0-35B-UD-Q4_K_XL-mlxUD-Q4KXL22 GB102.3
Brooooooklyn/Ornith-1.0-35B-nvfp4-mlxNVFP423 GB94.6
Brooooooklyn/Ornith-1.0-35B-UD-Q5_K_XL-mlxUD-Q5KXL26 GB95.4
Brooooooklyn/Ornith-1.0-35B-UD-Q6_K_XL-mlxUD-Q6KXL31 GB93.1
[Brooooooklyn/Ornith-1.0-35B-UD-Q8_K_XL-mlx](https://huggingface.co/Brooooooklyn/Ornith-1.0-35B-UD-Q8_K_XL-mlx) (this model)UD-Q8_K_XL36 GB91.5
Brooooooklyn/Ornith-1.0-35B-mxfp8-mlxMXFP836 GB84.8

Benchmarked on a cool Apple M5 Max: median decode throughput over three 512-token generations, with a 60-second idle GPU cooldown after every generation. (Sustained decode on Apple Silicon is thermally sensitive — back-to-back benchmarking on a hot chip can understate throughput by 20–30%, so every model here was measured from a comparable cool start.)

Performance

Steady-state decode: 91.5 tok/s (1.5x vs BF16) on Apple M5 Max. Decode is memory-bandwidth bound on Apple Silicon — fewer bytes per token directly translates to higher throughput. The MoE architecture activates only 8 of 256 experts per token (~3B active out of 35.9B total), so the active-weight footprint streamed per token is what matters.

Output Quality

Decoded-text quality was verified against the BF16 reference with a multi-judge review of the actual generated output (not a heuristic): a 4-turn factual chat plus a Python is_balanced() bracket-matching task. This UD-Q8_K_XL build produced coherent prose, correct facts, and a correct implementation — no runaway generation, repetition loops, or stray tokens — on par with full precision. (The 2-bit tier is intentionally excluded from this collection: it was the only width that showed coherence breakdown.)

Per-Tensor Quantization

WeightBitsRationale
embed_tokens8-bit affineKLD ~0.15 — very low sensitivity
lm_head8-bit affineKLD ~0.05 — safest tensor
self_attn.q/k/v_proj8-bit affineKLD ~1.5–2.9 — attention-sensitive
linear_attn.in_proj_qkv/z8-bit affineKLD ~2.9 — SSM input gates
self_attn.o_proj8-bit affineKLD ~1.5; row-independent qmv for T=0 exactness
linear_attn.out_proj8-bit affineKLD ~6.0 — worst tensor; kept high
linear_attn.in_proj_a/b8-bit affinetiny low-rank GDN projections
switch_mlp.down_proj8-bit affine"slightly more sensitive" than other FFN
switch_mlp.gate_proj/up_proj8-bit affinebulk of the expert budget
Router gates (mlp.gate, shared_expert_gate)8-bit affineMoE routing accuracy
GDN params (A_log, dt_bias)bf16state-space dynamics
vision_tower.*bf16vision encoder kept full precision

Quantization Strategy

Built on Unsloth Dynamic 2.0 per-tensor KLD analysis: sensitive layers (attention/SSM inputs, downproj, embeddings/head) get higher bits, while the bulk of FFN expert weights are quantized to the base width. `selfattn.oproj`, `linearattn.outproj`, the split low-rank GDN projections (`inproja/b`) and the MoE router gates are pinned to 8-bit affine (groupsize 64). GatedDeltaNet state-space parameters and the vision encoder stay bf16.

Note: These ornith quants apply the Unsloth bit allocation without imatrix AWQ pre-scaling — ornith has no published imatrix, so the attention/SSM channels are quantized directly. Expect a small quality gap versus an imatrix-calibrated build at the lowest bit widths.

Architecture

ParameterValue
Total parameters35.9B (~3B active per token)
Hidden size2,048
Layers40 (30 linear GatedDeltaNet + 10 full attention)
Attention heads16 (2 KV heads, GQA 8:1)
Head dimension256
Experts256 per MoE layer, top-8 routing
Vocab size248,320
Visionyes (Qwen3.5-VL vision tower, kept bf16)
Max context262,144 tokens

Usage

typescript
import { loadSession } from '@mlx-node/lm';

const session = await loadSession('./Ornith-1.0-35B-UD-Q8_K_XL-mlx');

for await (const event of session.sendStream('Write a Python function to merge two sorted lists.', {
  config: { maxNewTokens: 2048, temperature: 0.6, reasoningEffort: 'low' },
})) {
  if (!event.done) process.stdout.write(event.text);
}

How It Was Made

bash
mlx convert \
  -i Ornith-1.0-35B \
  -o Ornith-1.0-35B-UD-Q8_K_XL-mlx \
  -q --q-recipe unsloth --q-bits 8

The Unsloth recipe's per-tensor bit tiers were applied without imatrix AWQ (no native ornith imatrix). 7-bit tiers are snapped up to 8-bit (MLX affine supports 2/3/4/5/6/8-bit).

Acknowledgments

  • —[Unsloth](https://unsloth.ai) — Per-layer KLD bit-allocation strategy (Dynamic 2.0)
  • —[DeepReinforce](https://deep-reinforce.com/ornith.html) — For the Ornith-1.0 model family
  • —[Qwen Team](https://huggingface.co/Qwen) — For the Qwen3.5 base architecture
  • —[Apple MLX](https://github.com/ml-explore/mlx) — For the Metal-accelerated ML framework

License

MIT (inherited from base model).