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
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Jeśli masz wiele subskrypcji platformy Azure, upewnij się, że wybrano poprawną subskrypcję, w której zostaną utworzone zasoby i naliczono opłaty przy użyciu polecenia az account set .
Uwaga
Używana subskrypcja musi mieć przydział maszyny wirtualnej z procesorem GPU.
Interfejs wiersza polecenia platformy Azure w wersji 2.47.0 lub nowszej został zainstalowany i skonfigurowany. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.Klient wiersza polecenia kubernetes, kubectl, zainstalowany i skonfigurowany. Aby uzyskać więcej informacji, zobacz Instalowanie narzędzia kubectl.
Zainstaluj rozszerzenie AKS interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej.
Zarejestruj flagę funkcji dodawania operatora łańcucha narzędzi sztucznej inteligencji.
Instalowanie rozszerzenia interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej
Zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej przy użyciu polecenia az extension add .
az extension add --name aks-preview
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
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.
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
Utwórz grupę zasobów platformy Azure przy użyciu polecenia az group create .
az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
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 \ --generate-ssh-keys
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.
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
Nawiązywanie połączenia z klastrem
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}
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 AKS OpenID Connect (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
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
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
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
Ś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.
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}')
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.
Azure Kubernetes Service