{−1, 0, +1} in a fixed rotated basis, with FP16 group scales.
Specifications
On the 20-benchmark thinking-mode suite it averages 83.9, retaining 98.2% of the Qwen3.8-27B FP16 baseline’s 85.4 at roughly a ninth of the size. See benchmarks.
Artifacts
All Ternary Bonsai 2 repositories are in the Bonsai 2 collection on Hugging Face.PTQ1_0 has the smaller footprint; PQ2_0 uses a simpler 2-bit representation that is cheaper to unpack, so prompt processing is faster. Neither is uniformly faster. The demo downloads PQ2_0 by default.
The GGUF repo also ships the vision tower separately, needed for image input: mmproj HQQ 4-bit (0.63 GB, what the demo uses) or the BF16 reference (0.93 GB).
How to run it
Through the demo repo (Ternary Bonsai 2 27B is the default, so no flags needed):Vision and tool calling
27B is trained for both. Send an image as a normal OpenAI-styleimage_url content part, and a tools array for function calling — both come back through the standard API, no prompt hacks required:
choices[0].message.tool_calls carries the call. See Tool calling & MCP in the demo repo for MCP server setup and the full agentic walkthrough, and Open WebUI for a point-and-click demo of the same capabilities.
Thinking mode
27B reasons by default. Toggle it per request withthinking_budget_tokens (0 to disable, -1 for unlimited), cap it server-wide with --reasoning-budget N, or turn it off entirely with BONSAI_THINKING=0 ./scripts/start_llama_server.sh. The built-in chat UI has a Reasoning effort picker (Off / Low / Medium / High / Max) that overrides the server default per conversation.
The model itself inherits two reasoning-effort settings from Qwen3.8-27B — xhigh (the default) and medium. A low setting does not reduce the amount of thinking; use the token budget to bound it.
Large images are downscaled to ~1,024 vision tokens by default on Metal, Vulkan, and CPU to keep latency reasonable; CUDA and ROCm run uncapped. Override with
BONSAI_IMAGE_MAX_TOKENS (0 disables the cap — useful for reading small text in screenshots).