Distribuire un modello di intelligenza artificiale nel servizio Azure Kubernetes (AKS) con l'Operatore toolchain IA (anteprima)
L'operatore toolchain IA (KAITO) è un componente aggiuntivo gestito per il servizio Azure Kubernetes che semplifica l'esperienza di esecuzione dei modelli di intelligenza artificiale dei software open source nei cluster del servizio Azure Kubernetes. L'operatore toolchain IA effettua automaticamente il provisioning dei nodi GPU necessari e configura il server di inferenza associato come server endpoint per i modelli di intelligenza artificiale. L'uso di questo componente aggiuntivo riduce i tempi di onboarding e consente di concentrarsi sull'utilizzo e lo sviluppo dei modelli di intelligenza artificiale piuttosto che sulla configurazione dell'infrastruttura.
Questo articolo illustra come abilitare il componente aggiuntivo dell'operatore toolchain IA e distribuire un modello di intelligenza artificiale nel servizio Azure Kubernetes.
Importante
Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e opzionale. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Operazioni preliminari
- Questo articolo presuppone una conoscenza di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base di Kubernetes per il servizio Azure Kubernetes.
- Per tutte le immagini di inferenza del modello ospitati e la configurazione consigliata dell'infrastruttura, vedere il repository GitHub KAITO.
- Il componente aggiuntivo dell'operatore toolchain di intelligenza artificiale attualmente supporta KAITO versione 0.1.0. Prendere nota di questo problema considerando la scelta del modello dal repository di modelli KAITO.
Prerequisiti
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Se sono presenti più sottoscrizioni di Azure, assicurarsi di selezionare la sottoscrizione corretta in cui verranno create le risorse e addebitate usando il comando az account set.
Nota
La sottoscrizione usata deve avere una quota di VM GPU per la distribuzione del modello scelto.
Interfaccia della riga di comando di Azure versione 2.47.0 o successiva installata e configurata. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.Client della riga di comando Kubernetes, kubectl, installato e configurato. Per altre informazioni, vedere Installare kubectl.
Registrare il flag di funzionalità del componente aggiuntivo dell'Operatore toolchain IA.
Installare l'estensione di anteprima dell'interfaccia della riga di comando di Azure
Installare l'estensione di anteprima dell'interfaccia della riga di comando di Azure usando il comando az extension add.
az extension add --name aks-preview
Aggiornare l'estensione per assicurarsi di avere la versione più recente usando il comando az extension update.
az extension update --name aks-preview
Registrare il flag di funzionalità del componente aggiuntivo dell'operatore toolchain IA
Registrare il flag di funzionalità AIToolchainOperatorPreview usando il comando az feature register.
az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
Per completare la registrazione sono necessari alcuni minuti.
Verificare la registrazione usando il comandoaz feature show.
az feature show --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
Esportare le variabili di ambiente
Per semplificare i passaggi di configurazione descritti in questo articolo, è possibile definire le variabili di ambiente usando i comandi seguenti. Assicurarsi di sostituire i segnaposto con i propri.
export AZURE_SUBSCRIPTION_ID="mySubscriptionID" export AZURE_RESOURCE_GROUP="myResourceGroup" export AZURE_LOCATION="myLocation" export CLUSTER_NAME="myClusterName"
Abilitare il componente aggiuntivo dell'operatore toolchain IA in un cluster del servizio Azure Kubernetes
Le sezioni seguenti descrivono come creare un cluster del servizio Azure Kubernetes con il componente aggiuntivo dell'Operatore toolchain IA abilitato e distribuire un modello di intelligenza artificiale ospitato predefinito.
Creare un cluster del servizio Azure Kubernetes con il componente aggiuntivo dell'Operatore toolchain IA abilitato
Creare un gruppo di risorse di Azure con il comando az group create.
az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
Creare un cluster del servizio Azure Kubernetes con il componente aggiuntivo dell'Operatore toolchain IA abilitato usando il comando az aks create con i flag
--enable-ai-toolchain-operator
e--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
Nota
Il servizio Azure Kubernetes crea un'identità gestita dopo aver abilitato il componente aggiuntivo dell'operatore toolchain IA. L'identità gestita viene usata per creare pool di nodi GPU nel cluster del servizio Azure Kubernetes gestito. Le autorizzazioni appropriate devono essere impostate manualmente seguendo i passaggi introdotti nelle sezioni seguenti.
In un cluster del servizio Azure Kubernetes esistente è possibile abilitare il componente aggiuntivo dell'operatore toolchain di intelligenza artificiale usando il comando az aks update.
az aks update --name ${CLUSTER_NAME} \ --resource-group ${AZURE_RESOURCE_GROUP} \ --enable-oidc-issuer \ --enable-ai-toolchain-operator
Connettersi al cluster
Configurare
kubectl
per connettersi al cluster usando il comando az aks get-credentials.az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
Verificare la connessione al cluster usando il comando
kubectl get
.kubectl get nodes
Esportare le variabili di ambiente
Esportare le variabili di ambiente per il gruppo di risorse MC, l'identità ID entità e l'identità KAITO usando i comandi seguenti:
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}"
Ottenere l'autorità di certificazione OIDC (OpenID Connect) del servizio Azure Kubernetes
Ottenere l'URL dell'autorità di certificazione OIDC del servizio Azure Kubernetes ed esportarlo come variabile di ambiente:
export AKS_OIDC_ISSUER=$(az aks show --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${CLUSTER_NAME}" \ --query "oidcIssuerProfile.issuerUrl" \ -o tsv)
Creare un'assegnazione di ruolo per l'entità servizio
Creare una nuova assegnazione di ruolo per l'entità servizio usando il comando az role assignment create.
az role assignment create --role "Contributor" \ --assignee "${PRINCIPAL_ID}" \ --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourcegroups/${AZURE_RESOURCE_GROUP}"
Stabilire una credenziale di identità federata
Creare le credenziali di identità federate tra l'identità gestita, l’emittente OIDC del servizio Azure Kubernetes e l'autorità emittente dell'account del servizio e l'oggetto usando il comando 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
Nota
Prima di completare questo passaggio, il
gpu-provisioner
pod del controller rimarrà in uno stato di ciclo di arresto anomalo del sistema. Dopo aver creato le credenziali federate, ilgpu-provisioner
pod del controller raggiungerà uno stato di esecuzione e sarà possibile verificare che la distribuzione sia in esecuzione nei passaggi seguenti.
Verificare che la distribuzione sia in esecuzione
Riavviare la distribuzione del provisioner GPU KAITO nei pod usando il comando
kubectl rollout restart
:kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
Verificare che la distribuzione sia in esecuzione usando il comando
kubectl get
:kubectl get deployment -n kube-system | grep kaito
Distribuire un modello di intelligenza artificiale ospitato predefinito
Distribuire il modello Falcon 7B-instruct dal repository di modelli KAITO usando il comando
kubectl apply
.kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
Tenere traccia delle modifiche delle risorse in tempo reale nell'area di lavoro usando il comando
kubectl get
.kubectl get workspace workspace-falcon-7b-instruct -w
Nota
Quando si tiene traccia delle modifiche delle risorse in tempo reale nell'area di lavoro, tenere presente che la preparazione delle macchine può richiedere fino a 10 minuti e quella dell'area di lavoro fino a 20 minuti.
Controllare il servizio e ottenere l'indirizzo IP del servizio usando il comando
kubectl get svc
.export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
Eseguire il modello Falcon 7B-instruct con un input di esempio a scelta usando il comando
curl
seguente: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\"}"
Pulire le risorse
Se queste risorse non sono più necessarie, è possibile eliminarle per evitare di incorrere in costi aggiuntivi di calcolo di Azure.
Eliminare l'area di lavoro KAITO e le risorse associate usando il
kubectl delete workspace
comando .kubectl delete workspace workspace-falcon-7b-instruct
Passaggi successivi
Per altre opzioni di distribuzione del modello, vedere il repository GitHub KAITO upstream.
- Esplorare MLOps per intelligenza artificiale e flussi di lavoro di Machine Learning nel servizio Azure Kubernetes
- Informazioni sulle procedure consigliate di MLOps per le pipeline di intelligenza artificiale nel servizio Azure Kubernetes
- Informazioni su come distribuire carichi di lavoro GPU nel servizio Azure Kubernetes
Azure Kubernetes Service