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)

L’opérateur de chaîne d’outils d’IA (KAITO) est un module complémentaire managé pour AKS qui simplifie l’expérience d’exécution de modèles OSS d’IA sur vos clusters AKS. L’opérateur de chaîne d’outils IA provisionne automatiquement les nœuds GPU nécessaires et configure le serveur d’inférence associé en tant que serveur de point de terminaison sur vos modèles d’IA. L’utilisation de ce module complémentaire réduit votre temps d’intégration et vous permet de vous concentrer sur l’utilisation et le développement du modèle d’IA plutôt que sur la configuration de l’infrastructure.

Cet article explique comment activer le module complémentaire d’opérateur de chaîne d’outils d’IA et déployer un modèle d’IA 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 d’inférence de modèle hébergé et la configuration recommandée de l’infrastructure, consultez le dépôt KAITO GitHub.
  • Actuellement, le module complémentaire Gestionnaire de chaîne d’outils IA prend en charge KAITO version v0.1.0, prenez ceci en compte lorsque vous choisissez un 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.

    L’activation de l’opérateur de la chaîne d’outils IA nécessite l’activation de l’émetteur OIDC.

  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
    

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 est en cours d'exécution à l'aide de la commande kubectl get :

    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 Falcon 7B-instruct à partir du référentiel de modèles KAITO à l’aide de 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 les modifications des ressources en direct dans votre espace de travail, notez que la préparation de la machine peut prendre jusqu'à 10 minutes et celle de l'espace de travail jusqu'à 20 minutes.

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

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Exécutez le modèle Falcon 7B-instruct avec un exemple d’entrée de votre choix à l’aide de la commande curl suivante :

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

Nettoyer les ressources

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

  • Supprimez le groupe de ressources et ses ressources associées à l’aide de la commande groupe az supprimer.

    az group delete --name "${AZURE_RESOURCE_GROUP}" --yes --no-wait
    

Étapes suivantes

Pour plus d’options de modèles d’inférence, consultez le référentiel GitHub KAITO.