Distribuire un modello di intelligenza artificiale in servizio Azure Kubernetes (servizio Azure Kubernetes) con l'operatore toolchain di intelligenza artificiale (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 ospitata e la configurazione consigliata dell'infrastruttura, vedere il repository GitHub KAITO.
- Il componente aggiuntivo dell'operatore toolchain di intelligenza artificiale attualmente supporta KAITO versione v0.1.0, tenere presente che è opportuno prendere in considerazione 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 utilizzata deve avere una quota di VM GPU.
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.
Installare l'estensione di anteprima del servizio Azure Kubernetes dell'interfaccia della riga di comando di Azure.
Registrare il flag di funzionalità del componente aggiuntivo dell'operatore toolchain di intelligenza artificiale.
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 di intelligenza artificiale
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 comando az 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 di intelligenza artificiale abilitato e distribuire un modello di intelligenza artificiale ospitato predefinito.
Creare un cluster del servizio Azure Kubernetes con il componente aggiuntivo dell'operatore toolchain di intelligenza artificiale 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 di intelligenza artificiale abilitato usando il comando az aks create con i
--enable-ai-toolchain-operator
flag 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.
L'abilitazione dell'operatore toolchain di intelligenza artificiale richiede l'abilitazione dell'emittente OIDC.
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 dell'identità federata tra l'identità gestita, l'emittente OIDC del servizio Azure Kubernetes 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
Verificare che la distribuzione sia in esecuzione
Riavviare la distribuzione del provisioner GPU KAITO nei pod usando il
kubectl rollout restart
comando :kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
Verificare che la distribuzione sia in esecuzione usando il
kubectl get
comando :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
kubectl apply
comando .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 l'idoneità dei computer può richiedere fino a 10 minuti e l'idoneità dell'area di lavoro può richiedere 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 di propria scelta usando il comando seguente
curl
: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 Azure.
Eliminare il gruppo di risorse e le risorse associate usando il comando az group delete .
az group delete --name "${AZURE_RESOURCE_GROUP}" --yes --no-wait
Passaggi successivi
Per altre opzioni del modello di inferenza, vedere il repository GitHub KAITO.
Azure Kubernetes Service
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per