← Blog · Use Cases · Docs

A thinking model in half a gigabyte: Ternary-Bonsai-2 small (2B/4B/9B)

October 2026 · Inference Server team

new in v1.70.52 / 1.15 / 2.42 GB files thinking ON by defaultimages (v1.7.1) Apache 2.0

The 27B Ternary Bonsai made the case that 1.72-bit ternary weights are a real serving format, not a compression demo. prism-ml has now released the small end of the family, and v1.7 serves all three:

ModelFile (PQ2_0)Runs onDownload
ternary-bonsai-2b0.52 GB4 GB hosts~1.2 GB with vision
ternary-bonsai-4b1.15 GB4–8 GB~1.8 GB
ternary-bonsai-9b2.42 GB8 GB hosts~3.1 GB

That last row deserves a second look: a 9B-class reasoning model in 2.42 gigabytes — a third of the RAM the q35-9b needs — with the full 262,144-token context window. All three are Qwen3.5 trunks quantized to ternary {−1, 0, +1} weights with the same folded-Hadamard runtime the 27B uses, so every PQ2_0 kernel optimization from the v1.6.0 performance train applies as-is.

Two things to know before you call them

  • Thinking is ON by default — the opposite of every other model on the server, because that’s how these models’ own chat template ships. Reasoning streams to reasoning_content, the answer to content. Pass "enable_thinking": false for direct answers.
  • They answer image questions (v1.7.1): the fetch group includes F16 vision projectors, and the 4B/9B reliably read text out of screenshots — on our fixtures the 9B answers "What error code is shown?" with the right number. The 2B sees colors and shapes fine but can misread small digits; it is, after all, half a gigabyte.
sudo ./fetch-models.sh bonsai-small   # all three + vision projectors, ~6.1 GB

curl -sS localhost:8081/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
  -d '{"model":"ternary-bonsai-2b",
       "messages":[{"role":"user","content":"What is the capital of France? One short sentence."}],
       "temperature":0}'
# → reasoning_content: "Thinking Process: 1. Identify the question..."  content: "The capital of France is Paris."

Measured, as always

  • Parity: teacher-forced greedy decoding against the PrismML reference fork — 423/424 tokens exact across our fixture set (the one divergence is a sub-0.05-logit near-tie), and our rendered prompts byte-match the fork’s own template output.
  • Speed: measured with the standard page methodology (3×256 greedy, M4, solo): 2B 62.5 tok/s (+48% vs q35-2b), 4B 36.3 (+55%), 9B 22.4 (+62%) — ternary bytes win because decode is bandwidth-bound. Quality spot-check (16 exact-answer questions): the 2B scores 14/16 vs q35-2b’s 10/16; 4B/9B match their siblings at 15/16. Full table on the performance page.
  • Honesty row: tiny models think in grooves — at temperature 0 the 2B’s reasoning is formulaic, and its vision misses fine detail. The right frame is the price-performance point: reasoning + 262K context + images on hardware where, a year ago, nothing conversational fit at all.

Apache 2.0, in the catalog and the console now. The 27B remains the family’s quality tier (text-only); these are the deploy-anywhere tier.