Distribuera lokal LLAMA-3 med NVIDIA NIM: En omfattande guide
Distribuera lokal LLAMA-3 med NVIDIA NIM: En omfattande guide - Lär dig hur du distribuerar en LLAMA-3-modell med hjälp av NVIDIA NIM för effektiv inferens på din moln- eller lokala dator. Omfattar installation, prestandatestning och integrering med OpenAI API.
17 februari 2025

Frigör kraften hos stora språkmodeller med vår guide om självvärdskap och distribution av LLAMA-3-modellen med hjälp av NVIDIA:s NIM. Upptäck hur du kan utnyttja denna banbrytande teknik för att påskynda dina AI-projekt och uppnå enastående prestanda.
Så här distribuerar du NVIDIA NIM för stora språkmodellsinferens
Åtkomst till NVIDIA Launchpad och GPU-mätningsdashboard
Konfigurera NVIDIA NIM Docker-containern
Interagera med NVIDIA NIM-API:et
Stresstesta NVIDIA NIM API-slutpunkten
Använda NVIDIA NIM med OpenAI API-klienten
Slutsats
Så här distribuerar du NVIDIA NIM för stora språkmodellsinferens
Så här distribuerar du NVIDIA NIM för stora språkmodellsinferens
För att distribuera en Lama-familj av modeller med hjälp av NVIDIA NIM på din egen moln- eller lokala dator, följ dessa steg:
-
Konfigurera miljön: Om du kör på din lokala dator, installera Docker-motor och NVIDIA-containertoolkit. Länkar till dessa finns i videobeskrivningen.
-
Hämta API-nyckel: Registrera dig för ett NVIDIA-konto för att generera din API-nyckel och personliga nyckel. Dessa kommer att krävas för att interagera med den fjärranslutna servern.
-
Kör Docker-containern: Använd det angivna Docker-kommandot för att köra containern, och ange containernamn, GPU-användning, API-nyckel, plats för modellcache och port. Detta kommer att ladda ner och konfigurera Lama 3 8 miljarder instruktionsmodellen.
-
Interagera med modellen: Använd det angivna cURL-kommandot för att interagera med den distribuerade modellen. Detta kommando följer OpenAI API-standarden, vilket gör att du kan använda OpenAI-klienten för interaktion.
-
Stresstest API:et: Använd ett Python-skript med
requests
-biblioteket för att skicka flera samtidiga förfrågningar till API-slutpunkten och övervaka GPU-utnyttjandet och genomflödet. -
Använd OpenAI API-klient: Visa hur du använder OpenAI API-klienten med NVIDIA NIM genom att uppdatera bas-URL:en och andra parametrar för att matcha den distribuerade modellen.
Åtkomst till NVIDIA Launchpad och GPU-mätningsdashboard
Åtkomst till NVIDIA Launchpad och GPU-mätningsdashboard
För att komma åt NVIDIA Launchpad och GPU-mätarens instrumentpanel, följ dessa steg:
-
Som en del av NVIDIA Launchpad får du tillgång till en kod-IDE, som är Visual Studio Code. Du kan använda denna IDE för att interagera med GPU-instansen och distribuera Llama 3 8 miljarder instruktionsmodellen.
-
GPU-mätarens instrumentpanel är en Grafana-instrumentpanel som ger detaljerad information om GPU-användningen och prestandan. Du kan komma åt denna instrumentpanel för att övervaka GPU-utnyttjandet, CUDA-versionen, GPU-drivrutiner och andra relevanta mätvärden.
-
Grafana-instrumentpanelen ger dig en visuell representation av GPU-användningen över tid, vilket gör att du kan spåra prestandan och optimera distributionen därefter.
-
Du kan använda
watch
-kommandot i terminalen för att övervaka GPU-användningen i realtid. Kommandotwatch -n 1 nvidia-smi
kommer att uppdatera GPU-användningen varje sekund och ge dig en direktvy över GPU-utnyttjandet. -
GPU-mätarens instrumentpanel och realtidsövervakningsverktygen låter dig förstå prestationsegenskaperna hos Llama 3 8 miljarder instruktionsmodellens distribution, vilket hjälper dig att optimera resursanvändningen och säkerställa effektiv inferens.
Konfigurera NVIDIA NIM Docker-containern
Konfigurera NVIDIA NIM Docker-containern
För att distribuera Llama 3 8 miljarder instruktionsmodellen med hjälp av NVIDIA NIM, följ dessa steg:
- Öppna den angivna IDE:n och se till att du har tillgång till ett H100-GPU.
- Konfigurera din API-nyckel genom att registrera dig för ett NVIDIA-konto och generera de nödvändiga nycklarna.
- Kör följande Docker-kommando för att starta NVIDIA NIM-containern:
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
Detta kommando kommer att:
- Skapa en Docker-container med namnet "llama-3-8b-instruct"
- Använda alla tillgängliga GPU:er på systemet
- Ställa in NVIDIA_API_KEY-miljövariabeln
- Exponera port 8000 för NIM-servern
- Använda "llama-3-8b-instruct"-modellen från NVIDIA NIM-katalogen
- När containern körs kan du använda det angivna cURL-kommandot för att interagera med modellen:
curl -X POST -H "Content-Type: application/json" -d '{"model": "llama-3-8b-instruct", "prompt": "Tell me a joke.", "max_tokens": 1000, "temperature": 0.7, "top_p": 0.95, "stop": ["\n"]}' http://localhost:8000/v1/completions
Detta cURL-kommando skickar en förfrågan till NIM-servern som körs på localhost:8000 för att generera ett svar på prompten "Tell me a joke."
-
För att stresstest API-slutpunkten kan du köra det angivna Python-skriptet
test_server.py
. Detta skript kommer att skicka flera samtidiga förfrågningar till NIM-servern och övervaka GPU-utnyttjandet. -
Slutligen kan du också använda OpenAI API-klienten för att interagera med NIM-servern genom att uppdatera bas-URL:en för att peka på NIM-serverns adress och port.
Interagera med NVIDIA NIM-API:et
Interagera med NVIDIA NIM-API:et
För att interagera med NVIDIA NIM-API:et kan vi använda ett enkelt cURL-kommando. cURL-kommandot ger följande:
- Gör en POST-förfrågan till den lokala värden på port 8000, där NVIDIA NIM-servern körs.
- Använder den OpenAI-kompatibla API:et, så vi kan använda OpenAI-klienten för att interagera med NIM-servern.
- Anger Llama 3 8 miljarder instruktionsmodellen som ska användas.
- Ställer in meddelandestrukturen på ett sätt som liknar det som OpenAI förväntar sig.
- Tillåter inställning av ytterligare parametrar som
max_tokens
ochtemperature
.
Här är cURL-kommandot:
curl -X POST -H "Content-Type: application/json" -d '{"model": "nlp/lama-3-8b-instruct", "messages": [{"role": "user", "content": "Tell me a joke"}], "max_tokens": 1000, "temperature": 0.7}' http://localhost:8000/v1/chat/completions
Detta cURL-kommando kommer att skicka en förfrågan till NVIDIA NIM-servern, som sedan kommer att generera ett svar från Llama 3 8 miljarder instruktionsmodellen. Svaret kommer att strömmas tillbaka, där varje token visas när den genereras.
För att ytterligare stresstest API-slutpunkten kan vi använda ett Python-skript som använder requests
-biblioteket för att göra flera samtidiga förfrågningar. Detta skript kommer att skicka 50 skämtgenereringsförfrågningar parallellt och övervaka GPU-utnyttjandet och genomflödet.
Stresstesta NVIDIA NIM API-slutpunkten
Stresstesta NVIDIA NIM API-slutpunkten
För att stresstest NVIDIA NIM API-slutpunkten kommer vi att använda ett enkelt Python-skript som utnyttjar requests
-biblioteket för att göra flera samtidiga förfrågningar till API:et. Så här fungerar det:
-
Vi definierar API-slutpunktens URL, som i det här fallet är den lokala värden eftersom vi kör servern lokalt. Om du skulle distribuera detta på en fjärrserver skulle du behöva använda den externa IP-adressen och aktivera portvidarebefordran.
-
Vi ställer in nödvändiga rubriker, inklusive
Content-Type
-rubriken tillapplication/json
. -
Vi skapar nyttolasten, som innehåller modellnamnet (
"model": "llama-3-8b-instruct"
), prompten ("prompt": "Tell me 50 jokes."
) och andra parametrar sommax_tokens
,temperature
ochstop
. -
Vi definierar en funktion
send_requests()
som skickar förfrågningarna med hjälp avrequests.post()
-metoden och den URL, rubriker och nyttolast som vi definierat tidigare. -
Vi använder multitrådar för att köra flera instanser av
send_requests()
-funktionen samtidigt, vilket simulerar ett högt antal förfrågningar till API-slutpunkten. -
Vi övervakar GPU-användningen i realtid med hjälp av
watch
-kommandot ochnvidia-smi
-verktyget, som ger insikter om GPU-utnyttjandet.
Utdatan visar att API-slutpunkten kan hantera ett betydande antal samtidiga förfrågningar, med en genomsnittlig genomströmning på cirka 2 500 tokens per sekund. GPU-utnyttjandet förblir också relativt högt, vilket indikerar att NVIDIA NIM effektivt utnyttjar hårdvaruressurserna för att leverera högpresterande inferens.
Detta stresstest demonstrerar skalerbarheten och prestandan hos NVIDIA NIM-lösningen, vilket gör den till ett attraktivt alternativ för att distribuera stora språkmodeller i en produktionsmiljö.
Använda NVIDIA NIM med OpenAI API-klienten
Använda NVIDIA NIM med OpenAI API-klienten
För att använda OpenAI API-klienten med NVIDIA NIM, följ dessa steg:
- Ändra bas-URL:en till URL:en för din NVIDIA NIM-instans. I det här exemplet kör vi den på
localhost:8000
:
openai.api_base = "http://localhost:8000"
-
Du behöver inte ange API-nyckeln, eftersom NVIDIA NIM hanterar autentiseringen.
-
Ställ in modellen till den NVIDIA NIM-värdbaserade modellen, i det här fallet
"meta-llama-38b-instruct"
:
model = "meta-llama-38b-instruct"
- Ställ in andra parametrar, som det maximala antalet tokens som ska genereras, temperatur och om du vill strömma svaren:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": "Tell me 50 different jokes"}],
max_tokens=1024,
temperature=0.7,
stream=True,
)
- Iterera genom det strömmande svaret och skriv ut den genererade texten:
for chunk in response:
print(chunk.choices[0].text, end="")
Denna metod låter dig dra nytta av den prestanda och enkla distribution som NVIDIA NIM erbjuder, samtidigt som du använder den välbekanta OpenAI API-klienten. Den strömmande svarshanteringen säkerställer att du får den genererade texten i realtid, vilket ger en responsiv användarupplevelse.
FAQ
FAQ