Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
NVIDIA Inference Microservices (NIMs) sind optimiert, containerisierte KI-Inference-Mikroservices, die die Erstellung von KI-Anwendungen vereinfachen und beschleunigen. Diese Modelle sind vorgepackt, skalierbar und leistungsgesichert für die direkte Bereitstellung als sichere Endpunkte in Azure-Container-Apps. Wenn Sie Azure Container-Apps mit serverlosen GPUs verwenden, können Sie diese NIMs effizient ausführen, ohne die zugrunde liegende Infrastruktur verwalten zu müssen.
In diesem Lernprogramm lernen Sie, ein Llama3 NVIDIA NIM mit serverlosen GPUs in Azure-Container-Apps bereitzustellen.
In diesem Lernprogramm wird eine Premiuminstanz der Azure Container Registry verwendet, um die Kaltstartleistung beim Arbeiten mit serverlosen GPUs zu verbessern. Wenn Sie keine Premium-Instanz von Azure Container Registry verwenden möchten, stellen Sie sicher, dass Sie den Befehl az acr create in diesem Tutorial so ändern, dass --sku auf basic festgelegt wird.
Voraussetzungen
| Resource | Description |
|---|---|
| Azure-Konto | Ein Azure-Konto mit einem aktiven Abonnement. Falls Sie keins haben, können Sie kostenlos eins erstellen. |
| Azure-Befehlszeilenschnittstelle (Azure CLI) | Installieren Sie die Azure CLI. |
| NVIDIA NGC-API-Schlüssel | Sie können einen API-Schlüssel von der NVIDIA GPU Cloud (NGC)-Website abrufen. |
Konfiguration
Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.
az login
Verwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.
az upgrade
Installieren oder aktualisieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.
Falls Fehler zu fehlenden Parametern auftreten, wenn Sie az containerapp-Befehle in der Azure CLI oder in Cmdlets aus dem Az.App-Modul in PowerShell ausführen, stellen Sie sicher, dass die aktuelle Version der Azure Container Apps-Erweiterung installiert ist.
az extension add --name containerapp --upgrade
Hinweis
Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true.
az extension add --name containerapp --upgrade --allow-preview true
Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App und Microsoft.OperationalInsights.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Richten Sie Umgebungsvariablen ein, indem Sie die Ressourcengruppe benennen und den Speicherort festlegen.
RESOURCE_GROUP="my-resource-group" LOCATION="swedencentral"Generieren Sie als Nächstes einen eindeutigen Containerregistrierungsnamen.
SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 6) ACR_NAME="mygpututorialacr${SUFFIX}"Legen Sie schließlich Variablen fest, um die Umgebung zu benennen und die Umgebung, den Workloadprofiltyp, den Container-App-Namen und den Container zu identifizieren.
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>
Erstellen einer Azure-Ressourcengruppe
Erstellen Sie eine Ressourcengruppe, um die Dienste im Zusammenhang mit der Bereitstellung Ihrer Container-App zu organisieren.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Sie erstellen eine Azure Container Registry(ACR)-Instanz.
Hinweis
In diesem Lernprogramm wird eine Premium-Azure-Containerregistrierung verwendet, um die Kaltstartleistung beim Arbeiten mit serverlosen GPUs zu verbessern. Wenn Sie keine Premium-Azure-Containerregistrierung verwenden möchten, ändern Sie den folgenden Befehl, und legen Sie sie auf
--skubasicfest.az acr create \ --resource-group $RESOURCE_GROUP \ --name $ACR_NAME \ --location $LOCATION \ --sku premium
Importieren des NVIDIA NIM-Images in Ihre Azure Container Registry
Importieren Sie als Nächstes das Image aus der NVIDIA GPU Cloud in azure Container Registry.
Hinweis
NVIDIA NICs verfügen jeweils über eigene Hardwareanforderungen. Stellen Sie sicher, dass der ausgewählte GPU-Typ das NIM Ihrer Wahl unterstützt. Das in diesem Lernprogramm verwendete Llama3 NIM kann auf NVIDIA A100 GPUs ausgeführt werden.
Authentifizieren sie sich bei der Azure-Containerregistrierung.
az acr login --name $ACR_NAMEÜbertragen Sie das Image in die Azure-Containerregistrierung.
az acr import \ --name $ACR_NAME \ --source nvcr.io/nim/$CONTAINER_AND_TAG \ --image $CONTAINER_AND_TAG \ --username '$oauthtoken' \ --password $NGC_SECRET
Aktivieren des Artefaktstreamings (empfohlen, aber optional)
Wenn Ihre Container-App ausgeführt wird, wird der Container aus der Containerregistrierung abgerufen. Wenn Sie größere Bilder haben, wie im Fall von KI-Workloads, kann das Herunterladen des Bildes einige Zeit in Anspruch nehmen. Durch aktivieren des Artefaktstreamings lädt Ihre Container-App zuerst die wesentlichen Teile Ihres Images, wodurch die Zeit zum Starten des Containers reduziert wird. Führen Sie die folgenden Schritte aus, um das Artefakt-Streaming zu aktivieren.
Hinweis
Die folgenden Befehle können lange dauern, bis sie abgeschlossen sind.
Aktivieren Sie das Artefakt-Streaming in Ihrer Container-Registrierung.
az acr artifact-streaming update \ --name $ACR_NAME \ --repository llama-3.1-8b-instruct \ --enable-streaming TrueAktivieren Sie das Artefakt-Streaming im Container-Image.
az acr artifact-streaming create \ --name $ACR_NAME \ --image $CONTAINER_AND_TAG
Erstellen Ihrer Container-App
Als Nächstes erstellen Sie eine Container-App mit dem NVIDIA GPU Cloud API-Schlüssel.
Erstellen Sie die Container-App-Umgebung.
az containerapp env create \ --name $CONTAINERAPPS_ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATIONFügen Sie Ihrer Umgebung das GPU-Workloadprofil hinzu.
az containerapp env workload-profile add \ --resource-group $RESOURCE_GROUP \ --name $CONTAINERAPPS_ENVIRONMENT \ --workload-profile-type $GPU_TYPE \ --workload-profile-name LLAMA_PROFILEErstellen Sie die Container-App.
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.fqdnDieser Befehl gibt die URL Ihrer Container-App zurück. Legen Sie diesen Wert in einem Text-Editor für die Verwendung in einem folgenden Befehl fest.
Hinweis
Einige NIMs haben längere Startzeiten. Um dies zu berücksichtigen, können Sie eine Health-Check-Probe konfigurieren oder die minimalen Replikatanzahl --min-replicas 1 Ihrer Container-App so festlegen, dass ein Replikat stets ausgeführt wird.
Überprüfen, ob die Anwendung funktioniert
Sie können eine erfolgreiche Bereitstellung überprüfen, indem Sie eine Anforderungsanforderung POST an Ihre Anwendung senden.
Bevor Sie diesen Befehl ausführen, stellen Sie sicher, dass Sie die <YOUR_CONTAINER_APP_URL> URL durch ihre Container-App-URL ersetzen, die vom vorherigen Befehl zurückgegeben wird.
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
}'
Verbessern der Leistung mit Volumebereitstellungen (optional)
Beim Starten und Verwenden des Artefaktstreamings mit Azure Container Registry pullt Azure Container Apps beim Start weiterhin die Images aus der Containerregistrierung. Diese Aktion führt auch mit dem optimierten Artefaktstreaming zu einem Kaltstart.
Für noch schnellere Kaltstartzeiten bieten viele der NIMs einen Volume-Mount-Pfad zum Speichern Ihres Images in einem Cacheverzeichnis. Sie können dieses Cacheverzeichnis verwenden, um die Modellgewichte und andere Dateien zu speichern, die das NIM ausführen muss.
Um einen Volume-Mount für die Llama3 NIM einzurichten, müssen Sie einen Volume-Mount, wie in der ./opt/nim/.cache angegeben, auf festlegen. Führen Sie dazu die Schritte im Tutorial zu Volumebereitstellungen aus, und legen Sie den Pfad der Volumebereitstellung auf /opt/nim/.cache fest.
Bereinigen von Ressourcen
Wenn Sie diese Anwendung nicht weiterhin verwenden werden, führen Sie den folgenden Befehl aus, um die Ressourcengruppe zusammen mit allen in diesem Lernprogramm erstellten Ressourcen zu löschen.
Vorsicht
Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Mit diesem Befehl werden auch alle Ressourcen außerhalb des Gültigkeitsbereichs dieses Lernprogramms gelöscht, die in dieser Ressourcengruppe vorhanden sind.
az group delete --name $RESOURCE_GROUP
Tipp
Treten Probleme auf? Teilen Sie uns auf GitHub mit, indem Sie ein Problem im Azure Container Apps-Repository öffnen.