tritium
04Benchmarks

Every number, with its method attached.

Same host (AMD Ryzen 9 8945HX, Zen 4, AVX-512 VNNI), greedy decoding, 32 tokens, median of three invocations per baseline. Tritium decodes the four-prompt suite; the baselines generate from an empty context, because llama-bench takes no prompt file. Both are steady-state batch-1 decode.

bitnet.cpp runs the identical checkpoint, so that column is the honest comparison. llama.cpp runs Qwen2.5-3B Q4_K_M because mainline cannot load the i2_s type — a different model at a different quality point. This page should not be read as "ternary beats 4-bit".

510152025303540124816THREADSTOK/Stritium 15.0llama.cpp 22.8bitnet.cpp 30.5
Median of three, 32 tokens, greedy. Only Tritium fails to scale beyond two threads.

Raw rows

2026-08-23bitnet.cppI2_S112.54ok1187 MB file; same checkpoint; f16 token_embd; median of 3
2026-08-23bitnet.cppI2_S219.64ok1187 MB file; same checkpoint; f16 token_embd; median of 3
2026-08-23bitnet.cppI2_S427.29ok1187 MB file; same checkpoint; f16 token_embd; median of 3
2026-08-23bitnet.cppI2_S831.90ok1187 MB file; same checkpoint; f16 token_embd; median of 3
2026-08-23bitnet.cppI2_S1630.51ok1187 MB file; same checkpoint; f16 token_embd; median of 3
2026-08-23llama.cppQ4_K_M113.91ok2104 MB file; different model and quality point; median of 3
2026-08-23llama.cppQ4_K_M220.01ok2104 MB file; different model and quality point; median of 3
2026-08-23llama.cppQ4_K_M425.54ok2104 MB file; different model and quality point; median of 3
2026-08-23llama.cppQ4_K_M824.72ok2104 MB file; different model and quality point; median of 3
2026-08-23llama.cppQ4_K_M1622.84ok2104 MB file; different model and quality point; median of 3
2026-08-23tritiumternary-1.581avx512vnni13.28499.324.3651.11846ok
2026-08-23tritiumternary-1.582avx512vnni14.61462.726.8056.31846ok
2026-08-23tritiumternary-1.584avx512vnni15.23446.827.9353.91846ok
2026-08-23tritiumternary-1.588avx512vnni15.23445.827.9355.81845ok
2026-08-23tritiumternary-1.5816avx512vnni14.98454.527.4957.41846ok
2026-08-22bitnet.cppI2_S4unavailableno bitnet-cli on PATH; set BITNET_CPP_BIN
2026-08-22llama.cppQ4_K_M4unavailableno llama-bench or llama-cli on PATH; set LLAMA_CPP_BIN
2026-08-22tritiumternary-1.584avx512vnni15.01454.227.5461.62334ok

Unavailable rows are kept: a baseline that was not installed on that date is a fact about the run, not a gap in the table. Hover a truncated note for the full text.

Reproduce every number on this page
export LLAMA_CPP_BIN=/path/to/llama.cpp/build/bin/llama-bench
export LLAMA_GGUF=/path/to/qwen2.5-3b-instruct-q4_k_m.gguf
export BITNET_CPP_BIN=/path/to/bitnet.cpp/build/bin/llama-bench
export BITNET_GGUF=/path/to/ggml-model-i2_s.gguf
for T in 1 2 4 8 16; do
    benches/run.sh --model models/bitnet-2b4t.trit --tokens 32 --threads "$T"
done
The defaults differ from these parameters, so reproduce with exactly this invocation. Every performance claim ships with a script; a claim without one does not appear here.