Partager via


Déployer un modèle IA sur Azure Kubernetes Service (AKS) avec l’opérateur de chaîne d’outils IA (préversion)

Déployer sur Azure

L’opérateur de chaîne d’outils IA (KAITO) est un module complémentaire managé qui simplifie l’expérience d’exécution de modèles IA open source et privés sur votre cluster AKS. KAITO réduit le temps nécessaire pour intégrer des modèles et approvisionner des ressources, ce qui permet un prototypage et un développement de modèles IA plus rapides plutôt que la gestion de l’infrastructure.

Cet article vous montre comment activer le module complémentaire de gestionnaire de chaîne d'outils IA et déployer un modèle d'IA pour l'inférence sur AKS.

Important

Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Les préversions AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Telles quelles, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :

Avant de commencer

  • Cet article suppose une compréhension élémentaire des concepts liés à Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes pour AKS.
  • Pour toutes les images prédéfinies de modèle hébergé et la configuration des ressources par défaut, consultez le référentiel GitHub KAITO.
  • Le module complémentaire d’opérateur de chaîne d’outils IA prend actuellement en charge KAITO version 0.4.4. Notez cette remarque en tenant compte de votre choix de modèle à partir du référentiel de modèles KAITO.

Prérequis

Installer l’extension Azure CLI en préversion

  1. Installez l’extension azure CLI en préversion à l’aide de la commande az extension ajouter .

    az extension add --name aks-preview
    
  2. Mettez à jour l’extension pour vous assurer que vous disposez de la dernière version à l’aide de la commande mise à jour de l'extension az .

    az extension update --name aks-preview
    

Enregistrez l’indicateur de fonctionnalité complémentaire de l’opérateur de la chaîne d’outils AI

  1. Inscrivez l’indicateur de fonctionnalité AIToolchainOperatorPreview à l’aide de la commande registre des fonctionnalités az .

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

    L’inscription peut prendre quelques minutes.

  2. Vérifiez l’enregistrement à l’aide de la commande émission de fonctionnalités az.

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

Exporter des variables d’environnement

  • Pour simplifier les étapes de configuration de cet article, vous pouvez définir des variables d’environnement à l’aide des commandes suivantes. Assurez-vous de remplacer les valeurs d’espace réservé par les vôtres.

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

Activer le module complémentaire d’opérateur de chaîne d’outils d’IA sur un cluster AKS

Les sections suivantes décrivent comment créer un cluster AKS avec le module complémentaire d'opérateur de chaîne d'outils IA activé et déployer un modèle IA hébergé par défaut.

Créer un cluster AKS avec le module complémentaire d'opérateur de chaîne d'outils AI activé

  1. Créez un groupe de ressources Azure en utilisant la commande az group create.

    az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
    
  2. Créez un cluster AKS avec le module complémentaire d’opérateur de chaîne d’outils AI activé à l’aide de la commande az aks créer avec les indicateurs --enable-ai-toolchain-operator et --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
    

    Remarque

    AKS crée une identité managée une fois que vous avez activé le module complémentaire d’opérateur de chaîne d’outils d’IA. L'identité gérée est utilisée pour créer des pools de nœuds GPU dans le cluster AKS géré. Les autorisations appropriées doivent être définies manuellement en suivant les étapes présentées dans les sections suivantes.

  3. Sur un cluster AKS existant, vous pouvez activer le module complémentaire d’opérateur de chaîne d’outils AI à l’aide de la commande az aks mise à jour.

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

Se connecter au cluster

  1. Configurez kubectl pour vous connecter à votre cluster à l’aide de la commande az aks obtenir les informations d'identification.

    az aks get-credentials --resource-group $AZURE_RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Pour vérifier la connexion à votre cluster, exécutez la commande kubectl get.

    kubectl get nodes
    

Exporter des variables d’environnement

  • Exportez les variables d'environnement pour le groupe de ressources MC, l'identité de l'ID principal et l'identité KAITO à l'aide des commandes suivantes :

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

Obtenez l'émetteur AKS OpenID Connect (OIDC)

  • Obtenez l’URL de l’émetteur AKS OIDC et exportez-la en tant que variable d’environnement :

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

Créer une attribution de rôle pour le principal de service

  • Créez une attribution de rôle pour le principal de service à l’aide de la commande az attribution de rôle créer .

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

Établissez une identité fédérée à l’aide d’informations d’identification

  • Créez les informations d’identification d’identité fédérée entre l’identité managée, l’émetteur AKS OIDC et le sujet à l’aide de la commande az identité création d'informations d'identification fédérées.

    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
    

    Remarque

    Avant de terminer cette étape, le pod de contrôleur gpu-provisioner doit rester dans un état de boucle d’incident. Une fois les informations d’identification fédérées créées, le pod de contrôleur gpu-provisioner doit être dans un état en cours d’exécution. Vous pourrez vérifier que le déploiement fonctionne dans les étapes suivantes.

Vérifiez que votre déploiement est en cours d'exécution

  1. Redémarrez le déploiement du fournisseur de GPU KAITO sur vos pods à l'aide de la commande kubectl rollout restart :

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Vérifiez que le déploiement du provisionneur GPU est en cours d’exécution à l’aide de la kubectl get commande :

    kubectl get deployment -n kube-system | grep kaito
    

Déployer un modèle d’IA hébergé par défaut

  1. Déployez le modèle prédéfini Falcon 7B-instruct depuis le référentiel de modèles KAITO en utilisant la commande kubectl apply.

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. Suivez les modifications des ressources en direct dans votre espace de travail à l’aide de la commande kubectl get.

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

    Remarque

    Lorsque vous suivez le déploiement de l’espace de travail KAITO, notez que la préparation de l’ordinateur peut prendre jusqu’à 10 minutes et que la préparation de l’espace de travail peut prendre jusqu’à 20 minutes en fonction de la taille de votre modèle.

  3. Vérifiez votre service d’inférence et obtenez l’adresse IP du service à l’aide de la kubectl get svc commande.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Testez le service d’inférence Falcon 7B-instruct avec un exemple d’entrée de votre choix à l’aide du format d’API d’auto-complétion de conversation OpenAI :

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/v1/completions -H "Content-Type: application/json" \
      -d '{
            "model": "falcon-7b-instruct",
            "prompt": "What is Kubernetes?",
            "max_tokens": 10
           }'
    

Nettoyer les ressources

Si vous n’avez plus besoin de ces ressources, supprimez-les pour éviter des frais de calcul Azure supplémentaires inutiles.

  1. Supprimez l’espace de travail KAITO à l’aide de la kubectl delete workspace commande.

    kubectl delete workspace workspace-falcon-7b-instruct
    
  2. Vous devez supprimer manuellement les pools de nœuds GPU approvisionnés par le déploiement KAITO. Utilisez l'étiquette de nœud créée par l'espace de travail Falcon-7b instruct pour obtenir le nom du pool de nœuds à l'aide de la commande az aks nodepool list. Dans cet exemple, l’étiquette de nœud est « kaito.sh/workspace » : « workspace-falcon-7b-instruct ».

    az aks nodepool list --resource-group $AZURE_RESOURCE_GROUP --cluster-name $CLUSTER_NAME
    
  3. Supprimez le pool de nœuds avec ce nom de votre cluster AKS et répétez les étapes décrites dans cette section pour chaque espace de travail KAITO qui sera supprimé.

Scénarios courants de résolution des problèmes

Après avoir appliqué l’espace de travail d’inférence du modèle KAITO, la préparation de vos ressources et les conditions de votre espace de travail peuvent ne pas être mises à jour à True pour les raisons suivantes :

  • Vous ne disposez peut-être pas des autorisations suffisantes pour fonctionner sur le cluster AKS. Vérifiez que l’identité ai-toolchain-operator-$CLUSTER_NAME a été affectée au rôle Contributor à votre groupe de ressources Azure. Exécutez la az role assignment list commande et vérifiez que le résultat n’est pas vide :

    az role assignment list --scope /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP
    
  • Votre abonnement Azure n’a pas de quota pour le type d’instance GPU minimal spécifié dans votre espace de travail KAITO. Vous devez demander une augmentation de quota pour la famille de machines virtuelles GPU dans votre abonnement Azure.

  • Le type d’instance GPU n’est pas disponible dans votre région AKS. Vérifiez la disponibilité de l’instance GPU dans votre région spécifique et changez la région Azure si votre famille de machines virtuelles GPU n’est pas disponible.

Étapes suivantes

En savoir plus sur les options de déploiement de modèle KAITO ci-dessous :