Za projektem stojí Microsoft Research, konkrétně výzkumný tým, který od roku 2023 pracuje na architektuře 1-bit transformerů. Na vývoji se podílela i University of Chinese Academy of Sciences. Výsledkem je bitnet.cpp — open-source inference framework pro 1-bit LLM modely, dostupný na GitHubu pod MIT licencí.
Hlavní myšlenka je jednoduchá: místo standardních 16bitových nebo 32bitových vah ukládá BitNet b1.58 každý parametr jako ternární hodnotu (-1, 0, nebo +1), což jsou technicky 1.58 bitu. To dramaticky snižuje nároky na paměť a výpočetní výkon. Praktický dopad je zásadní — modely lze spouštět na běžném CPU bez GPU. Framework bitnet.cpp aktuálně podporuje inference na CPU i GPU, podpora NPU se připravuje.
Čísla mluví za sebe. Na ARM CPU dosahuje bitnet.cpp zrychlení 1.37× až 5.07× oproti standardnímu přístupu a snižuje spotřebu energie o 55,4 % až 70 %. Na x86 CPU je zrychlení ještě výraznější: 2.37× až 6.17× a úspora energie 71,9 % až 82,2 %. Vlajkový model BitNet b1.58 2B4T (2.4B parametrů, trénovaný na 4 trilionech tokenů) běží s pouhými 0.4 GB paměti (oproti ~2 GB u LLaMA 3.2 1B), zpracovává tokeny o 40 % rychleji a spotřebuje 0.028 J na inferenci — přibližně 12× méně než Qwen2.5. Na benchmarku GSM8K (matematické uvažování) BitNet b1.58 2B4T skóruje 58.38 a překonává srovnatelné modely v kategorii 1–2B parametrů. Microsoft navíc demonstroval spuštění 100B modelu na jediném CPU rychlostí 5–7 tokenů za sekundu — tedy tempem srovnatelným s lidským čtením.
| Model | Paměť (non-embedding) | Latence CPU | Energie / inference |
|---|---|---|---|
| BitNet b1.58 2B4T | 0.4 GB | 29 ms | 0.028 J |
| LLaMA 3.2 1B | ~2 GB | vyšší | — |
| Qwen2.5 1.5B | 1.4–4.8 GB | vyšší | 0.347 J |
| Gemma-3 1B | 1.4–4.8 GB | vyšší | ~0.17 J |
Zdroje:
- https://github.com/microsoft/BitNet
- https://huggingface.co/microsoft/bitnet-b1.58-2B-4T
- https://arxiv.org/abs/2410.16144
- https://arxiv.org/abs/2402.17764
- https://arxiv.org/html/2504.12285v1
- https://www.microsoft.com/en-us/research/publication/bitnet-a4-8-4-bit-activations-for-1-bit-llms/
![]()
