Déployer l’extension Azure Machine Learning sur un cluster AKS ou Arc Kubernetes

Pour permettre à votre cluster AKS ou Arc Kubernetes d’exécuter des travaux d’entraînement ou des charges de travail d’inférence, vous devez d’abord déployer l’extension Azure Machine Learning sur un cluster AKS ou Arc Kubernetes. L’extension Azure Machine Learning repose sur l’extension de cluster pour AKS et l’extension de cluster ou Arc Kubernetes. Vous pouvez facilement gérer son cycle de vie avec l’interface Azure CLI k8s-extension.

Cet article porte sur les points suivants :

  • Prérequis
  • Limites
  • Vérifiez les paramètres de configuration de l'extension Azure Machine Learning
  • Scénarios de déploiement de l'extension Azure Machine Learning
  • Vérifiez le déploiement de l'extension Azure Machine Learning
  • Vérifiez les composants de l'extension Azure Machine Learning
  • Gérer l’extension Azure Machine Learning

Prérequis

Limites

  • L’utilisation d’un principal de service avec AKSn’est pas prise en charge par Azure Machine Learning. Le cluster AKS doit utiliser une identité managée à la place. L’identité managée affectée par le système et l’identité managée affectée par l’utilisateur sont toutes deux prises en charge. Pour plus d’informations, consultez Utiliser une identité managée dans Azure Kubernetes Service.
    • Quand le principal de service utilisé par votre cluster AKS est converti pour utiliser l’identité managée, avant d’installer l’extension, tous les pools de nœuds doivent être supprimés et recréés, et non pas mis à jour directement.
  • La désactivation des comptes locaux pour AKS n’est pas prise en charge par Azure Machine Learning. Quand le cluster AKS est déployé, des comptes locaux sont activés par défaut.
  • Si votre cluster AKS possède une plage d’adresses IP autorisées a accéder au serveur d’API, activez les plages d’adresses IP du plan de contrôle Azure Machine Learning pour le cluster AKS. Le plan de contrôle Azure Machine Learning est déployé dans des régions jumelées. Le déploiement des pods de Machine Learning n’est pas possible sans accès au serveur d’API. Utilisez les plages d’adresses IP des deux régions jumelées lors de l’activation des plages d’adresses IP dans un cluster AKS.
  • Azure Machine Learning ne prend pas en charge l’attachement d’un cluster AKS entre abonnements. Si vous avez un cluster AKS dans un autre abonnement, vous devez d’abord le connecter à Azure Arc et le spécifier dans le même abonnement que votre espace de travail Azure Machine Learning.
  • Azure Machine Learning ne garantit pas la prise en charge de toutes les fonctionnalités de la phase de préversion dans AKS. Par exemple, l’identité de pod Microsoft Entra n’est pas prise en charge.
  • Si vous avez suivi les étapes du document Azure Machine Learning AKS v1 pour créer ou joindre votre cluster AKS en tant que cluster d’inférence, utilisez le lien suivant pour nettoyer les ressources associées à azureml-fe héritées avant de passer à l’étape suivante.

Passer en revue les paramètres de configuration de l’extension Azure Machine Learning

Vous pouvez utiliser la commande de l’interface CLI Azure Machine Learning k8s-extension create pour déployer l’extension Azure Machine Learning. L’interface CLI k8s-extension create vous permet de spécifier un ensemble de paramètres de configuration au format key=value à l’aide du paramètre --config ou --config-protected. Voici la liste des paramètres de configuration disponibles à spécifier durant le déploiement de l’extension Azure Machine Learning.

Nom de la clé du paramètre de configuration Description Entrainement Inférence Apprentissage et inférence
enableTraining True ou False, par défaut False. Doit avoir la valeur True pour le déploiement de l’extension Azure Machine Learning avec prise en charge de l’entraînement de modèle Machine Learning et du scoring en lot. N/A
enableInference True ou False, par défaut False. Doit avoir la valeur True pour le déploiement de l’extension Azure Machine Learning avec prise en charge de l’inférence Machine Learning. N/A
allowInsecureConnections True ou False, par défaut False. Peut être défini sur True pour utiliser des points de terminaison HTTP d’inférence à des fins de développement ou de test. N/A Facultatif Facultatif
inferenceRouterServiceType loadBalancer, nodePort ou clusterIP. Obligatoire si enableInference=True. N/A
internalLoadBalancerProvider Cette configuration s’applique uniquement au cluster Azure Kubernetes Service (AKS) maintenant. Définissez-le à azure pour permettre au routeur d’inférence d’utiliser un équilibreur de charge interne. N/A Facultatif Facultatif
sslSecret Nom du secret Kubernetes dans l’espace de noms azureml. Cette configuration permet de stocker cert.pem (certificat TLS/SSL au format PEM) et key.pem (clé TLS/SSL au format PEM), qui sont nécessaires à la prise en charge des points de terminaison HTTPS d’inférence quand allowInsecureConnections a la valeur False. Pour obtenir un exemple de définition YAML de sslSecret, consultez Configurer sslSecret. Utilisez cette configuration ou une combinaison des paramètres de configuration protégée sslCertPemFile et sslKeyPemFile. N/A Facultatif Facultatif
sslCname Un enregistrement CNAME TLS/SSL est utilisé par le point de terminaison HTTPS d’inférence. Obligatoire si allowInsecureConnections=False N/A Facultatif Facultatif
inferenceRouterHA True ou False, par défaut True. Par défaut, l’extension Azure Machine Learning déploie trois réplicas de routeur d’inférence pour la haute disponibilité, ce qui nécessite au moins trois nœuds Worker dans un cluster. Définissez sur False si votre cluster a moins de trois nœuds Worker, dans ce cas, un seul service de routeur d’inférence est déployé. N/A Facultatif Facultatif
nodeSelector Par défaut, les ressources Kubernetes et vos charges de travail de machine learning sont déployées de manière aléatoire sur un ou plusieurs nœuds du cluster, tandis que les ressources DaemonSet sont déployées sur TOUS les nœuds. Si vous souhaitez restreindre le déploiement de l’extension et vos charges de travail d’entraînement/inférence à des nœuds spécifiques portant l’étiquette key1=value1 et key2=value2, utilisez nodeSelector.key1=value1 et nodeSelector.key2=value2 respectivement. Facultatif Facultatif Facultatif
installNvidiaDevicePlugin True ou False, par défaut False. Le plug-in d’appareil NVIDIA est requis pour les charges de travail ML sur le matériel GPU NVIDIA. Par défaut, le déploiement de l’extension Azure Machine Learning n’installe pas le plug-in d’appareil NVIDIA, que le cluster Kubernetes dispose de matériel GPU ou non. L’utilisateur peut spécifier ce paramètre sur True pour l’installer, mais veillez à remplir les conditions préalables. Facultatif Facultatif Facultatif
installPromOp True ou False, par défaut True. L’extension Azure Machine Learning a besoin de l’opérateur Prometheus pour gérer Prometheus. À définir sur False pour réutiliser l’opérateur Prometheus existant. Pour plus d’informations sur la réutilisation de l’opérateur Prometheus existant, consultez Réutilisation de l’opérateur Prometheus. Facultatif Facultatif Facultatif
installVolcano True ou False, par défaut True. L’extension Azure Machine Learning a besoin d’un planificateur volcano pour planifier le travail. Affectez la valeur False pour réutiliser le planificateur volcano existant. Pour plus d’informations sur la réutilisation du planificateur Volcano existant, consultez Réutilisation du planificateur Volcano. Facultatif N/A Facultatif
installDcgmExporter True ou False, par défaut False. Dcgm-exporter peut exposer des métriques GPU pour les charges de travail Azure Machine Learning, qui peuvent être monitorées dans le portail Azure. Définissez installDcgmExporter sur True pour installer dcgm-exporter. Toutefois, si vous souhaitez utiliser votre propre dcgm-exporter, consultez Exportateur DCGM. Facultatif Facultatif Facultatif
Nom de la clé du paramètre protégé de configuration Description Entrainement Inférence Apprentissage et inférence
sslCertPemFile, sslKeyPemFile Chemin du certificat TLS/SSL et du fichier de clé (encodé en PEM) nécessaire pour le déploiement de l’extension Azure Machine Learning avec prise en charge du point de terminaison HTTPS pour l’inférence, quand allowInsecureConnections a la valeur False. Remarque Le fichier PEM avec phrase secrète protégée n’est pas pris en charge. N/A Facultatif Facultatif

Comme vous pouvez le voir dans la table des paramètres de configuration, les combinaisons des différents paramètres de configuration vous permettent de déployer l’extension Azure Machine Learning pour différents scénarios de charge de travail ML :

  • Pour la charge de travail d’entraînement et d’inférence par lots, spécifiez enableTraining=True
  • Pour la charge de travail d’inférence uniquement, spécifiez enableInference=True
  • Pour toutes sortes de charges de travail ML, spécifiez à la fois enableTraining=True et enableInference=True

Si vous envisagez de déployer l’extension Azure Machine Learning pour la charge de travail d’inférence en temps réel et que vous voulez spécifier enableInference=True, portez votre attention sur les paramètres de configuration suivants liés à la charge de travail d’inférence en temps réel :

  • Le service du routeur azureml-fe est nécessaire pour la prise en charge de l’inférence en temps réel et vous devez spécifier le paramètre de configuration inferenceRouterServiceType pour azureml-fe. azureml-fe peut être déployé avec l’un des inferenceRouterServiceType suivants :
    • Tapez LoadBalancer. Expose azureml-fe en externe à l’aide de l’équilibreur de charge d’un fournisseur de cloud. Pour spécifier cette valeur, vérifiez que votre cluster prend en charge le provisionnement d’équilibreur de charge. Notez que la plupart des clusters Kubernetes locaux peuvent ne pas prendre en charge un équilibreur de charge externe.
    • Tapez NodePort. Expose azureml-fe sur l’adresse IP de chaque nœud à un port statique. Vous serez en mesure de contacter azureml-fe, à partir de l’extérieur du cluster, en demandant <NodeIP>:<NodePort>. L’utilisation de NodePort vous permet aussi de configurer votre propre solution d’équilibrage de charge et l’arrêt TLS/SSL pour azureml-fe.
    • Tapez ClusterIP. Expose azureml-fe sur une adresse IP interne de cluster, et rend azureml-fe accessible uniquement à partir du cluster. Pour que azureml-fe puisse traiter les requêtes d’inférence provenant de l’extérieur du cluster, vous devez configurer votre propre solution d’équilibrage de charge et l’arrêt TLS/SSL pour azureml-fe.
  • Pour garantir la haute disponibilité du service de routage azureml-fe, le déploiement de l’extension Azure Machine Learning crée par défaut trois réplicas de azureml-fe pour les clusters qui ont trois nœuds ou plus. Si votre cluster a moins de trois nœuds, définissez inferenceRouterHA=False.
  • Vous pouvez également utiliser HTTPS pour restreindre l’accès aux points de terminaison de modèle et sécuriser les données envoyées par les clients. À cet effet, vous devez spécifier le paramètre de configuration sslSecret ou une combinaison des paramètres protégés de configuration sslKeyPemFile et sslCertPemFile.
  • Par défaut, le déploiement de l’extension Azure Machine Learning attend des paramètres de configuration pour la prise en charge de HTTPS. À des fins de développement ou de test, la prise en charge HTTP est facilement assurée par le biais du paramètre de configuration allowInsecureConnections=True.

Déploiement de l’extension Azure Machine Learning - Exemples CLI et portail Azure

Pour déployer l’extension Azure Machine Learning avec CLI, utilisez la commande az k8s-extension create en passant des valeurs pour les paramètres obligatoires.

Nous indiquons quatre scénarios de déploiement d’extension standard à des fins de référence. Pour déployer l’extension pour votre utilisation en production, lisez attentivement la liste complète des paramètres de configuration.

  • Utiliser un cluster AKS dans Azure pour une preuve de concept rapide permettant d’exécuter tout type de charge de travail ML, c.-à-d. d’exécuter des travaux d’entraînement ou de déployer des modèles en tant que points de terminaison en ligne/en lot

    Pour le déploiement de l’extension Azure Machine Learning sur un cluster AKS, veillez à spécifier la valeur managedClusters pour le paramètre --cluster-type. Exécutez la commande Azure CLI suivante pour déployer l’extension Azure Machine Learning :

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer allowInsecureConnections=True InferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Utiliser un cluster Arc Kubernetes en dehors d’Azure pour une preuve de concept rapide, afin d’exécuter des travaux d’entraînement uniquement

    Pour le déploiement de l’extension Azure Machine Learning sur le cluster Arc Kubernetes, spécifiez la valeur connectedClusters pour le paramètre --cluster-type. Exécutez la commande Azure CLI suivante pour déployer l’extension Azure Machine Learning :

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Activer un cluster AKS dans Azure pour la formation de production et la charge de travail d’inférence Pour le déploiement de l’extension Azure Machine Learning sur AKS, veillez à spécifier la valeur managedClusters pour le paramètre --cluster-type. En partant du principe que votre cluster comporte plus de trois nœuds et que vous utilisez un équilibreur de charge de travail public Azure et HTTPS pour la prise en charge de la charge de travail d’inférence. Exécutez la commande Azure CLI suivante pour déployer l’extension Azure Machine Learning :

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Activer un cluster Arc Kubernetes n’importe où pour la formation de production et la charge de travail d’inférence avec les GPU NVIDIA

    Pour le déploiement de l’extension Azure Machine Learning sur un cluster Arc Kubernetes, veillez à spécifier la valeur connectedClusters pour le paramètre --cluster-type. En partant du principe que votre cluster comporte plus de trois nœuds et que vous utilisez un type de service NodePort et HTTPS pour la prise en charge de la charge de travail d’inférence, exécutez la commande Azure CLI suivante pour déployer l’extension Azure Machine Learning :

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=NodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Vérifier le déploiement de l’extension Azure Machine Learning

  1. Exécutez la commande CLI suivante pour vérifier les détails de l’extension Azure Machine Learning :

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. Dans la réponse, recherchez "name" et "provisioningState": "Succeeded". Notez que la réponse affichée peut être "provisioningState": "Pending" pendant les premières minutes.

  3. Si provisioningState indique Succeeded, exécutez la commande suivante sur votre machine en faisant pointer le fichier kubeconfig sur votre cluster pour vérifier que tous les pods situés sous l’espace de noms "azureml" se trouvent à l’état « En cours d’exécution » :

     kubectl get pods -n azureml
    

Passer en revue le composant d’extension Azure Machine Learning

Une fois le déploiement de l’extension Azure Machine Learning terminé, vous pouvez utiliser kubectl get deployments -n azureml pour voir la liste des ressources créées dans le cluster. Elle se compose généralement d’un sous-ensemble des ressources suivantes par paramètre de configuration spécifié.

Nom de la ressource Type de ressource Entrainement Inférence Apprentissage et inférence Description Communication avec le cloud
relayserver Déploiement Kubernetes relayserver est créé uniquement pour le cluster Kubernetes avec Arc, et pas dans le cluster AKS. relayserver et Azure Relay fonctionnent ensemble pour communiquer avec les services cloud. Recevoir la requête de création de travail, déploiement de modèle à partir du service cloud ; synchroniser l’état du travail avec le service cloud.
passerelle Déploiement Kubernetes Passerelle sert à communiquer et à envoyer les données dans les deux sens. Envoyer les informations sur les nœuds et la ressource de cluster aux services cloud.
aml-operator Déploiement Kubernetes N/A Gérer le cycle de vie des travaux d’apprentissage. Échange de jetons avec le service de jeton cloud pour l’authentification et l’autorisation d’Azure Container Registry.
metrics-controller-manager Déploiement Kubernetes Gérer la configuration pour Prometheus. N/A
{EXTENSION-NAME}-kube-state-metrics Déploiement Kubernetes Exporter les métriques relatives au cluster vers Prometheus. N/A
{EXTENSION-NAME}-prometheus-operator Déploiement Kubernetes Facultatif Facultatif Facultatif Fournir un déploiement et une gestion natifs Kubernetes de Prometheus et des composants de surveillance associés. N/A
amlarc-identity-controller Déploiement Kubernetes N/A Demander et renouveler le jeton Blob Azure/Azure Container Registry par le biais d’une identité managée. Échange de jetons avec le service de jeton cloud pour l’authentification et l’autorisation d’Azure Container Registry et Blob Azure utilisés par le déploiement de modèle/inférence.
amlarc-identity-proxy Déploiement Kubernetes N/A Demander et renouveler le jeton Blob Azure/Azure Container Registry par le biais d’une identité managée. Échange de jetons avec le service de jeton cloud pour l’authentification et l’autorisation d’Azure Container Registry et Blob Azure utilisés par le déploiement de modèle/inférence.
azureml-fe-v2 Déploiement Kubernetes N/A Composant frontal qui achemine les demandes d’inférence entrantes vers les services déployés. Envoyer les journaux de service à Blob Azure.
inference-operator-controller-manager Déploiement Kubernetes N/A Gérer le cycle de vie des points de terminaison d’inférence. N/A
volcano-admission Déploiement Kubernetes Facultatif N/A Facultatif Webhook d’admission volcano. N/A
volcano-controllers Déploiement Kubernetes Facultatif N/A Facultatif Gérer le cycle de vie des pods de travaux d’entraînement Azure Machine Learning. N/A
volcano-scheduler Déploiement Kubernetes Facultatif N/A Facultatif Sert à effectuer la planification des travaux à l’intérieur du cluster. N/A
fluent-bit Daemonset Kubernetes Collecter le journal système des composants. Charger le journal système des composants vers le cloud.
{EXTENSION-NAME}-dcgm-exporter Daemonset Kubernetes Facultatif Facultatif Facultatif dcgm-exporter expose les métriques GPU pour Prometheus. N/A
nvidia-device-plugin-daemonset Daemonset Kubernetes Facultatif Facultatif Facultatif nvidia-device-plug-in-daemonset expose les GPU sur chaque nœud de votre cluster N/A
prometheus-prom-prometheus Statefulset Kubernetes Collecter et envoyer les métriques de travail vers le cloud. Envoyer des métriques de travail telles que l’utilisation du processeur/gpu/mémoire vers le cloud.

Important

  • La ressource Azure Relay dépend du même groupe de ressources que la ressource de cluster Arc. Elle sert à communiquer avec le cluster Kubernetes. Si vous la modifiez, cela interrompra les cibles de calcul attachées.
  • Par défaut, les ressources de déploiement Kubernetes sont déployées de manière aléatoire vers un ou plusieurs nœuds du cluster, et les ressources daemonset sont déployées vers TOUS les nœuds. Si vous souhaitez limiter le déploiement de l’extension à des nœuds spécifiques, utilisez le paramètre de configuration nodeSelector décrit dans Tableau des paramètres de configuration.

Notes

  • {EXTENSION-NAME} : nom de l’extension spécifié avec la commande CLI az k8s-extension create --name.

Gérer l’extension Azure Machine Learning

Mettez à jour, listez, affichez et supprimez une extension Azure Machine Learning.

Étapes suivantes