Dank der weltweiten Open-Source-Gemeinschaft ist es heute einfacher denn je, leistungsstarke große Sprachmodelle (LLM) auf Verbraucher-Laptops oder CPU-basierten Servern auszuführen und über gut gestaltete grafische Benutzeroberflächen einfach mit ihnen zu interagieren.
Dies ist besonders wertvoll für alle Organisationen, die keine Dienste nutzen dürfen oder wollen, die das Senden von Daten an einen Dritten erfordern.
Dieses Tutorial zeigt, wie man einen lokalen LLM mit einer ChatGPT-ähnlichen Benutzeroberfläche in vier einfachen Schritten einrichtet. Wenn Sie die vorausgesetzte Software installiert haben, werden Sie nicht mehr als 15 Minuten Arbeit benötigen (abgesehen von der Rechenzeit, die in einigen der Schritte benötigt wird).
Diese Anleitung setzt voraus, dass Sie die folgenden Programme auf Ihrem Rechner installiert haben:
- Ollama
- Docker
- React
- Python und gemeinsame Pakete einschließlich Transformatoren
Also, los geht’s!
Schritt 1 – Entscheiden Sie, welches Huggingface LLM Sie verwenden möchten
Der erste Schritt besteht darin, zu entscheiden, welchen LLM Sie vor Ort durchführen möchten. Vielleicht haben Sie bereits eine Idee. Ansonsten scheint für Englisch die instruierte Version von Mistral 7b die erste Wahl zu sein.
Sobald Sie sich für ein LLM entschieden haben, kopieren Sie den Huggingface-„Pfad“ in das Modell. Für Mistral 7b wäre das „mistralai/Mistral-7B-v0.1“. Du wirst ihn im nächsten Schritt brauchen.
Schritt 2 – Quantisierung des LLM
Der nächste Schritt ist die Quantisierung des gewählten Modells, es sei denn, Sie haben ein Modell ausgewählt, das bereits quantisiert wurde. Wenn der Name Ihres Modells auf GGUF oder GPTQ endet, ist es bereits quantisiert.
Die Quantisierung ist eine Technik, bei der die Gewichte eines Modells (seine gelernten Parameter) in einen kleineren Datentyp als das Original umgewandelt werden, z. B. von fp16 in int4. Dadurch nimmt das Modell weniger Speicherplatz in Anspruch und die Inferenz wird schneller ausgeführt, was eine nette Funktion ist, wenn man auf der CPU arbeitet.
Das Skript quantize.py in meinem Repo local_llm wurde von Maxime Labonnes fantastischem Colab-Notizbuch adaptiert (siehe seinen LLM-Kurs für andere großartige LLM-Ressourcen). Sie können sein Notizbuch oder mein Skript verwenden. Die Methode wurde an Mistral und Mistral-ähnlichen Modellen getestet.
Um zu quantisieren, klonen Sie zunächst mein Repo:
git clone https://github.com/KasperGroesLudvigsen/local_llm.git
Ändern Sie nun die Variable MODEL_ID
in der Datei quantize.py
so, dass sie das Modell Ihrer Wahl widerspiegelt. Hier brauchst du den Huggingface-„Pfad“, den du im ersten Schritt kopiert hast. Wenn du also Mistral 7b verwenden willst:
MODEL_ID = "mistralai/Mistral-7B-v0.1"
Führen Sie dann das Skript in Ihrem Terminal aus:
python quantize.py
Dies wird einige Zeit in Anspruch nehmen. Während der Quantisierungsprozess läuft, können Sie mit dem nächsten Schritt fortfahren.
Das Skript erzeugt ein Verzeichnis, das die Modelldateien für das von Ihnen ausgewählte Modell sowie die quantisierte Version des Modells mit der Dateierweiterung „.gguf“ enthält.
Schritt 3: Erstellung und Ausführung der Ollama-Version des Modells
Wir werden das Modell mit Ollama ausführen. Ollama ist ein Software-Framework, das ein Modell sauber in eine API verpackt. Ollama lässt sich auch leicht mit verschiedenen Frontends integrieren, wie wir im nächsten Schritt sehen werden.
Um ein Ollama-Abbild des Modells zu erstellen, benötigen Sie eine so genannte Modelldatei, eine einfache Textdatei, die das Ollama-Abbild konfiguriert. Wenn Sie mit Dockerfiles vertraut sind, werden Ihnen die Modelldateien von Ollama bekannt vorkommen.
Im folgenden Beispiel geben wir zunächst an, welcher LLM verwendet werden soll. Wir gehen davon aus, dass es in Ihrem Repo einen Ordner namens mistral7b
gibt und dass dieser Ordner ein Modell namens quantized.gguf
enthält. Dann setzen wir das Kontextfenster des Modells auf 8.000 – die maximale Kontextgröße von Mistral 7b. In der Modeldatei können Sie auch angeben, welche Prompt-Vorlage verwendet werden soll, und Sie können Stop-Token angeben.
Speichern Sie die Modelldatei, z.B. als Modelfile.txt.
FROM ./mistral7b/quantized.gguf
PARAMETER num_ctx 8000
TEMPLATE """<|im_start|>system {{ .System }}<|im_end|><|im_start|>user {{ .Prompt }}<|im_end|><|im_start|>assistant<|im_end|>"""
PARAMETER stop <|im_end|>
PARAMETER stop <|im_start|>user
PARAMETER stop <|end|>
Nun, da Sie die Modelldatei erstellt haben, erstellen Sie ein Ollama-Image aus der Modelldatei, indem Sie dies in Ihrem Terminal ausführen. Auch dies wird einige Augenblicke dauern:
ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>'
Wenn der „Erstellungsprozess“ abgeschlossen ist, starten Sie den Ollama-Server, indem Sie diesen Befehl ausführen. Dadurch werden alle Ihre Ollama-Modelle so dargestellt, dass die grafische Benutzeroberfläche mit ihnen interagieren kann.
ollama serve
Schritt 4 – Einrichten einer Chat-Benutzeroberfläche für Ollama
Der nächste Schritt besteht darin, eine grafische Benutzeroberfläche für die Interaktion mit dem LLM einzurichten. Hierfür gibt es mehrere Optionen. In diesem Tutorial werden wir „Chatbot Ollama“ verwenden – eine sehr ordentliche GUI, die an ChatGPT erinnert. „Ollama WebUI“ ist eine ähnliche Option. Sie können auch Ihre eigene Chat-GUI mit Streamlit einrichten.
Wenn Sie die beiden folgenden Befehle ausführen, klonen Sie zunächst das Chatbot Ollama GitHub Repo und installieren dann die React-Abhängigkeiten:
git clone https://github.com/ivanfioravanti/chatbot-ollama.git
npm ci
Der nächste Schritt besteht darin, ein Docker-Image aus der Dockerdatei zu erstellen. Wenn Sie Linux verwenden, müssen Sie die Umgebungsvariable OLLAMA_HOST im Dockerfile von hhtp://host.docker.internal:11434
auf http://localhost:11434
ändern.
Erstellen Sie nun das Docker-Image und starten Sie einen Container daraus, indem Sie diese Befehle in einem Terminal ausführen. Sie müssen sich im Stammverzeichnis des Projekts befinden.
docker build -t chatbot-ollama .
docker run -p 3000:3000 chatbot-ollama
Die grafische Benutzeroberfläche wird nun in einem Docker-Container auf Ihrem lokalen Computer ausgeführt. Im Terminal sehen Sie die Adresse, unter der die grafische Benutzeroberfläche verfügbar ist (z. B. „http://localhost:3000“).
Rufen Sie diese Adresse in Ihrem Browser auf, und Sie sollten nun in der Lage sein, mit dem LLM über die Ollama-Chat-Benutzeroberfläche zu chatten.
Schlussfolgerung
Dies ist der Abschluss dieses kurzen Tutorials über die einfache Einrichtung einer Chat-Benutzeroberfläche, die es Ihnen ermöglicht, mit einem LLM zu interagieren, der auf Ihrem lokalen Rechner läuft. Einfach, nicht wahr? Es waren nur vier Schritte erforderlich:
- Wählen Sie ein Modell auf Huggingface
- (Optional) Quantisierung des Modells
- Modell in Ollama-Image verpacken
- Erstellen und Ausführen eines Docker-Containers, der die GUI umhüllt
Denken Sie daran, dass dies alles möglich ist, weil Open Source großartig ist 👏
Quelle: medium.com