LLM-Hosting über einen Benutzer hinaus – Ein Leitfaden für kleine Gruppen

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!

Erweiterung über einen einzelnen Benutzer hinaus

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:

  1. Mehrere Modelle: Wir zeigen Ihnen, wie Sie mehrere Modelle mit einem begrenzten Budget verwenden können, sogar ohne einen High-End-Arbeitsplatz.
  2. Gleichzeitige Benutzer: Wir ermöglichen es mehreren Benutzern, gleichzeitig auf den Server zuzugreifen und Anfragen parallel zu verarbeiten.

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.

Kontinuierliches Batch-Verfahren

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:

  1. vllm: Ein produktionsreifer LLM-Server, der hohe Leistung bietet und Anfragen so lange bündelt, bis Ihr Rechner voll ausgelastet ist.
  2. aphrodite: Eine agilere und funktionsreichere Option als vllm, wenn auch mit etwas weniger Stabilität.

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.

Einrichtung von vllm

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.

Details

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:

  1. --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.
  2. --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.
  3. --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.

Mehrere Modelle

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.

© Copyright 2024 HPCLabs
DatenschutzImpressum
Website erstellt von Mahna Mahna