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
- Un cluster AKS exécuté dans Azure. Si vous n’avez pas encore utilisé d’extensions de cluster, vous devez inscrire le fournisseur de services KubernetesConfiguration.
- Ou un cluster Arc Kubernetes est opérationnel. Suivez les instructions dans Connecter un cluster Kubernetes existant à Azure Arc.
- Si le cluster est un cluster de service ARO (Azure RedHat OpenShift) ou un cluster OCP (OpenShift Container Platform), vous devez suivre les autres étapes prérequises, comme indiqué dans l’article Informations de référence sur la configuration d’un cluster Kubernetes.
- À des fins de production, le cluster Kubernetes doit disposer d’au moins 4 cœurs de processeur virtuel et 14 Go de mémoire. Pour plus d’informations sur les détails des ressources et les recommandations relatives à la taille du cluster, consultez Planification des ressources recommandée.
- Le cluster qui s’exécute derrière un serveur proxy de trafic sortant ou un pare-feu nécessite des configurations réseau supplémentaires.
- Installez ou mettez à niveau Azure CLI vers la version 2.24.0 ou supérieure.
- Installez ou mettez à niveau l’extension Azure CLI
k8s-extension
vers la version 1.2.3 ou supérieure.
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
etenableInference=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 configurationinferenceRouterServiceType
pourazureml-fe
.azureml-fe
peut être déployé avec l’un desinferenceRouterServiceType
suivants :- Tapez
LoadBalancer
. Exposeazureml-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
. Exposeazureml-fe
sur l’adresse IP de chaque nœud à un port statique. Vous serez en mesure de contacterazureml-fe
, à partir de l’extérieur du cluster, en demandant<NodeIP>:<NodePort>
. L’utilisation deNodePort
vous permet aussi de configurer votre propre solution d’équilibrage de charge et l’arrêt TLS/SSL pourazureml-fe
. - Tapez
ClusterIP
. Exposeazureml-fe
sur une adresse IP interne de cluster, et rendazureml-fe
accessible uniquement à partir du cluster. Pour queazureml-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 pourazureml-fe
.
- Tapez
- 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 deazureml-fe
pour les clusters qui ont trois nœuds ou plus. Si votre cluster a moins de trois nœuds, définissezinferenceRouterHA=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 configurationsslKeyPemFile
etsslCertPemFile
. - 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
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>
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.
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.
- Pour un cluster AKS sans connexion à Azure Arc, consultez Déployer et gérer des extensions de cluster.
- Pour Kubernetes avec Azure Arc, voir Déployer et gérer des extensions de cluster Kubernetes avec Azure Arc.