In unserem vorherigen Beitrag haben wir einen Schnellkurs zum Einstieg in LLMs auf lokaler Ebene mit Ollama gegeben und Modelle untersucht, die effizient auf Endbenutzersystemen ausgeführt werden können. Wir haben damit abgeschlossen, dass wir Ihnen gezeigt haben, wie Sie eine Chat-Benutzeroberfläche starten und mit dem Chatten beginnen können!
Dieses Mal gehen wir einen Schritt weiter: das Hosting mehrerer LLMs für eine kleine Gruppe, wie ein Büroteam in einem kleinen bis mittelständischen Unternehmen, Ihren lokalen Verein oder Ihre Kollegen in der Steuerberatung. Dieser Leitfaden ist perfekt für jede kleine Gruppe (2-5 Personen), die in die Welt der LLMs eintauchen möchte, ohne dass ihre Gespräche in der Cloud gespeichert werden.
Im Vergleich zu unserem letzten Leitfaden werden wir die Einrichtung auf zwei wichtige Arten erweitern:
Lassen Sie uns zunächst überprüfen, was wir bereits haben: Ollama ist fantastisch, aber es ist für einen einzelnen Benutzer auf einem einzelnen Rechner konzipiert. Tatsächlich umschließt Ollama das bekannte Projekt llama.cpp, was bedeutet, dass es dieselbe Einschränkung teilt: Es verarbeitet immer nur eine Anfrage zur gleichen Zeit. Während dies in einer Single-User-Umgebung gut funktioniert, kann es in einer Gruppenumgebung zu Verzögerungen führen, da alle auf ihre Reihe warten, selbst wenn Ihr Rechner noch freie Kapazitäten hat.
Die Schlüsselmerkmal, das dieses Problem angeht, ist das kontinuierliche Batch-Verfahren. Hier ist eine einfache Möglichkeit, darüber nachzudenken: LLMs sind im Grunde genommen tiefe neuronale Netzwerke, die Informationen in Schichten verarbeiten. Stellen Sie sich eine Montagelinie in einer Autofabrik vor – mehrere Stationen arbeiten parallel, wobei jede Station Teile zu verschiedenen Autos hinzufügt, während sie entlang der Linie bewegt werden. Solange freie Ressourcen vorhanden sind (wie Arbeiter an den Stationen), kann die LLM-Engine neue Aufgaben annehmen und sie schichtweise durch das System schieben, sodass sie neue Anfragen verarbeiten kann, sobald eine Aufgabe abgeschlossen ist. Noch besser ist, dass die Anfragen dank des KV-Caches, wenn sie ähnlichen Text enthalten, möglicherweise sogar schneller gemeinsam verarbeitet werden können!
Gelerntes: Um eine Gruppe zu bedienen, benötigen Sie einen Server, der kontinuierliches Batch-Verfahren unterstützt. Basierend auf unseren Erfahrungen bei HPCLabs empfehlen wir zwei Open-Source-Projekte:
Für eine unkomplizierte Einrichtung empfehlen wir die Verwendung von vllm. Im Rest dieses Beitrags führen wir Sie durch die Einrichtung von vllm, um das Llama 3.1 8B-Modell zu hosten.
Für diese Einrichtung setzen wir voraus, dass Sie über einen Rechner mit einer aktuellen NVIDIA-GPU (z. B. RTX 3090) mit mindestens 8 GB VRAM verfügen (für kleinere Modelle verweisen wir auf unseren vorherigen Beitrag). Beginnen Sie damit, vllm in einer separaten Python-virtuellen Umgebung zu installieren, um Konflikte mit Ihrem System zu vermeiden:
python -m venv venv
source venv/bin/activate
pip install vllm
Die Installation kann aufgrund der Vielzahl an Abhängigkeiten einige Zeit in Anspruch nehmen. Sobald dies abgeschlossen ist, können Sie den Server mit folgendem Befehl starten:
python -m vllm.entrypoints.openai.api_server --model hugging-quants/Meta-Llama-3.1-8B-Instruct-AWQ-INT4 -q awq --dtype auto --gpu-memory-utilization 0.98 --served_model_name llama3-8b --max_model_len 16384 --host 0.0.0.0 --port 5000
Das mag komplex aussehen, aber keine Sorge – wir werden es später aufschlüsseln. Wenn Sie vllm starten, wird das Modell von Hugging Face heruntergeladen. Nach einer Weile sehen Sie diese Nachricht im Terminal:
INFO: Uvicorn running on http://0.0.0.0:5000
(Press CTRL+C to quit)
Sie sind bereit! Starten Sie Ihre Chat-Benutzeroberfläche von letzter Woche und beginnen Sie zu chatten – die Benutzeroberfläche erkennt automatisch das Llama3-8b-Modell. Für zusätzlichen Spaß können Sie Ihre Freunde im Netzwerk einladen, sich anzuschließen, und beobachten, wie die Fragen aller sofort beantwortet werden!
Herzlichen Glückwunsch, Sie haben gerade die Grundlage für den persönlichen KI-Assistenten Ihrer Gruppe gelegt. Wenn Sie nur daran interessiert sind, ihn zu nutzen, können Sie hier aufhören. Im nächsten Abschnitt werden wir einige Details zu vllm behandeln.
Eine Sache, die Ihnen nach dem Start von vllm auffallen wird, ist, dass es fast den gesamten VRAM Ihrer GPU zuweist (wie in nvidia-smi
zu sehen ist):
Wenn Sie genau hinsehen, war dies beabsichtigt: --gpu-memory-utilization 0.98
sagt vllm, dass es 98 % Ihres VRAMs nutzen und halten soll. Das ist tatsächlich vorteilhaft, da so mehrere Anfragen sofort in den VRAM passen. Wenn Sie also VRAM zur Verfügung haben, empfehlen wir dies.
Lassen Sie uns einige weitere Parameter, die wir verwendet haben, aufschlüsseln:
--host 0.0.0.0 --port 5000
: Dies ist entscheidend! Der Host 0.0.0.0 weist Ihr Betriebssystem an, Anfragen von anderen Maschinen zu akzeptieren.--model hugging-quants/Meta-Llama-3.1-8B-Instruct-AWQ-INT4 -q awq --dtype auto
: Dies wählt nicht nur eine 4-Bit-quantisierte Version des Llama 3.1 8B-Modells aus, sondern gibt auch die Quantisierungsmethode (awq) an.--served_model_name llama3-8b
: Dies ermöglicht es Ihnen, das Modell zu benennen, was die Überprüfung erleichtert, ob der Server läuft – führen Sie einfach curl http://[Ihr-Server]:5000/v1/models
aus und stellen Sie sicher, dass der Name angezeigt wird!Überprüfen Sie schließlich Ihre Firewall-Einstellungen, falls andere das LLM im Netzwerk nicht finden können. Wenn Sie Hilfe benötigen, können Sie sich gerne an uns bei HPCLabs wenden.
Aber warten Sie, haben wir nicht versprochen, die Einrichtung auf mehrere Modelle zu erweitern? Ja, in der Tat! Allerdings kann vllm nur ein Modell zur gleichen Zeit hosten. Wenn Sie mehrere Benutzer und begrenzte GPUs haben, müssen Sie Modelle ein- und auswechseln.
Während vllm dies nicht selbst tun kann, gibt es andere Projekte, die darauf basieren und dies ermöglichen. Eines davon ist TabbyAPI, das wir in einem folgenden Beitrag vorstellen werden, also bleiben Sie dran! In der Zwischenzeit genießen Sie den neuen KI-Assistenten Ihrer Gruppe.
PS: Für zusätzlichen Datenschutz, wenn Sie die Anfragen Ihrer Kollegen nicht sehen möchten, starten Sie vllm mit –disable-log-requests
.