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

Der KI-Toolkette-Operator (KAITO) ist ein verwaltetes Add-On für AKS, das die Ausführung von OSS-KI-Modellen auf Ihren AKS-Clustern vereinfacht. Der KI-Toolkette-Operator stellt automatisch die erforderlichen GPU-Knoten bereit und richtet den zugeordneten Ableitungsserver als Endpunktserver für Ihre KI-Modelle ein. Die Verwendung dieses Add-Ons reduziert Ihre Onboardingzeit und ermöglicht es Ihnen, sich auf die Nutzung und Entwicklung von KI-Modellen und nicht auf die Infrastruktureinrichtung zu konzentrieren.

In diesem Artikel erfahren Sie, wie Sie das KI-Toolkette-Operator-Add-On aktivieren und ein KI-Modell 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 den Vereinbarungen zum Service Level und der eingeschränkten Garantie 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.
  • Informationen zu allen gehosteten Modellrückschlussbildern und empfohlener Infrastruktureinrichtung finden Sie im KAITO GitHub-Repository.
  • Das Add-On „KI-Toolchain-Betreiber“ unterstützt derzeit die KAITO-Version v0.1.0. Berücksichtigen Sie dies, wenn Sie sich für ein Modell aus dem KAITO-Modellrepository entscheiden.

Voraussetzungen

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
    

    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.

    Die KI-Toolchain-Betreiberaktivierung erfordert die Aktivierung des OIDC-Ausstellers.

  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 az aks get-credentials können Sie kubectl 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
    

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 Bereitstellung mit dem Befehl kubectl get ausgeführt wird:

    kubectl get deployment -n kube-system | grep kaito
    

Bereitstellen eines standardmäßig gehosteten KI-Modells

  1. Stellen Sie mithilfe des kubectl apply-Befehls das Modell „falcon-7b-instruct“ 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

    Wenn Sie die Änderungen der Liveressourcen in Ihrem Arbeitsbereich nachverfolgen, beachten Sie, dass die Computerbereitschaft bis zu 10 Minuten und die Arbeitsbereichsbereitschaft bis zu 20 Minuten erfordern kann.

  3. Überprüfen Sie Ihren Dienst und rufen Sie die IP-Adresse des Diensts mithilfe des kubectl get svc-Befehls ab.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Führen Sie das Modell „falcon-7b-instruct“ unter Verwendung des folgenden curl-Befehls mit einer Beispieleingabe Ihrer Wahl aus:

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/chat -H "accept: application/json" -H "Content-Type: application/json" -d "{\"prompt\":\"YOUR QUESTION HERE\"}"
    

Bereinigen von Ressourcen

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

  • Löschen Sie die Ressourcengruppe und die zugeordneten Ressourcen mit dem Befehl az group delete.

    az group delete --name "${AZURE_RESOURCE_GROUP}" --yes --no-wait
    

Nächste Schritte

Weitere Optionen für das Inferenzmodell finden Sie im KAITO-GitHub-Repository.