Freigeben über


Bereitstellen eines KI-Modells auf Azure Kubernetes Service (AKS) mit dem KI-Toolchain-Betreiber (Vorschau)

Bereitstellung in Azure

Der KI-Toolchainoperator (KAITO) ist ein verwaltetes Add-On, das die Ausführung von Open Source- und privaten KI-Modellen auf Ihrem AKS-Cluster vereinfacht. KAITO reduziert die Zeit für das Onboarding von Modellen und die Bereitstellung von Ressourcen, wodurch schnellere KI-Modell-Prototyperstellung und -entwicklung statt infrastrukturbezogenes Management ermöglicht werden.

In diesem Artikel erfahren Sie, wie Sie die KI-Toolchain-Operator-Erweiterung aktivieren und ein KI-Modell für Inferenzzwecke auf AKS bereitstellen.

Wichtig

AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von Service Level Agreements und der Herstellergarantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Voraussetzungen

  • Für diesen Artikel werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Grundlegende Kubernetes-Konzepte für AKS.
  • Alle gehosteten modellvoreingestellten Bilder und die Standardressourcenkonfiguration finden Sie im KAITO GitHub-Repository.
  • Das KI-Toolkette-Operator-Add-On unterstützt derzeit KAITO Version 0.4.4. Bitte notieren Sie sich dies, wenn Sie ihre Auswahl des Modells aus dem KAITO-Modell-Repository berücksichtigen.

Voraussetzungen

  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

    • Wenn Sie über mehrere Azure-Abonnements verfügen, stellen Sie sicher, dass Sie das richtige Abonnement auswählen, in dem die Ressourcen mit dem Befehl az account set erstellt und in Rechnung gestellt werden.

      Hinweis

      Ihr Azure-Abonnement muss über ein GPU-VM-Kontingent verfügen, das für Ihre Modellbereitstellung in derselben Azure-Region wie Ihre AKS-Ressourcen empfohlen wird.

  • Version 2.47.0 oder höher der Azure CLI installiert und konfiguriert. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

  • Installation und Konfiguration des Kubernetes-Befehlszeilenclients kubectl. Weitere Informationen finden Sie unter Installieren von kubectl.

  • Installieren Sie die Azure CLI-Erweiterung AKS preview.

  • Registrieren Sie die KI-Toolchain-Betreiber Add-On Feature-Flag.

Installieren Sie die Azure CLI-Vorschauerweiterung

  1. Installieren Sie die Azure CLI Vorschauerweiterung mithilfe des Befehls az extension add.

    az extension add --name aks-preview
    
  2. Aktualisieren Sie die Erweiterung, um sicherzustellen, dass Sie die neueste Version haben, indem Sie den Befehl az extension update verwenden.

    az extension update --name aks-preview
    

Registrieren der Add-On-Featureflagge für den KI-Toolchain-Betreibers

  1. Registrieren Sie die Feature-Flag AIToolchainOperatorPreview mithilfe des Befehls az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

    Es dauert einige Minuten, bis die Registrierung abgeschlossen ist.

  2. Verifizieren Sie die Registrierung mithilfe des Befehls az feature show.

    az feature show --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

Exportieren von Umgebungsvariablen

  • Um die Konfigurationsschritte in diesem Artikel zu vereinfachen, können Sie Umgebungsvariablen mithilfe der folgenden Befehle definieren. Ersetzen Sie die Platzhalterwerte durch Ihre eigenen Werte.

    export AZURE_SUBSCRIPTION_ID="mySubscriptionID"
    export AZURE_RESOURCE_GROUP="myResourceGroup"
    export AZURE_LOCATION="myLocation"
    export CLUSTER_NAME="myClusterName"
    

Aktivieren des KI-Toolkette-Operator-Add-Ons auf einem AKS-Cluster

In den folgenden Abschnitten wird beschrieben, wie Sie ein AKS-Cluster mit aktiviertem KI-Toolchain-Betreiber-Add-On erstellen und ein standardmäßiges gehostetes KI-Modell bereitstellen.

Erstellen eines AKS-Clusters mit aktiviertem KI-Toolchain-Betreiber-Add-On

  1. Erstellen Sie mit dem Befehl az group create eine Azure-Ressourcengruppe.

    az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
    
  2. Erstellen Sie einen AKS-Cluster mit aktiviertem KI-Toolchain-Betreiber-Add-On mithilfe des Befehls az aks create mit den Flags --enable-ai-toolchain-operator und --enable-oidc-issuer.

    az aks create --location $AZURE_LOCATION \
        --resource-group $AZURE_RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --enable-oidc-issuer \
        --enable-ai-toolchain-operator \
        --generate-ssh-keys
    

    Hinweis

    AKS erstellt eine verwaltete Identität, nachdem Sie das KI-Toolkette-Operator-Add-On aktiviert haben. Die verwaltete Identität wird verwendet, um GPU-Knotenpools im verwalteten AKS-Cluster zu erstellen. Die richtigen Berechtigungen müssen manuell festgelegt werden, wenn Sie die in den folgenden Abschnitten eingeführten Schritte ausführen.

  3. Auf einem vorhandenen AKS-Cluster können Sie das KI-Toolchain-Betreiber-Add-On mit dem Befehl az aks update aktivieren.

    az aks update --name $CLUSTER_NAME \
            --resource-group $AZURE_RESOURCE_GROUP \
            --enable-oidc-issuer \
            --enable-ai-toolchain-operator
    

Herstellen einer Clusterverbindung

  1. Mit dem Befehl kubectl können Sie für die Verbindungsherstellung mit Ihrem Cluster konfigurieren.

    az aks get-credentials --resource-group $AZURE_RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Überprüfen Sie die Verbindung mit dem Cluster mithilfe des Befehls kubectl get.

    kubectl get nodes
    

Exportieren von Umgebungsvariablen

  • Exportieren Sie Umgebungsvariablen für die MC-Ressourcengruppe, Prinzipal-ID-Identität und die KAITO-ID-Identität mithilfe der folgenden Befehle:

    export MC_RESOURCE_GROUP=$(az aks show --resource-group $AZURE_RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query nodeResourceGroup \
        -o tsv)
    export PRINCIPAL_ID=$(az identity show --name "ai-toolchain-operator-${CLUSTER_NAME}" \
        --resource-group $MC_RESOURCE_GROUP \
        --query 'principalId' \
        -o tsv)
    export KAITO_IDENTITY_NAME="ai-toolchain-operator-${CLUSTER_NAME}"
    

Abrufen des AKS OpenID Connect (OIDC)-Ausstellers

  • Rufen Sie die AKS OIDC Aussteller-URL ab, und exportieren Sie sie als Umgebungsvariable:

    export AKS_OIDC_ISSUER=$(az aks show --resource-group $AZURE_RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query "oidcIssuerProfile.issuerUrl" \
        -o tsv)
    

Erstellen einer Rollenzuweisung für den Dienstprinzipal

  • Erstellen Sie mithilfe des Befehls az role assignment create eine neue Rollenzuweisung für den Dienstprinzipal.

    az role assignment create --role "Contributor" \
        --assignee $PRINCIPAL_ID \
        --scope "/subscriptions/$AZURE_SUBSCRIPTION_ID/resourcegroups/$AZURE_RESOURCE_GROUP"
    

Einrichten von Anmeldeinformationen für eine Verbundidentität

  • Erstellen Sie mit dem Befehl az identity federated-credential create die Verbundidentitätsberechtigung zwischen der verwalteten Identität, dem AKS-OIDC-Aussteller und dem Antragsteller.

    az identity federated-credential create --name "kaito-federated-identity" \
        --identity-name $KAITO_IDENTITY_NAME \
        -g $MC_RESOURCE_GROUP \
        --issuer $AKS_OIDC_ISSUER \
        --subject system:serviceaccount:"kube-system:kaito-gpu-provisioner" \
        --audience api://AzureADTokenExchange
    

    Hinweis

    Bevor dieser Schritt abgeschlossen ist, verbleibt der gpu-provisioner-Controller-Pod in einem Absturzschleifenstatus. Nachdem die Verbundanmeldeinformationen erstellt wurden, erreicht der gpu-provisioner-Controller-Pod einen ausgeführten Zustand, und Sie können überprüfen, ob die Bereitstellung in den folgenden Schritten ausgeführt wird.

Vergewissern Sie sich, dass Ihre Bereitstellung ausgeführt wird

  1. Starten Sie die KAITO GPU Provisioner-Bereitstellung auf Ihren Pods neu, indem Sie den Befehl kubectl rollout restart verwenden:

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Stellen Sie sicher, dass die GPU-Bereitstellung mit dem kubectl get Befehl ausgeführt wird:

    kubectl get deployment -n kube-system | grep kaito
    

Bereitstellen eines standardmäßig gehosteten KI-Modells

  1. Stellen Sie mithilfe des Befehls kubectl apply das Modell „Falcon 7B-instruct“ mit den Voreinstellungen aus dem KAITO-Modellrepository bereit.

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. Verfolgen Sie die Änderungen der Liveressourcen in Ihrem Arbeitsbereich mithilfe des kubectl get-Befehls.

    kubectl get workspace workspace-falcon-7b-instruct -w
    

    Hinweis

    Beachten Sie beim Nachverfolgen der KAITO-Arbeitsbereichsbereitstellung, dass die Computerbereitschaft bis zu 10 Minuten dauern kann und die Arbeitsbereichsbereitschaft je nach Größe Ihres Modells bis zu 20 Minuten dauern kann.

  3. Überprüfen Sie Ihren Rückschlussdienst, und rufen Sie die DIENST-IP-Adresse mithilfe des kubectl get svc Befehls ab.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Testen Sie den Falcon 7B-Anweisungs-Ableitungsdienst mit einer Beispieleingabe Ihrer Wahl mithilfe des OpenAI-Chat-Abschluss-API-Formats:

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/v1/completions -H "Content-Type: application/json" \
      -d '{
            "model": "falcon-7b-instruct",
            "prompt": "What is Kubernetes?",
            "max_tokens": 10
           }'
    

Bereinigen von Ressourcen

Wenn Sie diese Ressourcen nicht mehr benötigen, können Sie sie löschen, um zusätzliche Azure-Computegebühren zu vermeiden.

  1. Löschen Sie den KAITO-Arbeitsbereich mithilfe des kubectl delete workspace Befehls.

    kubectl delete workspace workspace-falcon-7b-instruct
    
  2. Sie müssen die gpu-Knotenpools, die von der KAITO-Bereitstellung bereitgestellt werden, manuell löschen. Verwenden Sie die von Falcon-7b instruct workspace erstellte Knotenbeschriftung, um den Namen des Knotenpools mithilfe des az aks nodepool list Befehls abzurufen. In diesem Beispiel lautet die Knotenbeschriftung "kaito.sh/workspace": "workspace-falcon-7b-instruct".

    az aks nodepool list --resource-group $AZURE_RESOURCE_GROUP --cluster-name $CLUSTER_NAME
    
  3. Löschen Sie den Knotenpool mit diesem Namen aus Ihrem AKS-Cluster, und wiederholen Sie die Schritte in diesem Abschnitt für jeden KAITO-Arbeitsbereich, der entfernt wird.

Häufige Problembehandlungsszenarien

Nach dem Anwenden des KAITO-Modell-Inferenz-Arbeitsbereichs könnten Ihre Ressourcenbereitschaft und Arbeitsbereichsbedingungen aus den folgenden Gründen möglicherweise nicht zu True aktualisiert werden:

  • Möglicherweise verfügen Sie nicht über ausreichende Berechtigungen, um auf dem AKS-Cluster zu arbeiten. Stellen Sie sicher, dass der Identität ai-toolchain-operator-$CLUSTER_NAME Ihrer Azure-Ressourcengruppe die Rolle Contributor zugewiesen wurde. Führen Sie den az role assignment list Befehl aus, und bestätigen Sie, dass das Ergebnis nicht leer ist:

    az role assignment list --scope /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP
    
  • Ihr Azure-Abonnement verfügt nicht über ein Kontingent für den minimalen GPU-Instanztyp, der in Ihrem KAITO-Arbeitsbereich angegeben ist. Sie müssen eine Kontingenterhöhung für die GPU-VM-Familie in Ihrem Azure-Abonnement anfordern.

  • Der GPU-Instanztyp ist in Ihrer AKS-Region nicht verfügbar. Bestätigen Sie die Verfügbarkeit der GPU-Instanz in Ihrer spezifischen Region , und wechseln Sie zur Azure-Region, wenn Ihre GPU-VM-Familie nicht verfügbar ist.

Nächste Schritte

Weitere Informationen zu den Bereitstellungsoptionen des KAITO-Modells finden Sie unten: