Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
NVIDIA Inference Microservices (NIM) är optimerade, containerbaserade AI-slutsatsdragningsmikrotjänster som förenklar och påskyndar hur du skapar AI-program. Dessa modeller är förpaketerade, skalbara och prestandajusterade för direkt distribution som säkra slutpunkter i Azure Container Apps. När du använder Azure Container Apps med GPU:er utan serverhantering, kan du köra dessa NIMs effektivt utan att behöva hantera den underliggande infrastrukturen.
I den här handledningen lär du dig att distribuera en Llama3 NVIDIA NIM till Azure Container Apps med hjälp av serverfria GPU:er.
I den här självstudien används en premiuminstans av Azure Container Registry för att förbättra prestandan vid kallstart när man arbetar med serverlösa GPU:er. Om du inte vill använda ett Premium Azure Container Registry måste du ändra kommandot i den här handledningen az acr create så att du sätter --sku till basic.
Förutsättningar
| Resurs | Beskrivning |
|---|---|
| Azure-konto | Ett Azure-konto med en aktiv prenumeration. Om du inte har någon sådan nu kan du skapa en kostnadsfritt. |
| Azure CLI (kommandoradsgränssnittet för Azure) | Installera verktyget Azure CLI. |
| NVIDIA NGC API-nyckel | Du kan hämta en API-nyckel från NVIDIA GPU Cloud-webbplatsen (NGC). |
Inställningar
Om du vill logga in på Azure från CLI kör du följande kommando och följer anvisningarna för att slutföra autentiseringsprocessen.
az login
Kör uppgraderingskommandot för att säkerställa att du kör den senaste versionen av CLI.
az upgrade
Installera eller uppdatera sedan Azure Container Apps-tillägget för CLI.
Om du får fel om saknade parametrar när du kör az containerapp kommandon i Azure CLI eller cmdlets från modulen Az.App i PowerShell, kontrollera att den senaste versionen av Azure Container Apps-tillägget är installerad.
az extension add --name containerapp --upgrade
Anmärkning
Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true.
az extension add --name containerapp --upgrade --allow-preview true
Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App namnrymderna och Microsoft.OperationalInsights .
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Konfigurera miljövariabler genom att namnge resursgruppen och ange platsen.
RESOURCE_GROUP="my-resource-group" LOCATION="swedencentral"Generera sedan ett unikt containerregisternamn.
SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 6) ACR_NAME="mygpututorialacr${SUFFIX}"Ange slutligen variabler för att namnge miljön och identifiera miljön, arbetsbelastningsprofiltypen, containerappens namn och container.
CONTAINERAPPS_ENVIRONMENT="my-environment-name" GPU_TYPE="Consumption-GPU-NC24-A100" CONTAINER_APP_NAME="llama3-nim" CONTAINER_AND_TAG="meta/llama-3.1-8b-instruct:latest" NGC_SECRET=<Your NVIDIA NGC API Key>
Skapa en Azure-resursgrupp
Skapa en resursgrupp för att organisera de tjänster som är relaterade till distributionen av containerappen.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Skapa en ACR (Azure Container Registry).
Anmärkning
I den här självstudien används ett premium Azure Container Registry för att förbättra kallstartsprestandan vid arbete med serverlösa GPU:er. Om du inte vill använda ett Premium Azure Container Registry ändrar du följande kommando och anger
--skutillbasic.az acr create \ --resource-group $RESOURCE_GROUP \ --name $ACR_NAME \ --location $LOCATION \ --sku premium
Importera NVIDIA NIM-avbildningen till Ditt Azure Container Registry
Importera sedan avbildningen från NVIDIA GPU Cloud till Azure Container Registry.
Anmärkning
NVIDIA-nätverkskort har var och en sina egna maskinvarukrav. Kontrollera att den GPU-typ som du väljer stöder valfri NIM . Llama3 NIM som används i den här handledningen kan användas med NVIDIA A100 GPU:er.
Autentisera till Azure Container Registry.
az acr login --name $ACR_NAMESkicka avbildningen till Azure Container Registry.
az acr import \ --name $ACR_NAME \ --source nvcr.io/nim/$CONTAINER_AND_TAG \ --image $CONTAINER_AND_TAG \ --username '$oauthtoken' \ --password $NGC_SECRET
Aktivera artefaktströmning (rekommenderas, men är frivilligt)
När containerappen körs hämtas containern från containerregistret. När du har större avbildningar som vid AI-arbetsbelastningar kan det ta tid att hämta avbildningen. Genom att aktivera artefaktströmning läser containerappen in de viktigaste delarna av avbildningen först, vilket minskar tiden för att starta containern. Använd följande steg för att aktivera artefaktströmning.
Anmärkning
Följande kommandon kan ta lång tid att slutföra.
Aktivera artefaktströmning i ditt containerregister.
az acr artifact-streaming update \ --name $ACR_NAME \ --repository llama-3.1-8b-instruct \ --enable-streaming TrueAktivera artefaktströmning på containeravbildningen.
az acr artifact-streaming create \ --name $ACR_NAME \ --image $CONTAINER_AND_TAG
Skapa din containerapp
Sedan skapar du en containerapp med NVIDIA GPU Cloud API-nyckeln.
Skapa containerappmiljön.
az containerapp env create \ --name $CONTAINERAPPS_ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATIONLägg till GPU-arbetsbelastningsprofilen i din miljö.
az containerapp env workload-profile add \ --resource-group $RESOURCE_GROUP \ --name $CONTAINERAPPS_ENVIRONMENT \ --workload-profile-type $GPU_TYPE \ --workload-profile-name LLAMA_PROFILESkapa containerappen.
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $CONTAINERAPPS_ENVIRONMENT \ --image $ACR_NAME.azurecr.io/$CONTAINER_AND_TAG \ --cpu 24 \ --memory 220 \ --target-port 8000 \ --ingress external \ --secrets ngc-api-key=<PASTE_NGC_API_KEY_HERE> \ --env-vars NGC_API_KEY=secretref:ngc-api-key \ --registry-server $ACR_NAME.azurecr.io \ --workload-profile-name LLAMA_PROFILE \ --query properties.configuration.ingress.fqdnDet här kommandot returnerar URL:en för containerappen. Lägg det här värdet åt sidan i en textredigerare för användning i följande kommando.
Anmärkning
Vissa nätverksmoduler har längre starttider. För att ta hänsyn till detta kan du konfigurera en hälsoavsökning eller ställa in containerappens minsta replikantal med --min-replicas 1 för att hålla en replik igång hela tiden.
Kontrollera att programmet fungerar
Du kan verifiera en lyckad distribution genom att skicka en begäran POST till ditt program.
Innan du kör det här kommandot måste du ersätta URL:en med containerappens <YOUR_CONTAINER_APP_URL> URL som returnerades från föregående kommando.
curl -X POST \
'http://<YOUR_CONTAINER_APP_URL>/v1/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "meta/llama-3.1-8b-instruct",
"prompt": [{"role":"user", "content":"Once upon a time..."}],
"max_tokens": 64
}'
Förbättra prestanda med volymmonteringar (valfritt)
När du startar och använder artefaktströmning med Azure Container Registry hämtar Azure Container Apps fortfarande avbildningarna från containerregistret vid start. Den här åtgärden resulterar i en kall start även med optimerad artefaktströmning.
För ännu snabbare kallstarttider tillhandahåller många av NIM:arna en volymmount för att lagra avbildningen i en cachekatalog. Du kan använda den här cachekatalogen för att lagra modellvikter och andra filer som NIM behöver köra.
Om du vill konfigurera en volymmontering för Llama3 NIM måste du ställa in en volymmontering på ./opt/nim/.cache såsom anges i NVIDIA Llama-3.1-8b-dokumentationen. Det gör du genom att följa stegen i självstudien om volymmonteringar och ange volymmonteringssökvägen till /opt/nim/.cache.
Rensa resurser
Om du inte fortsätter att använda det här programmet kör du följande kommando för att ta bort resursgruppen tillsammans med alla resurser som skapats i den här självstudien.
Försiktighet
Följande kommando tar bort den angivna resursgruppen och alla resurser som ingår i den. Det här kommandot tar också bort alla resurser som ligger utanför omfattningen av denna handledning och som finns i den här resursgruppen.
az group delete --name $RESOURCE_GROUP
Tips/Råd
Har du problem? Meddela oss på GitHub genom att öppna ett problem i Azure Container Apps-lagringsplatsen.