Introducing Boole-1.7B

Precision Numerics

11 min read Original article ↗
Published
Author
Hyochan Chong

We are releasing Boole-1.7B, a 1-bit language model derived from Qwen3-1.7B, with 247 MB of stored weights. It scores 50.55 across ten benchmarks, compared with 58.83 for the BF16 baseline. This is 85.9% of the baseline’s ten-task average, with a 13.9× reduction in stored weight size.

Boole-1.7B against models under 500 MB: grid of bar charts comparing Boole-1.7B, Bonsai-1.7B, Ternary-Bonsai-1.7B, LFM2.5-230M and 350M (QAD-Q4_0) and Granite-4.0-H-350M (Q4_0) on the ten-task average, on each of the ten benchmarks, and on stored weights.

Why 1-bit is hard

A binary weight is a sign, +1 or −1, and its magnitude comes from a scale shared by a group of weights. Two things make this difficult: sharing one magnitude discards information, and the scales themselves take storage.

One magnitude for many weights

A 4-bit format gives each weight one of sixteen levels, so weights in a group keep different magnitudes under a shared scale. A binary group keeps only the signs.

Each arrow is one weight: direction is its sign, length is its relative magnitude.

4-bit (INT4)Sign + magnitude

s4 ×

−4 −1 +2 +6 −3 +1 −2 +3

BinarySign only

s1 ×

−1 −1 +1 +1 −1 +1 −1 +1

Each group shares one scale. INT4 keeps different lengths within the group; binary keeps only +1 and −1, so every weight becomes +s or −s. Eight illustrative weights are shown.

The best shared scale is the group’s mean magnitude[1], and the error that remains is the variance of the magnitudes within the group:

\[ \begin{aligned} s_G^* &= \frac{1}{g}\sum_{i=1}^{g}|w_i| \\ \mathrm{MSE}_{G,\min} &= \frac{1}{g}\sum_{i=1}^{g}w_i^2 - (s_G^*)^2 \end{aligned} \]

For Gaussian weights with variance \(\sigma^2\), the magnitudes have mean \(\sigma\sqrt{2/\pi}\) and variance \(\sigma^2(1-2/\pi)\), and estimating that mean from \(g\) samples removes a \(1/g\) share of it:

\[ \frac{\mathbb{E}[\mathrm{MSE}_{G,\min}]}{\sigma^2} = \left(1-\frac{1}{g}\right)\left(1-\frac{2}{\pi}\right) \]

This is 36.1% at group size 128 and 35.2% at 32, approaching 36.3% of the weight variance as groups grow. Quadrupling the number of scales buys less than one percentage point. The calculation is idealized and does not predict accuracy loss, but it shows how little a shared scale can recover.

Scales cost storage

Smaller groups need more scales. A \(b_{\mathrm{scale}}\)-bit scale per \(g\) weights adds \(b_{\mathrm{scale}}/g\) bits to each weight:

Group size and scale overhead

\[ b_{\mathrm{eff}} = b_{\mathrm{weight}} + \frac{b_{\mathrm{scale}}}{g} \]

Scale share versus group size. Lines use 16-bit scales for 1-, 2-, 4-, and 8-bit weights. Format dots use 8-bit block scales: NVFP4 with 1D scaling at group 16 and 11.1%; MXFP4, MXFP6, and MXFP8 at group 32 and 5.9%, 4.0%, and 3.0%. A zoom shows the format dots separately. Scale share versus group size. Lines use 16-bit scales for 1-, 2-, 4-, and 8-bit weights. Format dots use 8-bit block scales: NVFP4 with 1D scaling at group 16 and 11.1%; MXFP4, MXFP6, and MXFP8 at group 32 and 5.9%, 4.0%, and 3.0%. A zoom shows the format dots separately.

Lines use 16-bit scales. Dots use 8-bit block scales: NVFP4[2] shares an E4M3 scale across 16 values; MXFP8, MXFP6, and MXFP4[3] share an E8M0 scale across 32. NVFP4’s extra per-tensor scale is excluded.

With a 16-bit scale and groups of 32, the scale adds 0.5 bits per weight to every format. That is 33% of a 1-bit model’s storage, against 6% of an 8-bit model’s. Groups of 8 already cost 3 bits per weight at one bit, and a scale per weight costs 17, more than the 16-bit original.

Boole-1.7B

Boole-1.7B is a 1-bit version of Qwen3-1.7B, intended for English-language inference in non-thinking mode. The summary above compares it with the BF16 original and with PrismML’s 1-bit Bonsai-1.7B, in average score and in intelligence density: capability per gigabyte of weights.

Qwen3-1.7B at other precisions

The same base model exists at many precisions. The chart places Boole among them: Qwen3-1.7B in BF16 and FP8, Unsloth’s GGUF quantizations from 1 to 8 bits, and PrismML’s binary and ternary Bonsai-1.7B.

At nearly the same weight storage, Boole averages 5.58 points above binary Bonsai-1.7B (44.97). Ternary Bonsai-1.7B averages 51.57, 1.02 points above Boole, with 1.9× Boole’s weight storage. Unsloth’s 3-bit GGUFs average 46.57 (Q3_K_S) and 53.66 (Q3_K_M) at 3.5× and 3.8× Boole’s weight storage.

Compression formats within Qwen3-1.7B

29 evaluated formats. Vertical guides show ideal weight storage before format overhead; the horizontal axis uses recorded storage sizes. Scores are equal-weight ten-task averages from our evaluation.

Compression formats within Qwen3-1.7B29 visible model-format variants. Boole scores 50.55 at 247.0 MB. Colors and shapes distinguish model families. Faint lines connect their evaluated formats. The line marks the Pareto frontier of the visible models. Model storage uses a logarithmic horizontal axis; checkpoint file sizes are labeled. Vertical dashed guides mark ideal 1–8-bit storage for the Qwen3-1.7B parameter count, excluding quantization scales and other overhead.Ten-task average (%)020406080100 MB250 MB500 MB1 GB2 GB4.5 GBIdeal 1-bit weight storage: 215.1 MB, excluding quantization scales and other overhead.1-bitIdeal 2-bit weight storage: 430.1 MB, excluding quantization scales and other overhead.2-bitIdeal 3-bit weight storage: 645.2 MB, excluding quantization scales and other overhead.3-bitIdeal 4-bit weight storage: 860.3 MB, excluding quantization scales and other overhead.4-bitIdeal 5-bit weight storage: 1075.4 MB, excluding quantization scales and other overhead.5-bitIdeal 6-bit weight storage: 1290.4 MB, excluding quantization scales and other overhead.6-bitIdeal 7-bit weight storage: 1505.5 MB, excluding quantization scales and other overhead.7-bitIdeal 8-bit weight storage: 1720.6 MB, excluding quantization scales and other overhead.8-bitModel storage · log scale →prism-ml/Bonsai-1.7B-gguf | 1-bit | 242.4 MB stored weights | 44.97 averageprism-ml/Ternary-Bonsai-1.7B-gguf | 2-bit packed (2.13 BPW) | 457.3 MB stored weights | 51.57 averageunsloth/Qwen3-1.7B-GGUF | UD-IQ1_S | 531.9 MB stored weights | 5.92 averageunsloth/Qwen3-1.7B-GGUF | UD-IQ1_M | 556.0 MB stored weights | 5.89 averageunsloth/Qwen3-1.7B-GGUF | UD-IQ2_XXS | 599.8 MB stored weights | 11.09 averageunsloth/Qwen3-1.7B-GGUF | UD-IQ2_M | 702.8 MB stored weights | 33.75 averageunsloth/Qwen3-1.7B-GGUF | Q2_K / Q2_K_L | 771.8 MB stored weights | 40.11 averageunsloth/Qwen3-1.7B-GGUF | UD-Q2_K_XL | 791.9 MB stored weights | 40.79 averageunsloth/Qwen3-1.7B-GGUF | UD-IQ3_XXS | 759.2 MB stored weights | 45.74 averageunsloth/Qwen3-1.7B-GGUF | Q3_K_S | 861.3 MB stored weights | 46.57 averageunsloth/Qwen3-1.7B-GGUF | Q3_K_M | 933.6 MB stored weights | 53.66 averageunsloth/Qwen3-1.7B-GGUF | UD-Q3_K_XL | 962.9 MB stored weights | 53.96 averageunsloth/Qwen3-1.7B-GGUF | IQ4_XS | 1004.4 MB stored weights | 56.50 averageunsloth/Qwen3-1.7B-GGUF | Q4_K_S | 1054.2 MB stored weights | 57.17 averageunsloth/Qwen3-1.7B-GGUF | IQ4_NL | 1048.5 MB stored weights | 56.45 averageunsloth/Qwen3-1.7B-GGUF | Q4_0 | 1050.8 MB stored weights | 55.93 averageunsloth/Qwen3-1.7B-GGUF | Q4_1 | 1136.6 MB stored weights | 57.72 averageunsloth/Qwen3-1.7B-GGUF | Q4_K_M | 1101.5 MB stored weights | 57.59 averageunsloth/Qwen3-1.7B-GGUF | UD-Q4_K_XL | 1127.0 MB stored weights | 57.08 averageunsloth/Qwen3-1.7B-GGUF | Q5_K_S | 1224.6 MB stored weights | 57.68 averageunsloth/Qwen3-1.7B-GGUF | Q5_K_M | 1251.9 MB stored weights | 57.36 averageunsloth/Qwen3-1.7B-GGUF | UD-Q5_K_XL | 1257.0 MB stored weights | 56.95 averageunsloth/Qwen3-1.7B-GGUF | Q6_K | 1411.8 MB stored weights | 57.83 averageunsloth/Qwen3-1.7B-GGUF | UD-Q6_K_XL | 1605.0 MB stored weights | 57.39 averageunsloth/Qwen3-1.7B-GGUF | Q8_0 | 1828.5 MB stored weights | 58.21 averageunsloth/Qwen3-1.7B-GGUF | UD-Q8_K_XL | 2326.6 MB stored weights | 58.06 averageQwen/Qwen3-1.7B | BF16 safetensors | 3441.1 MB stored weights | 58.83 averageQwen/Qwen3-1.7B-FP8 | FP8 safetensors | 2032.0 MB stored weights | 57.48 averageBoole-1.7B | 1-bit | 247.0 MB stored weights | 50.55 averageBoole-1.7B50.55 · 247 MBTernary-Bonsai-1.7B51.57 · 457 MBQwen3-1.7B58.83 · 3.44 GB

Lines connect formats of the same model; the line connects the best observed averages at increasing storage sizes.

Boole improves on binary Bonsai in seven of ten tasks. The largest gains are in math and code; its scores are lower on MuSR, IFEval, and function calling (BFCLv3).

The small language model frontier

We next compare Boole with 23 small language models in 52 formats, all below 3 GB of weight storage.

Among the variants in this evaluation, Boole has the highest benchmark average at its storage size or below. The smallest variant with a higher average is Ternary-Bonsai-1.7B: 51.57 at 457 MB, or 1.9× Boole’s storage.

Boole among small language models

Each point is an evaluated format; the line connects the best ten-task averages at increasing storage. Choose the ten-task average or any single benchmark.

23 models · 52 evaluated formats

Boole among small language models52 visible model-format variants. Boole scores 50.55 at 247.0 MB. Colors and shapes distinguish model families. Faint lines connect their evaluated formats. The line marks the Pareto frontier of the visible models. Model storage uses a logarithmic horizontal axis; checkpoint file sizes are labeled. Ten-task average (%)020406080100 MB250 MB500 MB1 GB2 GB3 GBModel storage · log scale →prism-ml/Bonsai-1.7B-gguf | 1-bit | 242.4 MB stored weights | 44.97 averageprism-ml/Ternary-Bonsai-1.7B-gguf | 2-bit packed (2.13 BPW) | 457.3 MB stored weights | 51.57 averagegoogle/gemma-4-E2B-it-qat-mobile-ct | QAT mobile CT | 2570.2 MB stored weights | 60.04 averageLiquidAI/LFM2.5-230M-GGUF | BF16 GGUF | 459.5 MB stored weights | 32.91 averageLiquidAI/LFM2.5-230M-GGUF | QAD-Q4_0 GGUF | 146.7 MB stored weights | 31.51 averageLiquidAI/LFM2.5-230M-GGUF | Q5_K_M GGUF | 169.2 MB stored weights | 32.74 averageLiquidAI/LFM2.5-230M-GGUF | Q6_K GGUF | 188.6 MB stored weights | 32.65 averageLiquidAI/LFM2.5-230M-GGUF | Q8_0 GGUF | 244.2 MB stored weights | 33.20 averageLiquidAI/LFM2.5-350M-GGUF | Q5_K_M GGUF | 258.0 MB stored weights | 35.55 averageLiquidAI/LFM2.5-350M-GGUF | Q6_K GGUF | 291.0 MB stored weights | 36.56 averageLiquidAI/LFM2.5-350M-GGUF | Q8_0 GGUF | 376.8 MB stored weights | 36.88 averageLiquidAI/LFM2.5-350M-GGUF | QAD-Q4_0 GGUF | 216.9 MB stored weights | 36.09 averageLiquidAI/LFM2.5-1.2B-Instruct-GGUF | BF16 GGUF | 2340.9 MB stored weights | 58.48 averageLiquidAI/LFM2.5-350M-GGUF | BF16 GGUF | 709.1 MB stored weights | 36.60 averageopenbmb/MiniCPM5-1B-GGUF | Q4_K_M GGUF | 682.9 MB stored weights | 48.83 averageopenbmb/MiniCPM5-1B-GGUF | Q8_0 GGUF | 1148.4 MB stored weights | 54.48 averageopenbmb/MiniCPM5-1B-GGUF | F16 GGUF | 2161.4 MB stored weights | 53.99 averagenvidia/NVIDIA-Nemotron-3-Nano-4B-GGUF | Q4_K_M GGUF | 2829.2 MB stored weights | 67.17 averageLiquidAI/LFM2.5-1.2B-Instruct-GGUF | Q5_K_M GGUF | 841.0 MB stored weights | 58.15 averageLiquidAI/LFM2.5-1.2B-Instruct-GGUF | Q6_K GGUF | 960.5 MB stored weights | 58.52 averageLiquidAI/LFM2.5-1.2B-Instruct-GGUF | Q8_0 GGUF | 1243.9 MB stored weights | 57.98 averageLiquidAI/LFM2.5-1.2B-Instruct-GGUF | QAD-Q4_0 GGUF | 693.4 MB stored weights | 57.49 averageopenbmb/MiniCPM5-2B-GGUF | Q4_K_M GGUF | 1556.2 MB stored weights | 69.20 averageopenbmb/MiniCPM5-2B-GGUF | Q8_0 GGUF | 2674.6 MB stored weights | 73.47 averagemistralai/Ministral-3-3B-Instruct-2512-GGUF | Q4_K_M GGUF | 2138.6 MB stored weights | 61.97 averagemistralai/Ministral-3-3B-Instruct-2512-GGUF | Q5_K_M GGUF | 2465.8 MB stored weights | 62.95 averageibm-granite/granite-4.0-h-350m-GGUF | Q4_0 GGUF | 212.5 MB stored weights | 30.21 averageibm-granite/granite-4.0-h-350m-GGUF | Q5_0 GGUF | 245.4 MB stored weights | 33.02 averageibm-granite/granite-4.0-h-350m-GGUF | Q5_K_M GGUF | 248.8 MB stored weights | 32.98 averageLiquidAI/LFM2.5-2.6B-GGUF | Q4_0 GGUF | 1585.7 MB stored weights | 65.94 averageibm-granite/granite-4.0-h-350m-GGUF | Q5_K_S GGUF | 245.4 MB stored weights | 33.06 averageibm-granite/granite-4.0-h-350m-GGUF | Q6_K GGUF | 280.3 MB stored weights | 35.76 averageibm-granite/granite-4.0-h-350m-GGUF | Q8_0 GGUF | 362.6 MB stored weights | 34.54 averageibm-granite/granite-4.0-h-350m-GGUF | bf16 GGUF | 681.4 MB stored weights | 34.61 averageQwen/Qwen3-0.6B | BF16 safetensors | 1192.1 MB stored weights | 45.95 averageLiquidAI/LFM2.5-2.6B-GGUF | Q4_K_M GGUF | 1666.2 MB stored weights | 66.71 averageibm-granite/granite-4.0-h-1b-GGUF | Q4_K_M GGUF | 897.6 MB stored weights | 52.48 averageibm-granite/granite-4.0-h-1b-GGUF | Q8_0 GGUF | 1555.3 MB stored weights | 54.28 averageLiquidAI/LFM2.5-2.6B-GGUF | Q8_0 GGUF | 2866.5 MB stored weights | 67.84 averageibm-granite/granite-4.0-h-1b-GGUF | bf16 GGUF | 2924.8 MB stored weights | 54.74 averageunsloth/Qwen3.5-4B-GGUF | Q3_K_M GGUF | 2282.4 MB stored weights | 71.92 averageunsloth/Phi-4-mini-instruct-GGUF | Q3_K_M GGUF | 2109.3 MB stored weights | 49.95 averageprism-ml/Bonsai-4B-gguf | Q1_0 GGUF | 566.3 MB stored weights | 57.10 averageunsloth/Qwen3.5-4B-GGUF | Q4_K_M GGUF | 2730.0 MB stored weights | 73.18 averageunsloth/Phi-4-mini-instruct-GGUF | Q4_K_M GGUF | 2483.6 MB stored weights | 55.45 averageprism-ml/Bonsai-8B-gguf | Q1_0 GGUF | 1152.7 MB stored weights | 61.50 averageprism-ml/Ternary-Bonsai-4B-gguf | Q2_0 g128 GGUF | 1069.0 MB stored weights | 63.12 averageprism-ml/Ternary-Bonsai-8B-gguf | Q2_0 g128 GGUF | 2176.2 MB stored weights | 66.03 averageunsloth/Qwen3.5-2B-GGUF | Q4_K_M GGUF | 1269.9 MB stored weights | 56.63 averageunsloth/Qwen3.5-2B-GGUF | Q8_0 GGUF | 2001.1 MB stored weights | 58.32 averageQwen/Qwen3.5-0.8B | BF16 safetensors | 1746.9 MB stored weights | 42.17 averageBoole-1.7B | 1-bit | 247.0 MB stored weights | 50.55 averageBoole-1.7B50.55 · 247 MBTernary-Bonsai-1.7B51.57 · 457 MBMiniCPM5-2B73.47 · 2.67 GB

Connect formats links variants of the same model.

Intelligence density

Intelligence density measures benchmark capability per unit of weight storage. We use PrismML’s definition[4], −ln(1 − average/100) / storage_GB, with the natural logarithm and decimal GB, computed from each model’s ten-task average and its recorded storage size. Higher is better.

Boole has the highest intelligence density of the evaluated models, 2.85 per GB. The next highest is LFM2.5-230M at 2.58.

Intelligence density of small language models

The ten models with the highest intelligence density, each at its best format. Density uses the ten-task average.

What's next?

We are building systems to make your hardware more valuable, and pushing the efficiency frontier to benefit the open-source community. For local developers, let us know what you would like to see next. For teams and businesses, reach out to collaborate so we can help your team or business get the most out of your hardware.

References

  1. Rastegari et al. (2016). XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks. Section 3.1, equations 2–6.
  2. NVIDIA. NVFP4. Transformer Engine documentation, data format and scaling factors.
  3. Open Compute Project (2023). OCP Microscaling Formats (MX) Specification, version 1.0.
  4. PrismML. Bonsai-8B whitepaper. Intelligence density definition.

Cite Boole

@misc{precisionnumerics2026boole1p7b,
  author = {{Precision Numerics}},
  title = {{Boole}-1.7B},
  year = {2026},
  month = {October},
  url = {https://huggingface.co/precision-numerics/Boole-1.7B}
}