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.
- Le module complémentaire gestionnaire de chaîne d’outils IA prend en charge KAITO version v0.0.1.0 actuellement. Prenez ceci en compte lorsque vous choisissez un modèle à partir du référentiel de modèles KAITO.
Prérequis
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Si vous disposez de plusieurs abonnements Azure, assurez-vous de sélectionner le bon abonnement dans lequel les ressources seront créées et facturées à l’aide de la commande ensemble de comptes az.
Remarque
L’abonnement que vous utilisez doit avoir un quota de machine virtuelle GPU afin de déployer le modèle que vous choisissez.
Azure CLI version 2.47.0 ou ultérieure installé et configuré. Exécutez
az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.Le client de ligne de commande Kubernetes, kubectl, installé et configuré. Pour plus d’informations, consultez Install kubectl.
Inscrire l’indicateur de fonctionnalité de module complémentaire de la chaîne d’outils IA.
Installer l’extension Azure CLI en préversion
Installez l’extension azure CLI en préversion à l’aide de la commande az extension ajouter .
az extension add --name aks-preview
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
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.
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é
Créez un groupe de ressources Azure en utilisant la commande az group create.
az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
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.
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
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}
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ôleurgpu-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
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
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
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
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.
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}')
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 de calcul Azure supplémentaires inutiles.
Supprimez l’espace de travail KAITO et ses ressources associées en tirant parti de la commande
kubectl delete workspace
.kubectl delete workspace workspace-falcon-7b-instruct
Étapes suivantes
Pour découvrir d’autres options de modèle de déploiement, consultez le référentiel GitHub KAITO en amont.
- Découvrir Opérations d’apprentissage automatique (MLOps) pour des flux de travail IA et d’apprentissage automatique sur AKS
- Découvrir plus d’informations sur les meilleures pratiques MLOps pour vos pipelines d’IA sur AKS
- Découvrir comment déployer des charges de travail GPU sur AKS
Azure Kubernetes Service