Condividi tramite


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

Installare l'estensione di anteprima dell'interfaccia della riga di comando di Azure

  1. 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
    
  2. 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

  1. 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.

  2. 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

  1. Creare un gruppo di risorse di Azure con il comando az group create.

    az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
    
  2. 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.

  3. 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

  1. 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}
    
  2. 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

  1. 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
    
  2. 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

  1. 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
    
  2. 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.

  3. 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}')
    
  4. 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.