Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour permettre à votre cluster Azure Kubernetes Service (AKS) ou à votre cluster Kubernetes compatible avec Azure Arc d’exécuter des travaux d’entraînement ou des charges de travail d’inférence, déployez d’abord l’extension Azure Machine Learning. L’extension Azure Machine Learning est une extension de cluster standard pour AKS et une extension de cluster pour Kubernetes avec Azure Arc. Vous pouvez gérer son cycle de vie à l’aide de Azure CLI k8s-extension.
Dans cet article, vous apprendrez :
- Conditions préalables
- Limites
- Passer en revue les paramètres de configuration de l’extension Azure Machine Learning
- Scénarios de déploiement de l’extension Azure Machine Learning
- Vérifier le déploiement de l’extension Azure Machine Learning
- Passer en revue les composants de l’extension Azure Machine Learning
- Gérer l’extension Azure Machine Learning
Conditions préalables
- Un cluster AKS exécuté dans Azure. Si vous n’avez pas déjà utilisé d’extensions de cluster, vous devez inscrire le fournisseur de services KubernetesConfiguration.
- Ou un cluster Kubernetes compatible Azure Arc qui est opérationnel. Suivez les instructions dans Connecter un cluster Kubernetes existant à Azure Arc.
- Si le cluster est un cluster de service Azure Red Hat OpenShift (ARO) ou un cluster OpenShift Container Platform (OCP), vous devez respecter les autres étapes préalables décrites dans la référence pour la configuration de l’article sur le 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.
- Un cluster s’exécutant derrière un serveur proxy sortant ou un pare-feu a besoin de configurations réseau supplémentaires.
- Installez ou mettez à niveau Azure CLI vers la version 2.51.0 ou ultérieure.
- Installez ou mettez à niveau l’extension Azure CLI
k8s-extensionvers la version 1.2.3 ou supérieure.
Limites
- Azure Machine Learning ne prend pas en chargel’utilisation d’un principal de service avec AKS. 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.
- Lorsque vous faites passer votre cluster AKS de l’utilisation d’un principal de service à l’utilisation d’une identité managée, vous devez supprimer et recréer tous les pools de nœuds avant d’installer l’extension. Vous ne pouvez pas mettre directement à jour les pools de nœuds.
- Azure Machine Learning ne prend pas en chargela désactivation des comptes locaux pour AKS. Lorsque vous déployez le cluster AKS, les comptes locaux sont activés par défaut.
- Si votre cluster AKS dispose d’une plage d’adresses IP autorisé à accéder au serveur d’API, vous devez activer 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 disposez d’un cluster AKS dans un autre abonnement, vous devez d’abord le connecter à Azure Arc et 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é gérée par pod Microsoft Entra (obsolète) n’est pas prise en charge. Utilisez ID de charge de travail Microsoft Entra à la place.
- Si vous avez suivi les étapes décrites dans le document Azure Machine Learning AKS v1 pour créer ou rattacher votre cluster AKS comme cluster d’inférence, utilisez le lien suivant pour nettoyer les ressources héritées associées à azureml-fe avant de passer à l’étape suivante.
- L'extension Azure Machine Learning n'est actuellement pas prise en charge sur les architectures ARM64. Utilisez des pools de nœuds avec l’architecture x86_64 (
amd64) pour l’extension. Un pool de nœuds AKS ne peut pas combineramd64et les références SKU de machine virtuelle ARM64. Choisissez donc les références SKU de machine virtuelle du pool de nœuds avec l’architecture prise en charge et ne combinez pas d’architectures dans le même pool de nœuds. Si votre cluster dispose de pools de nœuds mixtes, utilisez cette optionnodeSelectorpour cibler l’extension et vos charges de travail sur des nœuds avec l’architecture prise en charge.
Passer en revue les paramètres de configuration de l’extension Azure Machine Learning
Utilisez la commande Azure CLI az k8s-extension create pour déployer l’extension Azure Machine Learning. La commande az k8s-extension create accepte des paramètres de configuration sous forme de paires key=value séparées par des espaces via le paramètre --config ou --config-protected. Le tableau suivant répertorie les paramètres de configuration disponibles que vous pouvez spécifier pendant le déploiement.
| Nom de la clé du paramètre de configuration | Descriptif | Formations | Inférence | Apprentissage et inférence |
|---|---|---|---|---|
enableTraining |
True ou False, par défaut False.
Doit être défini sur True pour le déploiement de l’extension Azure Machine Learning avec prise en charge de l’apprentissage de modèle Machine Learning et du scoring en lot. |
✓ | N/A | ✓ |
enableInference |
True ou False, par défaut False.
Doit être défini sur 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 | Descriptif | Formations | 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=TrueetenableInference=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-feest nécessaire pour la prise en charge de l’inférence en temps réel et vous devez spécifier le paramètre de configurationinferenceRouterServiceTypepourazureml-fe. Le routeur est déployé en tant que déploiement Kubernetesazureml-fe-v2, que vous voyez répertorié dans les composants d’extension.azureml-fepeut être déployé avec l’un desinferenceRouterServiceTypesuivants :- Tapez
loadBalancer. Exposeazureml-feen 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-fesur l’adresse IP de chaque nœud à un port statique. Vous pouvez contacterazureml-fe, depuis l’extérieur du cluster, en demandant<NodeIP>:<NodePort>. L’utilisation denodePortvous permet aussi de configurer votre propre solution d’équilibrage de charge et l’arrêt TLS/SSL pourazureml-fe. Pour plus d’informations sur la façon de configurer votre propre ingress, consultez Intégrer d’autres contrôleurs d’ingress à l’extension Azure Machine Learning via HTTP ou HTTPS. - Tapez
clusterIP. Exposeazureml-fesur une adresse IP interne de cluster, et rendazureml-feaccessible uniquement à partir du cluster. Pour queazureml-fepuisse 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. Pour plus d’informations sur la façon de configurer votre propre ingress, consultez Intégrer d’autres contrôleurs d’ingress à l’extension Azure Machine Learning via HTTP ou HTTPS.
- 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-fepour 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. À cette fin, vous devez spécifier soit le paramètre de configuration
sslSecret, soit la combinaison des paramètres de configuration protégéssslKeyPemFileetsslCertPemFile. - 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 à l’aide de l’interface CLI, utilisez la commande az k8s-extension create et fournissez des valeurs pour les paramètres obligatoires.
La liste suivante décrit quatre scénarios de déploiement d’extension standard. Pour déployer l’extension pour votre utilisation de production, lisez attentivement la liste complète des paramètres de configuration.
Utiliser un cluster AKS dans Azure pour une preuve de concept rapide pour exécuter toutes sortes de charges de travail ML, par exemple, pour exécuter des travaux d’apprentissage ou pour déployer des modèles en tant que points de terminaison en ligne/batch
Pour le déploiement de l’extension Azure Machine Learning sur un cluster AKS, spécifiez la valeur
managedClusterspour 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 clusterUtiliser un cluster Kubernetes avec Azure Arc en dehors d’Azure pour une preuve de concept rapide, pour exécuter des travaux de formation uniquement
Pour le déploiement de l’extension Azure Machine Learning sur un cluster Kubernetes compatible Azure Arc, spécifiez la valeur
connectedClusterspour 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 clusterActiver un cluster AKS dans Azure pour les charges de travail d’entraînement et d’inférence en production Pour le déploiement de l’extension Azure Machine Learning sur AKS, spécifiez la valeur
managedClusterspour 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 clusterActiver un cluster Kubernetes avec Azure Arc n’importe où pour la charge de travail d’apprentissage et d’inférence de production à l’aide de GPU NVIDIA
Pour le déploiement de l’extension Azure Machine Learning sur un cluster Kubernetes compatible Azure Arc, spécifiez la valeur
connectedClusterspour 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 applicable pour vérifier les détails de l’extension Azure Machine Learning :
AKS
az k8s-extension show --name <extension-name> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <resource-group>Kubernetes compatible avec Azure Arc
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". Il se peut que"provisioningState": "Pending"s’affiche pendant les premières minutes.Si provisioningState affiche Succeeded, exécutez la commande suivante sur votre ordinateur avec le fichier kubeconfig pointant vers votre cluster pour vérifier que tous les pods de l’espace de noms
azuremlsont à l’étatRunning:kubectl get pods -n azureml
Passer en revue le composant d’extension Azure Machine Learning
Une fois le déploiement d’extension Azure Machine Learning terminé, utilisez kubectl get deployments -n azureml pour afficher la liste des ressources créées dans le cluster. La liste se compose généralement d’un sous-ensemble des ressources suivantes, en fonction des paramètres de configuration que vous spécifiez.
| Nom de la ressource | Type de ressource | Formations | Inférence | Apprentissage et inférence | Descriptif | Communication avec le cloud |
|---|---|---|---|---|---|---|
| serveur de relais | Déploiement Kubernetes | ✓ | ✓ | ✓ | Le déploiement crée le serveur relais uniquement pour les clusters Kubernetes avec Azure Arc activé, et pas dans les clusters 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 |
| contrôleurs de volcans | 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 se trouve dans le même groupe de ressources que la ressource de cluster Arc. Il est utilisé pour communiquer avec le cluster Kubernetes. La modification de celle-ci interrompt les cibles de calcul attachées.
- Par défaut, les ressources de déploiement sont déployées de manière aléatoire sur un ou plusieurs nœuds du cluster, et les ressources daemonset sont déployées sur tous les nœuds. Pour restreindre le déploiement d’extension à des nœuds spécifiques, utilisez le
nodeSelectorparamètre de configuration décrit dans la table des paramètres de configuration.
Remarque
-
{EXTENSION-NAME} : est le nom de l’extension que vous spécifiez à l’aide de la
az k8s-extension create --namecommande CLI.
Gérer l’extension Azure Machine Learning
Mettez à jour, listez, affichez et supprimez une extension d’Azure Machine Learning.
- Pour les clusters AKS sans Azure Arc connectés, consultez Deploy and manage cluster extensions.
- Pour obtenir kubernetes compatibles avec Azure Arc, consultez Deploy and manage Azure Arc-enabled Kubernetes cluster extensions.