senn-techsenn-tech
AI & Development
AI & Development2026-09-22· By Franz Senn

Bonsai 2 27B: A 27B Model at 1.7 Bits, and the Fork It Forces

On 17 September 2026 PrismML published Bonsai 2 27B: a ternary-quantized build of Qwen3.8-27B under Apache 2.0. This is not a lab curiosity. It compresses the exact base model that has run our production inference lane as FP8 on 4× RTX 5090 since 18 August. I read the model card, the whitepaper and the repository contents, and pulled the repository numbers myself on 22 September. What follows is sorted into what I could verify and what the vendor asserts.

Who is selling this

PrismML grew out of the Caltech orbit (CEO Babak Hassibi, a compression researcher), raised a $22.25 million seed, and counts Ion Stoica among its advisers. Its earlier Bonsai models shipped from March onward; TechCrunch puts the family's cumulative downloads above 11 million and reports talks with Apple. The last part stays rumor, unconfirmed by the CEO's side.

Qwen wordmark
The base model is Qwen3.8-27B, Alibaba's dense hybrid-attention release of 13/14 August 2026: 9.5 million downloads, Apache 2.0. Bonsai 2 changes nothing about the architecture, only the weights. (Quelle: Wikimedia Commons, file Qwen_Logo.svg)

What matters to us is the technique, not the company. Ternary weights were lab ware because early binary and ternary attempts collapsed precisely where reasoning lives. PrismML claims to have broken that wall with a rotated ternary representation. On a model we operate ourselves, down to the KV-cache arithmetic.

Numbers I can check myself

File sizes from the repository's LFS metadata on 22 September, measured, not from marketing:

File sizes in the GGUF repository, GBF16 reference53.8 · 53.8 GBPQ2_07.2 · 7.2 GBPTQ1_05.9 · 5.9 GBmmproj Q8_00.63 · 629 MB, vision060
Language model only, no KV cache, no context. The F16 file is the reference PrismML computes against. (Quelle: Repository listing huggingface.co/prism-ml/Ternary-Bonsai-2-27B-gguf, retrieved 22.09.2026)

On the community side: 2,227,879 downloads and 1,768 likes on the GGUF repo, five days after release. And an ecosystem that grew within 48 hours. CRACK, abliterated and uncensored variants already stack up in the hub. That is a mirror of the scene, not a recommendation. For a company under data-protection duties, a tampered variant of this file is not a model, it is a risk without a ticket number.

From FP16 weights to a 6 GB fileQwen3.8-27BFP16, about 54 GBHadamard rotationblock-wise, 1024 blocks, folded inTernary g128weights in {-1, 0, +1}, FP16 scalesPackingPTQ1_0 dense 1.75 bit · PQ2_0 2-bit slotsPrismML llama.cpp forkCUDA, Metal, CPU; kernels live in the fork
The rotation is folded into the weights offline and costs no extra bits. A runtime without the matching transform either refuses the file or produces garbage, depending on the type. (Quelle: Model card prism-ml/Ternary-Bonsai-2-27B-gguf)

What the vendor claims

Everything below this line comes from the whitepaper, not from our bench:

  • 84.78 average across 14 thinking-mode benchmarks against 86.32 for the FP16 reference. The widely quoted 98.2 %.
  • Conventional 2-bit builds collapse selectively: IQ2_XXS holds MMLU-Redux (88.93) but drops to 57.5 on AIME26 and 56.4 on LiveCodeBench. Bonsai 2 is claimed to hold exactly those (95.83 and 90.07).
  • Round trip on our card class: about 130 tok/s decode on a single RTX 5090 (PQ2_0, batch 1), 120.5 with PTQ1_0. Around 30 tok/s on a 72-watt L4.
  • On laptops: 47 tok/s on an M5 Max, 27.5 W GPU draw on an M5 Pro.
Thinking average across 14 benchmarks (vendor measurement)FP16 reference86.32 · 54 GBUD-Q4_K_XL85.18 · 17.6 GB · 5.2 bpwBonsai 2 27B84.78 · 5.9 GB · 1.72 bpwIQ2_XXS72.59 · 9.4 GB · 2.8 bpw6090
Vendor measurement (EvalScope + vLLM on H100, thinking mode), not reproduced by us. The point is not the 1.5-point gap but the price: a third of the UD-Q4 file at nearly the same line. (Quelle: PrismML whitepaper, Bonsai 2 27B)

What stands out in that table is not the peak value but the pattern: the conventional IQ2_XXS build does not lose evenly. It loses the thinking. MMLU-Redux, a knowledge store, stays intact; math and code break away. That is exactly why a number like 98.2 % is worthless without the breakdown. We saw the same effect with FP8 conversions on our own vLLM lane. Quantization is not uniform decay; it is a choice about which capabilities survive.

The independent test exists. For the wrong generation.

One independent Terminal-Bench run is already published, but against the first Bonsai generation (July, before the thinking focus): 7.9 % on Terminal-Bench 2.0 with an 8 GB laptop GPU. Behind Qwen3.5-9B (9.2 %), far behind Qwen3.6-35B-A3B (24.3 %). And the VRAM advantage shrank under real load: 7.29 GB resident for the 2-bit file at 16k context versus 5.68 GB for the 9B model at Q4. The r/LocalLLaMA thread documents the very question we ask ourselves: how does aggressive compression compare against a smaller model at ordinary quantization? For Bonsai 2, the answer under an agent harness is still out. PrismML itself named long-horizon coding as a weakness of version one, and for version two has so far measured only tool calling (BFCL v3: 74.92 against 76.74 FP16; again a vendor number).

What this means for our lane

Our 5090 lane streams FP8 weights at up to 1,790 GB/s across the bus during decode. Bandwidth is the limit, which we measured ourselves. Bonsai flips that arithmetic. With 5.9 GB of weight traffic per token, the vendor's table puts Blackwell cards out of bandwidth-bound territory and into instruction throughput and launch overhead. That is why PQ2_0 beats the denser PTQ1_0 there, and why the order reverses on Ada. The plausible consequences:

  • Laptops and fringe hardware: a 27B agent with 262k context on an ordinary notebook. Offline, with no data leaving the building.
  • Side services: a 72-watt L4 as an always-on endpoint for cron jobs and voice agents. The power bill knows the difference between 30 and 450 watts.
  • Freed capacity: 21 GB of VRAM per card back for KV cache, batching, or a second model.

Three things stay open before this sees production. The fork is an operational risk: pinned binaries, our own mirror, one vendor's update tempo; our house pattern for exactly this is the SHA256 procurement in four files before installation. The throughput table is batch-1 measurements, our lane serves 64 concurrent sequences, and ternary behavior under batching is uncharted. And the vLLM path of our standard stack does not exist for these types. Bonsai means the llama.cpp fork, take it or leave it.

German-language hands-on from September 2026: installation through the PrismML fork, server startup, and the verdict for PC and Mac.

The one test that is missing

The plan sits on our list: PQ2_0 on a single 5090 in its own LXC. First stock llama.cpp, so we watch the new types get rejected with our own eyes. Then the fork binary under our pinning pattern, then the 34 work tasks from the self-hosting post in an A/B against the running FP8 lane. Measured: accuracy delta, tok/s at batch 1 and at 32, and the lane's total power draw. Only after that do we talk deployment. And if the result comes out against Bonsai, that result is worth a post too.

Further reading

Questions?
What is ternary quantization in practice?+

Every weight loses its value and keeps three options: minus 1, 0 or plus 1. The information moves into structure. Before assignment the matrices are rotated block-wise with a Hadamard transform, and the runtime applies the matching transform to activations. With one FP16 scale factor per 128 weights that lands at 1.72 bits per weight, shipped as the GGUF types PTQ1_0 and PQ2_0.

Does Bonsai 2 require a custom llama.cpp?+

Yes, and the model card says it plainly. The kernels for the ternary types live in the PrismML-Eng/llama.cpp fork (CUDA, Metal). Stock llama.cpp rejects PTQ1_0 and PQ2_0 as unknown types, and loads Q2_0 files without warning, producing garbage. Running this in production means pinning and mirroring a third-party binary the way you would treat experimental software.

Is the claim of 2.2 million downloads in one week true?+

Half. The GGUF repository stood at 2,227,879 downloads and 1,768 likes on the morning of 22 September, five days after release. But Hugging Face download counters have no cleanly defined window, so a weekly claim cannot be measured. The order of magnitude is real regardless; the repository topped the hub's trending list that week.