Wdrażanie modelu sztucznej inteligencji w usłudze Azure Kubernetes Service (AKS) za pomocą operatora łańcucha narzędzi AI (wersja zapoznawcza)

Operator łańcucha narzędzi sztucznej inteligencji (KAITO) to zarządzany dodatek dla usługi AKS, który upraszcza środowisko uruchamiania modeli sztucznej inteligencji systemu operacyjnego w klastrach usługi AKS. Operator łańcucha narzędzi sztucznej inteligencji automatycznie aprowizuje niezbędne węzły procesora GPU i konfiguruje skojarzony serwer wnioskowania jako serwer punktu końcowego do modeli sztucznej inteligencji. Użycie tego dodatku zmniejsza czas dołączania i umożliwia skoncentrowanie się na użyciu modelu sztucznej inteligencji i tworzeniu, a nie na konfigurowaniu infrastruktury.

W tym artykule pokazano, jak włączyć dodatek operatora łańcucha narzędzi AI i wdrożyć model AI w usłudze AKS.

Ważne

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:

Zanim rozpoczniesz

  • W tym artykule przyjęto założenie, że podstawowa wiedza na temat pojęć związanych z platformą Kubernetes. Aby uzyskać więcej informacji, zobacz Podstawowe pojęcia dotyczące platformy Kubernetes dla usługi AKS.
  • Aby zapoznać się ze wszystkimi obrazami wnioskowania modelu i zalecaną konfiguracją infrastruktury, zobacz repozytorium GITHub KAITO.
  • Dodatek łańcucha narzędzi sztucznej inteligencji obecnie obsługuje wersję KAITO w wersji 0.1.0. Zanotuj to, biorąc pod uwagę wybór modelu z repozytorium modeli KAITO.

Wymagania wstępne

Instalowanie rozszerzenia interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej

  1. Zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej przy użyciu polecenia az extension add .

    az extension add --name aks-preview
    
  2. Zaktualizuj rozszerzenie, aby upewnić się, że masz najnowszą wersję za pomocą polecenia az extension update .

    az extension update --name aks-preview
    

Rejestrowanie flagi dodawania operatora łańcucha narzędzi sztucznej inteligencji

  1. Zarejestruj flagę funkcji AIToolchainOperatorPreview przy użyciu polecenia az feature register .

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

    Ukończenie rejestracji trwa kilka minut.

  2. Sprawdź rejestrację przy użyciu polecenia az feature show .

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

Eksportowanie zmiennych środowiskowych

  • Aby uprościć kroki konfiguracji w tym artykule, można zdefiniować zmienne środowiskowe przy użyciu następujących poleceń. Pamiętaj, aby zastąpić wartości symboli zastępczych własnymi.

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

Włączanie dodatku łańcucha narzędzi AI w klastrze usługi AKS

W poniższych sekcjach opisano sposób tworzenia klastra usługi AKS z włączonym dodatkiem operatora łańcucha narzędzi AI i wdrażania domyślnego hostowanego modelu sztucznej inteligencji.

Tworzenie klastra usługi AKS z włączonym dodatkiem łańcucha narzędzi sztucznej inteligencji

  1. Utwórz grupę zasobów platformy Azure przy użyciu polecenia az group create .

    az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
    
  2. Utwórz klaster usługi AKS z włączonym dodatkiem łańcucha narzędzi AI za pomocą polecenia az aks create z flagami --enable-ai-toolchain-operator i --enable-oidc-issuer .

    az aks create --location ${AZURE_LOCATION} \
        --resource-group ${AZURE_RESOURCE_GROUP} \
        --name ${CLUSTER_NAME} \
        --enable-oidc-issuer \
        --enable-ai-toolchain-operator
    

    Uwaga

    Usługa AKS tworzy tożsamość zarządzaną po włączeniu dodatku łańcucha narzędzi AI. Tożsamość zarządzana służy do tworzenia pul węzłów procesora GPU w zarządzanym klastrze usługi AKS. Należy ustawić odpowiednie uprawnienia ręcznie, wykonując kroki opisane w poniższych sekcjach.

    Włączenie operatora łańcucha narzędzi sztucznej inteligencji wymaga włączenia wystawcy OIDC.

  3. W istniejącym klastrze usługi AKS można włączyć dodatek operatora łańcucha narzędzi AI przy użyciu polecenia az aks update .

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

Połączenie do klastra

  1. Skonfiguruj kubectl , aby nawiązać połączenie z klastrem przy użyciu polecenia az aks get-credentials .

    az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
    
  2. Sprawdź połączenie z klastrem kubectl get przy użyciu polecenia .

    kubectl get nodes
    

Eksportowanie zmiennych środowiskowych

  • Wyeksportuj zmienne środowiskowe dla grupy zasobów MC, tożsamości identyfikatora podmiotu zabezpieczeń i tożsamości KAITO przy użyciu następujących poleceń:

    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}"
    

Uzyskiwanie wystawcy usługi AKS OpenID Połączenie (OIDC)

  • Pobierz adres URL wystawcy usługi AKS OIDC i wyeksportuj go jako zmienną środowiskową:

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

Tworzenie przypisania roli dla jednostki usługi

  • Utwórz nowe przypisanie roli dla jednostki usługi przy użyciu polecenia az role assignment create .

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

Ustanawianie poświadczeń tożsamości federacyjnej

  • Utwórz poświadczenia tożsamości federacyjnej między tożsamością zarządzaną, wystawcą OIDC usługi AKS i tematem przy użyciu polecenia az identity federated-credential create .

    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
    

Sprawdź, czy wdrożenie jest uruchomione

  1. Uruchom ponownie wdrożenie modułu aprowizacji procesora GPU KAITO na zasobnikach przy użyciu kubectl rollout restart polecenia :

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Sprawdź, czy wdrożenie jest uruchomione przy użyciu kubectl get polecenia :

    kubectl get deployment -n kube-system | grep kaito
    

Wdrażanie domyślnego hostowanego modelu sztucznej inteligencji

  1. Wdróż model Falcon 7B-instruct z repozytorium modeli KAITO przy użyciu kubectl apply polecenia .

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. Śledź zmiany zasobów na żywo w obszarze roboczym przy użyciu kubectl get polecenia .

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

    Uwaga

    Podczas śledzenia zmian zasobów na żywo w obszarze roboczym należy pamiętać, że gotowość maszyny może potrwać do 10 minut, a gotowość obszaru roboczego do 20 minut.

  3. Sprawdź usługę i uzyskaj adres IP usługi przy użyciu kubectl get svc polecenia .

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Uruchom model Falcon 7B-instruct z wybranymi przykładowymi danymi wejściowymi, używając następującego curl polecenia:

    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\"}"
    

Czyszczenie zasobów

Jeśli nie potrzebujesz już tych zasobów, możesz je usunąć, aby uniknąć naliczania dodatkowych opłat za platformę Azure.

  • Usuń grupę zasobów i skojarzone z nią zasoby przy użyciu polecenia az group delete .

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

Następne kroki

Aby uzyskać więcej opcji modelu wnioskowania, zobacz repozytorium GITHub KAITO.