Créer un cluster de calcul Azure Machine Learning

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)

Cet article explique comment créer et gérer un cluster de calcul dans votre espace de travail Azure Machine Learning.

Vous pouvez utiliser un cluster de calcul Azure Machine Learning pour distribuer un processus d’entraînement ou d’inférence en lots sur un cluster de nœuds de calcul de processeur ou de GPU dans le cloud. Pour plus d’informations sur les tailles de machine virtuelle qui incluent des GPU, consultez Tailles de machine virtuelle à GPU optimisé.

Découvrez comment :

  • Créez un cluster de calcul.
  • Réduire le coût de votre cluster de calcul avec des machines virtuelles de basse priorité.
  • Configurer une identité managée pour le cluster.

Remarque

Au lieu de créer un cluster de calcul, utilisez le calcul serverless pour décharger la gestion du cycle de vie du calcul dans Azure Machine Learning.

Prérequis

Sélectionnez l’onglet approprié pour le reste des prérequis en fonction de votre méthode préférée de création du cluster de calcul.

  • Si vous n’exécutez pas votre code sur une instance de calcul, installez le kit SDK Python Azure Machine Learning. Ce kit SDK est déjà installé pour vous sur une instance de calcul.

  • Connectez-vous à l’espace de travail via votre script Python :

    Exécutez ce code pour vous connecter à votre espace de travail Azure Machine Learning.

    Remplacez votre ID d’abonnement, le nom du groupe de ressources et le nom de l’espace de travail dans le code suivant. Pour rechercher ces valeurs :

    1. Connectez-vous à Azure Machine Learning Studio.
    2. Ouvrez l’espace de travail que vous souhaitez utiliser.
    3. Sélectionnez le nom de votre espace de travail dans la barre d’outils Azure Machine Learning studio en haut à droite.
    4. Copiez la valeur de l’espace de travail, du groupe de ressources et de l’ID d’abonnement dans le code.

    S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-mlv2 (préversion)

    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client est un gestionnaire de l’espace de travail, qui vous permet de gérer d’autres ressources et travaux.

Qu’est-ce qu’un cluster de calcul ?

Le cluster de calcul Azure Machine Learning est une infrastructure de capacité de calcul managée qui vous permet de créer facilement une capacité de calcul à un ou plusieurs nœuds. Le cluster de calcul est une ressource qui peut être partagée avec d’autres utilisateurs dans votre espace de travail. La cible de calcul monte en puissance automatiquement quand un travail est soumis, et peut être placée dans un réseau virtuel Azure. Le cluster de calcul ne prend en charge aucun déploiement d’adresse IP publique ou dans un réseau virtuel. La cible de calcul s’exécute dans un environnement conteneurisé et empaquète les dépendances de votre modèle dans un conteneur Docker.

Les clusters de calcul peuvent exécuter des tâches en toute sécurité dans un réseau virtuel managé ou un réseau virtuel Azure, sans que les entreprises aient à ouvrir des ports SSH. Le travail s’exécute dans un environnement conteneurisé et empaquette les dépendances de votre modèle dans un conteneur Docker.

Limites

  • Les clusters de calcul peuvent être créés dans une région différente de celle de votre espace de travail. Cette fonctionnalité n’est disponible que pour les clusters de calcul et pas les instances de calcul.

    Avertissement

    Quand vous utilisez un cluster de calcul dans une autre région que celle de votre espace de travail ou de vos magasins de données, vous pouvez constater une augmentation du temps de réponse du réseau et des coûts de transfert de données. La latence et les coûts peuvent survenir lors de la création du cluster et lors de l’exécution de travaux sur celui-ci.

  • Capacité de calcul Azure Machine Learning comporte des limites par défaut, par exemple le nombre de cœurs qui peuvent être alloués. Pour plus d’informations, consultez Gérer et demander des quotas pour les ressources Azure.

  • Azure vous permet de placer des verrous sur les ressources, afin que celles-ci ne puissent pas être supprimées ou restent en lecture seule. N’appliquez pas de verrous aux ressources du groupe de ressources qui contient votre espace de travail. L’application d’un verrou au groupe de ressources contenant votre espace de travail empêche les opérations de mise à l’échelle pour les clusters de calcul Azure Machine Learning. Pour plus d’informations, consultez Verrouiller les ressources pour empêcher les modifications inattendues.

Créer

Durée estimée : environ cinq minutes.

Remarque

Si vous utilisez le calcul serverless, vous n’avez pas besoin de créer un cluster de calcul.

Une Capacité de calcul Azure Machine Learning peut être réutilisée pour plusieurs exécutions. Le calcul peut être partagé avec d’autres utilisateurs dans l’espace de travail, et est conservé entre les exécutions. Ainsi, les nœuds font l’objet d’un scale-up ou d’un scale-down automatique en fonction du nombre d’exécutions soumises et du paramètre max_nodes défini sur votre cluster. Le paramètre min_nodes contrôle le nombre minimal de nœuds disponibles.

Le quota de cœurs dédiés par région par famille de machine virtuelle et le quota régional total, qui s’appliquent à la création d’un cluster de calcul, sont unifiés et partagés avec le quota d’instances de calcul d’entraînement Azure Machine Learning.

Important

Pour éviter des frais en l'absence de travail en cours d’exécution, définissez les nœuds minimaux sur 0. Ce paramètre permet à Azure Machine Learning de libérer les nœuds lorsqu’ils ne sont pas utilisés. Toute valeur supérieure à 0 conserve ce nombre de nœuds en cours d’exécution, même s’ils ne sont pas utilisés.

La capacité de calcul diminue en puissance, et passe automatiquement à zéro nœud quand elle n’est pas utilisée. Des machines virtuelles dédiées sont créées pour exécuter vos travaux en fonction des besoins.

Utilisez les exemples suivants pour créer un cluster de calcul :

Pour créer une ressource Capacité de calcul Azure Machine Learning persistante en Python, spécifiez les propriétés size et max_instances. Azure Machine Learning utilise ensuite des valeurs calculées par défaut pour les autres propriétés.

  • size : famille de machines virtuelles des nœuds créés par l’infrastructure Capacité de calcul Azure Machine Learning.
  • max_instances : nombre maximal de nœuds pour la mise à l’échelle automatique quand vous exécutez un travail sur l’infrastructure Capacité de calcul Azure Machine Learning.

S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-mlv2 (préversion)

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()

Vous pouvez aussi configurer plusieurs propriétés avancées lors de la création d’une capacité de calcul Azure Machine Learning. Ces propriétés vous permettent de créer un cluster persistant de taille fixe, ou au sein d’un réseau virtuel Azure existant dans votre abonnement. Pour plus de détails, voir la classe AmlCompute.

Avertissement

Quand vous définissez le paramètre location, s’il correspond à une autre région que celle de votre espace de travail ou de vos magasins de données, vous pouvez constater une augmentation du temps de réponse du réseau et des coûts de transfert de données. La latence et les coûts peuvent survenir lors de la création du cluster et lors de l’exécution de travaux sur celui-ci.

Réduire le coût de votre cluster de calcul avec des machines virtuelles de basse priorité

Vous pouvez également choisir d’utiliser des machines virtuelles de faible priorité pour exécuter une partie ou l’ensemble de vos charges de travail. Ces machines virtuelles n’ont pas de disponibilité garantie et peuvent être préemptées durant leur utilisation. Vous devez redémarrer une tâche anticipée.

L’utilisation de machines virtuelles basse priorité vous permet de profiter de la capacité inutilisée d’Azure pour un coût très avantageux. Dès qu’Azure a besoin de récupérer la capacité, l’infrastructure Azure supprime les machines virtuelles basse priorité Azure. C’est pourquoi la machine virtuelle basse priorité Azure est idéale pour les charges de travail qui peuvent s’accommoder d’interruptions. La capacité disponible dépend de divers facteurs, tels que la taille, la région, l’heure, etc. Lorsque vous déployez des machines virtuelles basse priorité Azur, Azure alloue les machines virtuelles si de la capacité est disponible. Sachez toutefois qu’il n’y a pas de contrat SLA pour ces machines virtuelles. Une machine virtuelle basse priorité Azure n’offre aucune garantie de haute disponibilité. Dès qu’Azure a besoin de récupérer la capacité, l’infrastructure Azure supprime les machines virtuelles basse priorité Azure.

Utilisez l’une des méthodes suivantes pour spécifier une machine virtuelle de faible priorité :

S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-mlv2 (préversion)

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

Supprimer

Bien que votre cluster de calcul fasse l’objet d’un scale-down à zéro nœud quand il n’est pas utilisé, les nœuds non approvisionnés contribuent à l’utilisation de votre quota. La suppression du cluster de calcul entraîne la suppression de la cible de calcul de votre espace de travail, et libère le quota.

S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-mlv2 (préversion)

Cette opération permet de supprimer le cluster de calcul de base, créé à partir de l’objet create_basic, évoqué plus haut dans cet article.

from azure.ai.ml.entities import AmlCompute

ml_client.compute.begin_delete(cluster_basic.name).wait()

Configurer une identité managée

Pour plus d’informations sur la configuration d’une identité managée avec votre cluster de calcul, consultez Configurer l’authentification entre Azure Machine Learning et d’autres services.

Résolution des problèmes

Il peut arriver que des utilisateurs ayant créé leur espace de travail Azure Machine Learning sur le portail Azure avant la disponibilité générale ne puissent pas créer de capacité AmlCompute dans cet espace de travail. Vous pouvez créer une demande de support auprès du service ou créer un espace de travail sur le Portail ou avec le Kit de développement logiciel (SDK) pour vous débloquer sans délai.

Important

Si votre instance ou vos clusters de calcul sont basés sur l’une de ces séries, recréez-les avec la taille d’une autre machine virtuelle.

Ces séries ont été mises hors service le 31 août 2023 :

Ces séries ont été mises hors service le 31 août 2024 :

Bloqué au niveau du redimensionnement

Si votre cluster Capacité de calcul Azure Machine Learning semble bloqué au niveau du redimensionnement (0 -> 0) pour l’état du nœud, les verrous de ressources Azure en sont peut-être la cause.

Azure vous permet de placer des verrous sur les ressources, afin qu’elles ne puissent pas être supprimées ou restent en lecture seule. Le verrouillage d’une ressource peut entraîner des résultats inattendus. Certaines opérations qui, en apparence, ne modifient pas la ressource nécessitent en réalité des actions qui sont bloquées par ce verrou.

Avec Azure Machine Learning, l’application d’un verrou de suppression au groupe de ressources pour votre espace de travail empêchera les opérations de mise à l’échelle pour les clusters de calcul Azure ML. Pour contourner ce problème, nous vous recommandons de supprimer le verrou du groupe de ressources et de l’appliquer à chaque élément du groupe.

Important

N’appliquez pas le verrou aux ressources suivantes :

Nom de la ressource Type de ressource
<GUID>-azurebatch-cloudservicenetworksecurityggroup Un groupe de sécurité réseau
<GUID>-azurebatch-cloudservicepublicip Adresse IP publique
<GUID>-azurebatch-cloudserviceloadbalancer Équilibrage de charge

Ces ressources sont utilisées pour communiquer avec le cluster de calcul et effectuer des opérations telles que la mise à l’échelle. La suppression du verrou sur ces ressources doit permettre la mise à l’échelle automatique de vos clusters de calcul.

Pour plus d’informations sur le verrouillage des ressources, consultez Verrouiller les ressources pour empêcher les modifications inattendues.

Étape suivante

Utilisez votre cluster de calcul pour :