bitnet.cpp: lokale Inferenz für ternäre Sprachmodelle
microsoft/BitNet · 40.348★ · 3.740 forks
Alles Wissenswerte über microsoft/BitNet: Microsofts offizielles Framework zum Ausführen von 1,58-Bit-Sprachmodellen mit optimierten CPU- und GPU-Kernen.
Was BitNet ist
bitnet.cpp ist Microsofts offizielles Inferenz-Framework für 1-Bit-Sprachmodelle, insbesondere BitNet b1.58. Sein Zweck ist es, ternäre Gewichte und quantisierte Aktivierungen über spezialisierte Kerne auszuführen, nicht ein konventionell trainiertes Modell nachträglich in eine beliebige Quantisierung umzuwandeln.
Das Projekt deckt konversationelle Generierung ab und seit Juli 2026 mehrsprachige Embedding-Modelle. Letztere erzeugen dichte Vektoren für Retrieval, Clustering, semantische Ähnlichkeit, Klassifizierung, Paralleltext-Mining und Reranking.
Der Ursprung: von einer Forschungslinie zu einer Inferenz-Engine
Die dem Repository vorausgehende Forschung reicht zurück bis zum ursprünglichen BitNet-Paper, veröffentlicht am 17. Oktober 2023; das README datiert die Vorstellung von BitNet b1.58 auf den 27. Februar 2024. Das Repository microsoft/BitNet wurde am 5. August 2024 erstellt, und seine Version 1.0 wurde am 17. Oktober desselben Jahres angekündigt.
Der technische Kontext ist eine Spannung zwischen dem Interesse an ternären Gewichten und dem Fehlen eines praktikablen Inferenzpfads am Edge. Der Bericht von 2024 präsentiert einen Software-Stack für schnelle, verlustfreie Inferenz von BitNet b1.58 auf CPU, während der Systembericht von 2025 die Matrixmultiplikation mit gemischter Präzision als dominierende Kostenquelle identifiziert und die Kernfamilien TL und I2_S vorschlägt.

Es wurde kein einzelner Beitrag gefunden, der das Repository einer einzelnen Person zuschreibt. Die überprüfbare Autorenschaft des Systemberichts umfasst Jinheng Wang, Hansong Zhou, Ting Song, Shijie Cao, Yan Xia, Ting Cao, Jianyu Wei, Shuming Ma, Hongyu Wang und Furu Wei; das besitzende Konto ist die Organisation Microsoft.
Philosophie und Prinzipien
Der Ansatz verspricht nicht, dass jedes LLM kostenlos in ein 1-Bit-Modell umgewandelt werden kann. BitNet-Modelle werden mit ternären Gewichten {-1, 0, +1} und 8-Bit-Aktivierungen trainiert; die Embedding-Dokumente stellen klar, dass es sich nicht um Quantisierung nach dem Training handelt.
Seine Betriebsprinzipien sind:
- Die ternäre Struktur von Grund auf nutzen: I2_S packt die Gewichte, und TL nutzt ternäre Nachschlagetabellen, um Arbeit und Datenbewegung zu reduzieren.
- Effiziente lokale Ausführung priorisieren: Der CPU-Bericht kommuniziert Beschleunigungen von 2,37× bis 6,17× auf x86 und 1,37× bis 5,07× auf ARM gegenüber Referenzen voller Präzision, unter seinen experimentellen Konfigurationen.
- Einen interoperablen Pfad beibehalten: Das Projekt stützt sich auf
llama.cpp, und seine I2_S-Operationen sind in dessen Berechnungsgraphen integriert; es ist kein isolierter Ersatz für das GGUF-Ökosystem.

Wie es funktioniert
Der übliche CPU-Ablauf lädt ein kompatibles GGUF-Modell herunter, baut das Projekt und führt run_inference.py aus. Das Ausführbare akzeptiert den Modellpfad, einen Prompt, die Token-Anzahl, Threads, Kontext, Temperatur und den Konversationsmodus.
Auf der CPU parallelisieren die Kerne die Berechnung von Gewichten und Aktivierungen und erlauben es, Blöcke und Parallelität in include/gemm-config.h anzupassen. Die Dokumentation empfiehlt Aktivierungsparallelität für I2_S, da sie das Entpacken der Gewichte amortisiert.
Es gibt außerdem einen W2A8-GPU-Pfad: einen CUDA-Kernel für ein Matrix-Vektor-Produkt mit 2-Bit-Gewichten und 8-Bit-Aktivierungen. Der Leitfaden beschreibt 16×32-Gewichtsblöcke, das Packen von Zwei-Bit-Werten und die Verwendung der dp4a-Instruktion; seine Zahlen sind eigene Messungen auf einer 40-GB-NVIDIA-A100, kein unabhängiger Vergleich.

Offizieller und halboffizieller Status
Das Repository beschreibt sich selbst explizit als Microsofts offizielles Inferenz-Framework für 1-Bit-LLMs. Es verlinkt außerdem Microsofts offizielle Modelle auf Hugging Face, darunter BitNet-b1.58-2B-4T und zwei Embedding-Modelle.
Sein halboffizieller Status gegenüber llama.cpp ist technischer, nicht institutioneller Natur: Das README erklärt, dass das Projekt auf diesem Framework aufbaut und seine Kerne auf T-MACs Methodiken zurückgreifen. Es wurde kein Beleg dafür gefunden, dass BitNet als Marktplatz, formaler Standard oder von einem Drittunternehmen zertifiziertes Produkt aufgenommen wurde.
Das Ökosystem
Microsoft-Komponenten und -Modelle
microsoft/T-MAC: eine Nachschlagetabellen-Methodik, die das README als Grundlage der Kerne von bitnet.cpp identifiziert; für allgemeine Low-Precision-LLM-Inferenz empfiehlt es T-MAC.microsoft/VibeASR.cpp: eine mehrsprachige Echtzeit-Spracherkennungs-Engine auf CPU, die das README am 23. Juli 2026 ankündigte und die BitNet-I2_S-Quantisierung nutzt.microsoft/BitNet-b1.58-2B-4T,microsoft/BitNet-embedding-0.6Bundmicrosoft/BitNet-embedding-270M: vom Projekt auf Hugging Face verlinkte Modelle. Die Embedding-Modelle sind mehrsprachig und werden mit Retrieval, Klassifizierung und weiteren semantischen Abläufen dokumentiert.
Das Repository präsentiert in seinen Hauptinformationen keinen Katalog von Schwesterkomponenten; die dokumentierten First-Party-Beziehungen sind T-MAC, VibeASR.cpp und die oben verlinkten Modelle.
Community-Anpassungen und verwandte Projekte
Beomi/BitNet-Transformers: eine BitNet-Implementierung für Hugging Face Transformers mit Llama-Architektur; die GitHub-Suche lieferte 316 Sterne.Oxen-AI/BitNet-1.58-Instruct: eine Implementierung zur Instruktionsabstimmung für BitNet 1.58; 33 Sterne in derselben Suche.JohnMasen/BitNetSharp: eine C#-Implementierung von Microsofts BitNet; 2 Sterne.Liminal-Commons/bitnet-mcp: ein MCP-Wrapper zur Textgenerierung über einenllama-Server mit BitNet-b1.58-2B-4T; die Suche lieferte ihn mit 0 Sternen.
Die exakte Suche förderte auch einfache Forks zutage, wie Scottcjn/BitNet mit 66 Sternen. Es wird als Fork eingestuft, da es die Beschreibung des Originals beibehält; es wird nicht als unabhängiger Port dargestellt. Es wurde keine nicht-englische Übersetzung mit expliziter Beziehung zum Repository gefunden.
Zahlen des Repos
Messung: 11. August 2026, GitHub-API.
| Metrik | Wert |
|---|---|
| Sterne | 39.973 |
| Forks | 3.687 |
| Echte Abonnenten | 349 |
| Commits | 110 |
| Von der API gemeldete offene Issues | 315 |
| Hauptsprache | C++ |
| Lizenz | MIT |
| Erstellung | 5. August 2024 |
| Letzter Code-Push | 27. Juli 2026 |
| GitHub-Releases | Kein formales Release gefunden |

Die Gesamtzahl von 110 Commits stammt vom letzten Paginierungs-Link der API. open_issues_count kann offene Pull Requests einschließen. Ebenso spiegelt watchers_count in GitHubs allgemeiner Antwort die Sterne wider; deshalb wird subscribers_count als tatsächliche Abonnenten angegeben.
Die von der API zurückgegebenen führenden Contributor nach Beitragszahl sind potassiummmm (19), tsong-ms (16), younesbelkada (15), isHuangXin (11) und XsquirrelC (7).
Wie man beiträgt
Es wurde weder eine CONTRIBUTING.md-Anleitung noch eine spezifische Richtlinie zu Forks, Branches oder Pull Requests gefunden. Im Root-Verzeichnis finden sich jedoch ein Verhaltenskodex und eine Sicherheitsrichtlinie, und die Pull-Request-Aktivität zeigt Community-Vorschläge; das belegt vorhandene Kollaborationskanäle, entspricht aber keinem dokumentierten Beitragsprozess.
Kurzanleitung zur Nutzung
Installation und erster Start
- Python 3.10 oder neuer, CMake 3.22 oder neuer, Clang 18 oder neuer und, wie empfohlen, Conda sind erforderlich.
- Mit Submodulen klonen und die Umgebung erstellen:
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
conda create -n bitnet-cpp python=3.10
conda activate bitnet-cpp
pip install -r requirements.txt
- Das offizielle GGUF-Modell herunterladen und den Build vorbereiten:
huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf --local-dir models/BitNet-b1.58-2B-4T
python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_s
Die Vorbereitung baut das Projekt; das erste nützliche Ergebnis ist die GGUF-Datei im Modellverzeichnis und die erstellten Binärdateien.

Übliche Arbeitsabläufe
- Lokale Konversation:
python run_inference.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf -p "You are a helpful assistant" -cnvstartet den Konversationsmodus; der Prompt wird als Systemnachricht verwendet. - Leistungstest:
python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4misst die Generierung mit 200 Token, einem 256-Token-Prompt und vier Threads. - Gewichtskonvertierung: nach dem Herunterladen von
safetensors-Gewichten erzeugtpython ./utils/convert-helper-bitnet.py ./models/bitnet-b1.58-2B-4T-bf16die GGUF-Variante. - Embeddings: mit dem im Leitfaden genannten Submodul-Branch liefert
./build/bin/llama-embedding -m /path/to/save/model/bitnet-embedding-0.6b/ggml-model-i2_s.gguf -p "query: What is BitNet?" --embd-normalize 2 --embd-output-format arrayeinen normalisierten Vektor.

Wesentliche Konfiguration
setup_env.py -md: legt das lokale Modellverzeichnis fest;-qwählti2_sodertl1.run_inference.py -t,-cund-temp: steuern Threads, Kontextgröße und Temperatur.include/gemm-config.h: enthältROW_BLOCK_SIZE,COL_BLOCK_SIZEundPARALLEL_SIZE, um den CPU-Kernel an Cache und Architektur anzupassen.--quant-embd: eine Option vonsetup_env.pyzum Konvertieren der Embeddings nach Q6_K.
Häufige Fallstricke und Lösungen
- Die aktuelle Dokumentation verwendet
huggingface-cli; ein aktueller Pull Request erklärt, dass neuere Versionen vonhuggingface_hubdieses Ausführbare entfernt haben, und schlägt vor, es durchhfzu ersetzen. Erscheint „command not found”, handelt es sich um eine bekannte Inkompatibilität dieses dokumentierten Ablaufs; die verfügbare Hugging-Face-Oberfläche nutzen oder der vorgeschlagenen Korrektur folgen. - Unter Windows muss die Visual Studio 2022 Developer Console verwendet werden. Wird
clangnicht erkannt, weist das README an, die Visual-Studio-Tools vor dem Build zu initialisieren. - Das README vermerkt
std::chrono-Fehler beim Bauen desllama.cpp-Submoduls und verweist auf einen bestimmten Commit als Lösung. Es gibt außerdem Build-Probleme mit nicht unterstützten Compiler-Flags; es sollte nicht angenommen werden, dass jeder GCC die erforderliche Clang-Version ersetzt. - Bei Embedding-Modellen verlangt der Leitfaden, der Anfrage eine Anweisung voranzustellen; das Weglassen verschlechtert die Leistung. Sie muss dem Dokument selbst nicht hinzugefügt werden.
Integrationen und Migration
bitnet.cpp hält Formate und Operationen an llama.cpp gebunden, und das Projekt selbst präsentiert es als seine Grundlage. Für Low-Precision-Workloads, die keine ternären Modelle sind, verweist das README auf T-MAC, statt universelle Kompatibilität zu versprechen.
Der in der Suche gefundene MCP-Pfad ist community-erstellt und umhüllt llama-server; er ist nicht Teil von Microsofts Repository. Für den GPU-Pfad bietet der offizielle Leitfaden Build und Test des CUDA-Kernels sowie einen interaktiven Generator.
Wie die Community reagierte
Es gibt überprüfbares Interesse, aber auch konkrete Einwände zur tatsächlichen Verfügbarkeit großer Modelle und zum Trainingsprozess:
- Der Hacker-News-Thread 47334694, eingereicht von redm, verlinkte direkt auf das Repository und hatte 370 Punkte und 167 Kommentare. QuadmasterXLII hinterfragte, dass die Überschrift hundert Milliarden Parameter nahelege, während die offiziellen Modelle zehn Milliarden nicht überschritten; est entgegnete, dies sei keine nachträgliche Quantisierung, und ternäre Nutzung müsse seit dem Vortraining bestehen.
- Im selben Thread bat 152334H darum, zwischen der Fähigkeit des Frameworks und der Existenz eines trainierten 100B-Modells zu unterscheiden. Dieser Vorbehalt deckt sich mit dem README: Es beschreibt die Fähigkeit, ein 100B-BitNet-b1.58-Modell auf CPU auszuführen, verlinkt jedoch kein offizielles Modell dieser Größe.
- Der frühere Thread 41877609, eingereicht von galeos, erreichte 173 Punkte und 33 Kommentare. zamadatix erklärte, dass „1,58 Bit” von drei möglichen Werten stammt; swfsql vertrat die Ansicht, lokale Inferenz sei der natürliche Markt, hinterfragte jedoch die Kosten des Trainings auf einer Nicht-BitNet-Architektur. Das sind Nutzerinterpretationen, keine experimentellen Ergebnisse.

Die Reddit-Recherche lieferte eine 403-Sperre, und Product Hunt lieferte ebenfalls 403; daraus wird keine Abwesenheit von Beiträgen geschlossen.
Die X-Suche wurde als App-Seite gefunden, bot jedoch keinen überprüfbaren Launch-Beitrag.
Die Podcast-Suche über iTunes lieferte keine überprüfbare exakte Übereinstimmung für das Repository.
Die YouTube-Suche lieferte tatsächlich das in den Ressourcen enthaltene Tutorial von LLM Master Cursos; dessen Titel und Dauer wurden direkt verifiziert, eine Aufrufzahl wurde jedoch nicht gefunden.
BitNet im Vergleich zu anderen Ansätzen
| Ansatz | Nachweisbare Beziehung | Nachweisbarer Unterschied |
|---|---|---|
llama.cpp | bitnet.cpp baut auf diesem Framework auf und integriert I2_S in dessen Berechnungsgraphen. | BitNet steuert Kerne und Formate bei, die auf ternäre Gewichte ausgerichtet sind; die Quelle belegt nicht, dass ganz llama.cpp eine BitNet-Implementierung ist. |
microsoft/T-MAC | Das README besagt, dass T-MACs Methodiken seine Kerne stützen. | Dasselbe README empfiehlt T-MAC für Low-Precision-LLM-Inferenz über ternäre Modelle hinaus. |
Beomi/BitNet-Transformers | Implementiert BitNet mit Hugging Face Transformers und Llama-Architektur. | Es ist eine in der Suche gefundene PyTorch/Transformers-Implementierung, nicht Microsofts offizielles C++-Inferenz-Framework. |
Oxen-AI/BitNet-1.58-Instruct | Implementiert Instruktionsabstimmung für BitNet 1.58. | Es konzentriert sich auf Instruktionsabstimmung; bitnet.cpp konzentriert sich auf Inferenz und Kerne. |
Anwendungsfälle und wem dieses Repository helfen kann
- Teams, die LLMs auf x86- oder ARM-Rechnern ausführen, können ein natives BitNet-Modell bewerten, um Energiekosten zu senken und die lokale Inferenzleistung zu verbessern, wobei sie die Zahlen des Projekts stets mit ihrer eigenen Hardware und Last abgleichen sollten.
- Entwickler lokaler Assistenten können den Konversationsmodus, die Steuerung von Threads und Kontext sowie das GGUF-Format nutzen, um eine interaktive Erfahrung ohne Abhängigkeit von einem entfernten Dienst aufzubauen.
- Teams für semantische Suche und RAG können die 0,6B- oder 270M-Embeddings und das Ausführbare
llama-embeddingnutzen, um normalisierte Vektoren auf CPU zu erzeugen. Der Leitfaden dokumentiert Retrieval, Reranking, Clustering und Klassifizierung und legt fest, wie die Anfrage zu formulieren ist. - Leistungs- und GPU-Engineering kann die W2A8-Kerne und ihre CUDA-Testskripte testen; die verfügbaren Zahlen sind projekteigen und müssen reproduziert werden, bevor sie als Produktionsziel verwendet werden.
Ressourcen
- Repository: https://github.com/microsoft/BitNet
- Dokumentation und Einrichtung: https://github.com/microsoft/BitNet#installation
- Technischer Systembericht: https://arxiv.org/abs/2502.11880
- Bericht zur CPU-Inferenz: https://arxiv.org/abs/2410.16144
- Offizielle Modelle: https://huggingface.co/collections/microsoft/bitnet
- Offizieller GPU-Kernel: https://github.com/microsoft/BitNet/blob/main/gpu/README.md
- Offizieller Embeddings-Leitfaden: https://github.com/microsoft/BitNet/blob/main/docs/bitnet-embeddings-i2s-guide.md
- Offizielle Demo: https://demo-bitnet-h0h8hcfqeqhrf5gf.canadacentral-01.azurewebsites.net/
- Video-Tutorial: https://www.youtube.com/watch?v=vgT12wWSHZA (LLM Master Cursos, 16 Min. 22 Sek.)
- Konversationen: https://news.ycombinator.com/item?id=47334694, https://news.ycombinator.com/item?id=41877609
Hinweis: Dieser Artikel kombiniert offizielle Dokumentation, technische Berichte, die GitHub-API und Hacker-News-Konversationen, abgerufen am 11. August 2026. Zahlen ändern sich mit der Zeit.
Kommentare