Lokales LLAMA-3 mit NVIDIA NIM bereitstellen: Ein umfassender Leitfaden
Lokales LLAMA-3 mit NVIDIA NIM bereitstellen: Ein umfassender Leitfaden - Erfahren Sie, wie Sie ein LLAMA-3-Modell mithilfe von NVIDIA NIM für eine effiziente Inferenz auf Ihrer Cloud- oder Lokalmaschine bereitstellen. Behandelt Einrichtung, Leistungstests und Integration mit der OpenAI-API.
24. Februar 2025

Erschließen Sie die Kraft großer Sprachmodelle mit unserem Leitfaden zum Selbsthosting und Bereitstellen des LLAMA-3-Modells mit NVIDIA's NIM. Entdecken Sie, wie Sie diese hochmoderne Technologie nutzen können, um Ihre KI-Projekte zu beschleunigen und eine beispiellose Leistung zu erzielen.
Wie man NVIDIA NIM für Large Language Model Inference einsetzt
Zugriff auf NVIDIA Launchpad und GPU Metrics Dashboard
Einrichten des NVIDIA NIM Docker Containers
Interaktion mit der NVIDIA NIM API
Stresstest des NVIDIA NIM API-Endpunkts
Verwendung von NVIDIA NIM mit dem OpenAI API-Client
Schlussfolgerung
Wie man NVIDIA NIM für Large Language Model Inference einsetzt
Wie man NVIDIA NIM für Large Language Model Inference einsetzt
Um eine Lama-Familie von Modellen mithilfe von NVIDIA NIM auf Ihrer eigenen Cloud oder Ihrem lokalen Computer bereitzustellen, folgen Sie diesen Schritten:
-
Richten Sie die Umgebung ein: Wenn Sie auf Ihrem lokalen Computer arbeiten, installieren Sie die Docker-Engine und das NVIDIA-Container-Toolkit. Links dazu finden Sie in der Videobeschreibung.
-
Erhalten Sie den API-Schlüssel: Melden Sie sich für ein NVIDIA-Konto an, um Ihren API-Schlüssel und Ihren persönlichen Schlüssel zu generieren. Diese werden für die Interaktion mit dem Remote-Server benötigt.
-
Führen Sie den Docker-Container aus: Verwenden Sie den bereitgestellten Docker-Befehl, um den Container auszuführen. Geben Sie dabei den Containernamen, die GPU-Nutzung, den API-Schlüssel, den Speicherort des Modellcaches und den Port an. Dadurch wird das Lama 3 8 Milliarden Instruct-Modell heruntergeladen und eingerichtet.
-
Interagieren Sie mit dem Modell: Verwenden Sie den bereitgestellten cURL-Befehl, um mit dem bereitgestellten Modell zu interagieren. Dieser Befehl folgt dem OpenAI-API-Standard, sodass Sie den OpenAI-Client für die Interaktion verwenden können.
-
Führen Sie einen Stresstest des API-Endpunkts durch: Verwenden Sie ein Python-Skript mit der
requests
-Bibliothek, um mehrere gleichzeitige Anfragen an den API-Endpunkt zu senden und die GPU-Auslastung und den Durchsatz zu überwachen. -
Verwenden Sie den OpenAI-API-Client: Zeigen Sie, wie Sie den OpenAI-API-Client mit NVIDIA NIM verwenden, indem Sie die Basis-URL und andere Parameter an das bereitgestellte Modell anpassen.
Zugriff auf NVIDIA Launchpad und GPU Metrics Dashboard
Zugriff auf NVIDIA Launchpad und GPU Metrics Dashboard
Um auf die NVIDIA Launchpad und das GPU-Metriken-Dashboard zuzugreifen, folgen Sie diesen Schritten:
-
Als Teil der NVIDIA Launchpad erhalten Sie Zugriff auf eine Code-IDE, die Visual Studio Code ist. Sie können diese IDE verwenden, um mit der GPU-Instanz zu interagieren und das Llama 3 8 Milliarden Instruct-Modell bereitzustellen.
-
Das GPU-Metriken-Dashboard ist ein Grafana-Dashboard, das detaillierte Informationen über die GPU-Nutzung und -Leistung bereitstellt. Sie können auf dieses Dashboard zugreifen, um die GPU-Auslastung, die CUDA-Version, die GPU-Treiber und andere relevante Metriken zu überwachen.
-
Das Grafana-Dashboard bietet eine visuelle Darstellung der GPU-Nutzung über die Zeit, sodass Sie die Leistung verfolgen und die Bereitstellung entsprechend optimieren können.
-
Sie können den
watch
-Befehl im Terminal verwenden, um die GPU-Nutzung in Echtzeit zu überwachen. Der Befehlwatch -n 1 nvidia-smi
aktualisiert die GPU-Nutzung alle Sekunden und gibt Ihnen eine Live-Ansicht der GPU-Auslastung. -
Das GPU-Metriken-Dashboard und die Echtzeitüberwachungstools ermöglichen es Ihnen, die Leistungsmerkmale der Llama 3 8 Milliarden Instruct-Modellbereitstellung zu verstehen und die Ressourcennutzung zu optimieren, um eine effiziente Inferenz zu gewährleisten.
Einrichten des NVIDIA NIM Docker Containers
Einrichten des NVIDIA NIM Docker Containers
Um das Llama 3 8 Milliarden Instruct-Modell mithilfe von NVIDIA NIM bereitzustellen, folgen Sie diesen Schritten:
- Öffnen Sie die bereitgestellte IDE und stellen Sie sicher, dass Sie Zugriff auf eine H100-GPU haben.
- Richten Sie Ihren API-Schlüssel ein, indem Sie sich für ein NVIDIA-Konto anmelden und die erforderlichen Schlüssel generieren.
- Führen Sie den folgenden Docker-Befehl aus, um den NVIDIA NIM-Container zu starten:
docker run -it --gpus all -e NVIDIA_API_KEY=$NVIDIA_API_KEY -p 8000:8000 --name llama-3-8b-instruct nvcr.io/nvidia/nim:latest --model-name llama-3-8b-instruct
Dieser Befehl wird:
- Einen Docker-Container mit dem Namen "llama-3-8b-instruct" erstellen
- Alle verfügbaren GPUs auf dem System verwenden
- Die Umgebungsvariable NVIDIA_API_KEY setzen
- Port 8000 für den NIM-Server freigeben
- Das Modell "llama-3-8b-instruct" aus dem NVIDIA NIM-Katalog verwenden
- Sobald der Container läuft, können Sie den bereitgestellten cURL-Befehl verwenden, um mit dem Modell zu interagieren:
curl -X POST -H "Content-Type: application/json" -d '{"model": "llama-3-8b-instruct", "prompt": "Erzähle mir einen Witz.", "max_tokens": 1000, "temperature": 0.7, "top_p": 0.95, "stop": ["\n"]}' http://localhost:8000/v1/completions
Dieser cURL-Befehl sendet eine Anfrage an den auf localhost:8000 laufenden NIM-Server, um eine Antwort für den Prompt "Erzähle mir einen Witz." zu generieren.
-
Um den API-Endpunkt zu testen, können Sie das bereitgestellte Python-Skript
test_server.py
ausführen. Dieses Skript sendet mehrere gleichzeitige Anfragen an den NIM-Server und überwacht die GPU-Auslastung. -
Schließlich können Sie auch den OpenAI-API-Client verwenden, um mit dem NIM-Server zu interagieren, indem Sie die Basis-URL so aktualisieren, dass sie auf die Adresse und den Port des NIM-Servers verweist.
Indem Sie diese Schritte befolgen, können Sie das Llama 3 8 Milliarden Instruct-Modell erfolgreich mithilfe des NVIDIA NIM-Docker-Containers bereitstellen und seine Leistung testen.
Interaktion mit der NVIDIA NIM API
Interaktion mit der NVIDIA NIM API
Um mit der NVIDIA NIM-API zu interagieren, können wir einen einfachen cURL-Befehl verwenden. Der cURL-Befehl bietet Folgendes:
- Sendet eine POST-Anfrage an den lokalen Host auf Port 8000, wo der NVIDIA NIM-Server läuft.
- Verwendet die OpenAI-kompatible API, sodass wir den OpenAI-Client verwenden können, um mit dem NIM-Server zu interagieren.
- Gibt das Llama 3 8 Milliarden Instruct-Modell an, das verwendet werden soll.
- Legt die Nachrichtenstruktur ähnlich wie bei OpenAI fest.
- Ermöglicht das Einstellen zusätzlicher Parameter wie
max_tokens
undtemperature
.
Hier ist der cURL-Befehl:
curl -X POST -H "Content-Type: application/json" -d '{"model": "nlp/lama-3-8b-instruct", "messages": [{"role": "user", "content": "Erzähle mir einen Witz"}], "max_tokens": 1000, "temperature": 0.7}' http://localhost:8000/v1/chat/completions
Dieser cURL-Befehl sendet eine Anfrage an den NVIDIA NIM-Server, der dann eine Antwort vom Llama 3 8 Milliarden Instruct-Modell generiert. Die Antwort wird schrittweise zurückgegeben, wobei jedes Token angezeigt wird, sobald es generiert wird.
Um den API-Endpunkt weiter zu testen, können wir ein Python-Skript verwenden, das die requests
-Bibliothek nutzt, um mehrere gleichzeitige Anfragen zu senden. Dieses Skript sendet 50 Witzegeneration-Anfragen parallel und überwacht die GPU-Auslastung und den Durchsatz.
Stresstest des NVIDIA NIM API-Endpunkts
Stresstest des NVIDIA NIM API-Endpunkts
Um den NVIDIA NIM-API-Endpunkt zu testen, verwenden wir ein einfaches Python-Skript, das die requests
-Bibliothek nutzt, um mehrere gleichzeitige Anfragen an den API-Endpunkt zu senden. Hier ist, wie es funktioniert:
-
Wir definieren die API-Endpunkt-URL, die in diesem Fall der lokale Host ist, da wir den Server lokal ausführen. Wenn Sie dies auf einem Remote-Server bereitstellen würden, müssten Sie die externe IP-Adresse verwenden und die Portweiterleitung aktivieren.
-
Wir setzen die erforderlichen Header, einschließlich des
Content-Type
-Headers aufapplication/json
. -
Wir erstellen die Nutzlast, die den Modellnamen (
"model": "llama-3-8b-instruct"
), den Prompt ("prompt": "Erzähle mir 50 Witze."
) und andere Parameter wiemax_tokens
,temperature
undstop
enthält. -
Wir definieren eine Funktion
send_requests()
, die die Anfragen mit derrequests.post()
-Methode und der zuvor definierten URL, den Headern und der Nutzlast sendet. -
Wir verwenden Multithreading, um mehrere Instanzen der
send_requests()
-Funktion gleichzeitig auszuführen, um eine hohe Anzahl von Anfragen an den API-Endpunkt zu simulieren. -
Wir überwachen die GPU-Nutzung in Echtzeit mit dem
watch
-Befehl und demnvidia-smi
-Tool, das Einblicke in die GPU-Auslastung gibt.
Die Ausgabe zeigt, dass der API-Endpunkt in der Lage ist, eine erhebliche Anzahl von gleichzeitigen Anfragen zu verarbeiten, mit einem durchschnittlichen Durchsatz von etwa 2.500 Token pro Sekunde. Die GPU-Auslastung bleibt auch relativ hoch, was darauf hindeutet, dass NVIDIA NIM die Hardwareressourcen effektiv nutzt, um eine hochleistungsfähige Inferenz zu liefern.
Dieser Stresstest demonstriert die Skalierbarkeit und Leistungsfähigkeit der NVIDIA NIM-Lösung, was sie zu einer attraktiven Option für die Bereitstellung großer Sprachmodelle in einer Produktionsumgebung macht.
Verwendung von NVIDIA NIM mit dem OpenAI API-Client
Verwendung von NVIDIA NIM mit dem OpenAI API-Client
Um den OpenAI-API-Client mit NVIDIA NIM zu verwenden, folgen Sie diesen Schritten:
- Ändern Sie die Basis-URL in die URL Ihrer NVIDIA NIM-Instanz. In diesem Beispiel führen wir sie auf
localhost:8000
aus:
openai.api_base = "http://localhost:8000"
-
Sie müssen den API-Schlüssel nicht angeben, da NVIDIA NIM die Authentifizierung übernimmt.
-
Legen Sie das Modell auf das von NVIDIA NIM gehostete Modell fest, in diesem Fall
"meta-llama-38b-instruct"
:
model = "meta-llama-38b-instruct"
- Legen Sie die anderen Parameter wie die maximale Anzahl der zu generierenden Token, die Temperatur und ob die Antworten gestreamt werden sollen, fest:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": "Erzähle mir 50 verschiedene Witze"}],
max_tokens=1024,
temperature=0.7,
stream=True,
)
- Durchlaufen Sie die Streaming-Antwort und geben Sie den generierten Text aus:
for chunk in response:
print(chunk.choices[0].text, end="")
Dieser Ansatz ermöglicht es Ihnen, die Leistung und Einfachheit der Bereitstellung, die NVIDIA NIM bietet, zu nutzen, während Sie den vertrauten OpenAI-API-Client verwenden. Die Streaming-Antwort stellt sicher, dass Sie den generierten Text in Echtzeit erhalten und so eine reaktionsschnelle Benutzererfahrung bieten.
Schlussfolgerung
Schlussfolgerung
In diesem Video haben wir untersucht, wie man ein Lama 3 8 Milliarden Instruct-Modell mithilfe von NVIDIA NIM auf der eigenen Cloud oder dem lokalen Computer bereitstellt. NVIDIA NIM ist eine Reihe von Microservices, die von NVIDIA entwickelt wurden und die Bereitstellung von Grundlagenmodellen, einschließlich Sprachmodellen und anderen KI-Modellen, beschleunigen.
Wir haben die Schritte zum Einrichten der NVIDIA NIM-Umgebung, einschließlich der Generierung des API-Schlüssels und des Ausführens des Docker-Containers zur Bereitstellung des Lama 3-Modells, durchgegangen. Außerdem haben wir die Leistung des bereitgestellten Modells getestet, indem wir mehrere Anfragen gleichzeitig gesendet und die GPU-Auslastung und den Durchsatz überwacht haben.
Darüber hinaus haben wir gezeigt, wie man den OpenAI-API-Client verwendet, um mit dem von NVIDIA NIM bereitgestellten Modell zu interagieren, und die Kompatibilität mit dem OpenAI-API-Standard demonstriert.
Insgesamt bietet NVIDIA NIM einen praktischen und effizienten Weg, um große Sprachmodelle in einer Produktionsumgebung bereitzustellen. Die Möglichkeit, Nvidias Hardware- und Softwarestapel zu nutzen, kann zu erheblichen Leistungsverbesserungen im Vergleich zu anderen Bereitstellungsoptionen führen. Wenn Sie weitere Bereitstellungsoptionen für Ihre Projekte erkunden möchten, abonnieren Sie unbedingt den Kanal für zukünftige Inhalte zu VLLM und anderen verwandten Themen.
FAQ
FAQ