Führen Sie kleine KI-Modelle lokal mit BitNet aus – einem Leitfaden für Anfänger
Bild vom Autor

# Einführung

BitNet b1.58, entwickelt von Microsoft-Forschern, ist ein natives Low-Bit-Sprachmodell. Es wird von Grund auf mit ternären Gewichten mit den Werten (-1), (0) und (+1) trainiert. Anstatt ein großes vorab trainiertes Modell zu verkleinern, ist BitNet von Anfang an so konzipiert, dass es effizient und mit sehr geringer Präzision läuft. Dies reduziert die Speichernutzung und den Rechenbedarf und sorgt gleichzeitig für eine hohe Leistung.

Es gibt ein wichtiges Element. Wenn Sie BitNet mit der Commonplace-Transformers-Bibliothek laden, profitieren Sie nicht automatisch von den Geschwindigkeits- und Effizienzvorteilen. Um das Design vollständig nutzen zu können, müssen Sie die dedizierte C++-Implementierung namens bitnet.cpp verwenden, die speziell für diese Modelle optimiert ist.

In diesem Tutorial erfahren Sie, wie Sie BitNet lokal ausführen. Wir beginnen mit der Set up der erforderlichen Linux-Pakete. Dann werden wir bitnet.cpp aus dem Quellcode klonen und erstellen. Danach laden wir das 2B-Parameter-BitNet-Modell herunter, führen BitNet als interaktiven Chat aus, starten den Inferenzserver und verbinden ihn mit dem OpenAI Python SDK.

# Schritt 1: Installieren der erforderlichen Instruments unter Linux

Bevor wir BitNet aus dem Quellcode erstellen, müssen wir die grundlegenden Entwicklungstools installieren, die zum Kompilieren von C++-Projekten erforderlich sind.

  • Klirren ist der C++-Compiler, den wir verwenden werden.
  • CMake ist das Construct-System, das das Projekt konfiguriert und kompiliert.
  • Git ermöglicht es uns, das BitNet-Repository von GitHub zu klonen.

Installieren Sie zunächst LLVM (einschließlich Clang):

bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

Aktualisieren Sie dann Ihre Paketliste und installieren Sie die erforderlichen Instruments:

sudo apt replace
sudo apt set up clang cmake git

Sobald dieser Schritt abgeschlossen ist, ist Ihr System bereit, bitnet.cpp aus dem Quellcode zu erstellen.

# Schritt 2: BitNet aus dem Quellcode klonen und erstellen

Nachdem nun die erforderlichen Instruments installiert sind, klonen wir das BitNet-Repository und erstellen es lokal.

Klonen Sie zunächst das offizielle Repository und verschieben Sie es in den Projektordner:

git clone — recursive https://github.com/microsoft/BitNet.git
cd BitNet

Erstellen Sie als Nächstes eine virtuelle Python-Umgebung. Dadurch bleiben Abhängigkeiten von Ihrem System-Python isoliert:

python -m venv venv
supply venv/bin/activate

Installieren Sie die erforderlichen Python-Abhängigkeiten:

pip set up -r necessities.txt

Jetzt kompilieren wir das Projekt und bereiten das 2B-Parametermodell vor. Der folgende Befehl erstellt das C++-Backend mit CMake und richtet das BitNet-b1.58-2B-4T-Modell ein:

python setup_env.py -md fashions/BitNet-b1.58-2B-4T -q i2_s

Wenn Sie auf ein Kompilierungsproblem im Zusammenhang mit int8_t * y_col stoßen, wenden Sie diese Schnellkorrektur an. Es ersetzt den Zeigertyp bei Bedarf durch einen const-Zeiger:

sed -i 's/^(((:area:))*)int8_t * y_col/1const int8_t * y_col/' src/ggml-bitnet-mad.cpp

Nachdem dieser Schritt erfolgreich abgeschlossen wurde, wird BitNet erstellt und kann lokal ausgeführt werden.

# Schritt 3: Herunterladen eines leichten BitNet-Modells

Jetzt laden wir das leichte 2B-Parameter-BitNet-Modell im GGUF-Format herunter. Dieses Format ist für die lokale Inferenz mit bitnet.cpp optimiert.

Das BitNet-Repository stellt mithilfe der Hugging Face-CLI eine Verknüpfung für unterstützte Modelle bereit.

Führen Sie den folgenden Befehl aus:

hf obtain microsoft/BitNet-b1.58-2B-4T-gguf — local-dir fashions/BitNet-b1.58-2B-4T

Dadurch werden die erforderlichen Modelldateien in das Verzeichnis fashions/BitNet-b1.58-2B-4T heruntergeladen.

Während des Downloads sehen Sie möglicherweise eine Ausgabe wie diese:

data_summary_card.md: 3.86kB (00:00, 8.06MB/s)
Obtain full. Shifting file to fashions/BitNet-b1.58-2B-4T/data_summary_card.md

ggml-model-i2_s.gguf: 100%|&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;| 1.19G/1.19G (00:11<00:00, 106MB/s)
Obtain full. Shifting file to fashions/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf

Fetching 4 information: 100%|&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;&block;| 4/4 (00:11<00:00, 2.89s/it)

Nach Abschluss des Downloads sollte Ihr Modellverzeichnis wie folgt aussehen:

BitNet/fashions/BitNet-b1.58-2B-4T

Sie haben jetzt das 2B-BitNet-Modell für die lokale Inferenz bereit.

# Schritt 4: Ausführen von BitNet im interaktiven Chat-Modus auf Ihrer CPU

Jetzt ist es an der Zeit, BitNet lokal im interaktiven Chat-Modus mit Ihrer CPU auszuführen.

Verwenden Sie den folgenden Befehl:

python run_inference.py 
 -m "fashions/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf" 
 -p "You're a useful assistant." 
 -cnv

Was das bewirkt:

  • -m lädt die GGUF-Modelldatei
  • -p legt die Systemeingabeaufforderung fest
  • -cnv aktiviert den Konversationsmodus

Sie können die Leistung auch mithilfe dieser optionalen Flags steuern:

  • -t 8 legt die Anzahl der CPU-Threads fest
  • -n 128 legt die maximale Anzahl der generierten neuen Token fest

Beispiel mit optionalen Flags:

python run_inference.py 
 -m "fashions/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf" 
 -p "You're a useful assistant." 
 -cnv -t 8 -n 128

Sobald es ausgeführt wird, sehen Sie eine einfache CLI-Chat-Oberfläche. Sie können eine Frage eingeben und das Modell wird direkt in Ihrem Terminal antworten.

Führen Sie kleine KI-Modelle lokal mit BitNet aus – einem Leitfaden für Anfänger

Wir haben zum Beispiel gefragt, wer der reichste Mensch der Welt ist. Das Modell antwortete mit einer klaren und lesbaren Antwort basierend auf seinem Wissensgrenzwert. Auch wenn es sich um ein kleines 2B-Parametermodell handelt, das auf der CPU läuft, ist die Ausgabe kohärent und nützlich.

Führen Sie kleine KI-Modelle lokal mit BitNet aus – einem Leitfaden für Anfänger

Zu diesem Zeitpunkt läuft auf Ihrem Pc ein voll funktionsfähiger lokaler KI-Chat.

# Schritt 5: Starten eines lokalen BitNet-Inferenzservers

Jetzt starten wir BitNet als lokalen Inferenzserver. Dadurch können Sie über einen Browser auf das Modell zugreifen oder es mit anderen Anwendungen verbinden.

Führen Sie den folgenden Befehl aus:

python run_inference_server.py 
  -m fashions/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf 
 — host 0.0.0.0 
 — port 8080 
 -t 8 
 -c 2048 
 — temperature 0.7

Was diese Flaggen bedeuten:

  • -m lädt die Modelldatei
  • -host 0.0.0.0 macht den Server lokal zugänglich
  • -port 8080 führt den Server auf Port 8080 aus
  • -t 8 legt die Anzahl der CPU-Threads fest
  • -c 2048 legt die Kontextlänge fest
  • -Temperatur 0,7 steuert die Reaktionskreativität

Sobald der Server gestartet ist, ist er auf Port 8080 verfügbar.

Führen Sie kleine KI-Modelle lokal mit BitNet aus – einem Leitfaden für Anfänger

Öffnen Sie Ihren Browser und gehen Sie zu http://127.0.0.1:8080. Sie sehen eine einfache Net-Benutzeroberfläche, über die Sie mit BitNet chatten können.

Die Chat-Oberfläche ist reaktionsschnell und flüssig, auch wenn das Modell lokal auf der CPU läuft. Zu diesem Zeitpunkt läuft auf Ihrem Pc ein voll funktionsfähiger lokaler KI-Server.

Führen Sie kleine KI-Modelle lokal mit BitNet aus – einem Leitfaden für Anfänger

# Schritt 6: Herstellen einer Verbindung zu Ihrem BitNet-Server mithilfe des OpenAI Python SDK

Da Ihr BitNet-Server nun lokal ausgeführt wird, können Sie über das OpenAI Python SDK eine Verbindung zu ihm herstellen. Dadurch können Sie Ihr lokales Modell wie eine Cloud-API verwenden.

Installieren Sie zunächst das OpenAI-Paket:

Erstellen Sie als Nächstes ein einfaches Python-Skript:

from openai import OpenAI

consumer = OpenAI(
   base_url="http://127.0.0.1:8080/v1",
   api_key="not-needed"  # many native servers ignore this
)

resp = consumer.chat.completions.create(
   mannequin="bitnet1b",
   messages=(
       {"function": "system", "content material": "You're a useful assistant."},
       {"function": "person", "content material": "Clarify Neural Networks in easy phrases."}
   ),
   temperature=0.7,
   max_tokens=200,
)

print(resp.decisions(0).message.content material)

Folgendes passiert:

  • base_url verweist auf Ihren lokalen BitNet-Server
  • api_key wird vom SDK benötigt, aber normalerweise von lokalen Servern ignoriert
  • Das Modell sollte mit dem von Ihrem Server bereitgestellten Modellnamen übereinstimmen
  • Nachrichten definieren das System und Benutzeraufforderungen

Ausgabe:

Neuronale Netze sind eine Artwork maschinelles Lernmodell, das vom menschlichen Gehirn inspiriert ist. Sie dienen dazu, Muster in Daten zu erkennen. Betrachten Sie sie als eine Gruppe von Neuronen (wie winzige Gehirnzellen), die zusammenarbeiten, um ein Drawback zu lösen oder eine Vorhersage zu treffen.

Stellen Sie sich vor, Sie versuchen zu erkennen, ob auf einem Bild eine Katze oder ein Hund abgebildet ist. Ein neuronales Netzwerk würde das Bild als Eingabe nehmen und es verarbeiten. Jedes Neuron im Netzwerk würde einen kleinen Teil des Bildes analysieren, etwa einen Schnurrbart oder einen Schwanz. Diese Informationen würden sie dann an andere Neuronen weitergeben, die das Gesamtbild analysieren würden.

Durch den Austausch und die Kombination der Informationen kann das Netzwerk entscheiden, ob das Bild eine Katze oder einen Hund zeigt.

Zusammenfassend lässt sich sagen, dass neuronale Netze für Pc eine Möglichkeit sind, aus Daten zu lernen, indem sie die Funktionsweise unseres Gehirns nachahmen. Sie können Muster erkennen und auf der Grundlage dieser Erkenntnis Entscheidungen treffen.

# Abschließende Bemerkungen

Was mir an BitNet am besten gefällt, ist die Philosophie dahinter. Es ist nicht nur ein weiteres quantisiertes Modell. Es ist von Grund auf auf Effizienz ausgelegt. Diese Designwahl wird deutlich, wenn man sieht, wie leicht und reaktionsschnell es ist, selbst auf bescheidener {Hardware}.

Wir begannen mit einem sauberen Linux-Setup und installierten die erforderlichen Entwicklungstools. Von dort aus haben wir bitnet.cpp aus dem Quellcode geklont und erstellt und das 2B-GGUF-Modell vorbereitet. Nachdem alles kompiliert conflict, führten wir BitNet im interaktiven Chat-Modus direkt auf der CPU aus. Dann gingen wir noch einen Schritt weiter, indem wir einen lokalen Inferenzserver starteten und ihn schließlich mit dem OpenAI Python SDK verbanden.

Abid Ali Awan (@1abidaliawan) ist ein zertifizierter Datenwissenschaftler, der gerne Modelle für maschinelles Lernen erstellt. Derzeit konzentriert er sich auf die Erstellung von Inhalten und das Schreiben technischer Blogs zu maschinellem Lernen und Datenwissenschaftstechnologien. Abid verfügt über einen Grasp-Abschluss in Technologiemanagement und einen Bachelor-Abschluss in Telekommunikationstechnik. Seine Imaginative and prescient ist es, ein KI-Produkt mithilfe eines graphischen neuronalen Netzwerks für Schüler mit psychischen Erkrankungen zu entwickeln.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert