Gérer et optimiser les coûts d’Azure Machine Learning
Cet article vous explique comment gérer et optimiser les coûts lorsque vous entraînez et déployez des modèles Machine Learning sur Azure Machine Learning.
Utilisez les conseils suivants pour vous aider à gérer et à optimiser les coûts de vos ressources de calcul.
- Utiliser un cluster de calcul Azure Machine Learning
- Configurer vos clusters d’entraînement pour la mise à l’échelle automatique
- Configurer vos points de terminaison en ligne managés pour la mise à l’échelle automatique
- Définir des quotas sur votre abonnement et vos espaces de travail
- Définir des stratégies de résiliation sur votre tâche d’entraînement
- Utiliser des machines virtuelles de basse priorité
- Planifier l’arrêt et le démarrage automatiques des instances de calcul
- Utiliser une instance de machine virtuelle réservée Azure
- Paralléliser l’entraînement
- Définir des stratégies de conservation et de suppression des données
- Déployer des ressources dans la même région
- Supprimer les déploiements ayant échoué
Pour plus d’informations sur la planification et le monitoring des coûts, consultez Planifier la gestion des coûts d’Azure Machine Learning.
Important
Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service. Nous vous déconseillons d’utiliser les versions en préversion pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Utiliser le cluster de calcul Azure Machine Learning
Avec des données constamment modifiées, vous avez besoin d’un entraînement de modèle rapide et rationalisé et d’un réentraînement pour maintenir des modèles précis. Toutefois, l’entraînement continu est coûteux, en particulier pour les modèles de deep learning sur les GPU.
Les utilisateurs Azure Machine Learning peuvent utiliser le cluster de calcul Azure Machine Learning managé, également appelé AmlCompute. AmlCompute prend en charge diverses options de GPU et d’UC. AmlCompute est hébergé en interne pour le compte de votre abonnement par Azure Machine Learning. Il offre les mêmes sécurité, conformité et gouvernance de qualité professionnelle qu’à l’échelle du cloud Azure IaaS.
Ces pools de calcul étant à l’intérieur de l’infrastructure IaaS d’Azure, vous pouvez déployer, mettre à l’échelle et gérer votre entraînement avec les mêmes exigences de sécurité et de conformité que le reste de votre infrastructure. Ces déploiements se produisent dans votre abonnement et obéissent à vos règles de gouvernance. Pour plus d’informations, consultez Planifier la gestion des coûts d’Azure Machine Learning.
Configurer des clusters d’entraînement pour la mise à l’échelle automatique
La mise à l’échelle automatique des clusters selon les besoins de votre charge de travail vous permet de réduire les coûts et d’utiliser uniquement ce dont vous avez besoin.
Les clusters AmlCompute sont conçus pour effectuer dynamiquement la mise à l’échelle en fonction de votre charge de travail. Le cluster peut être mis à l’échelle jusqu’au nombre maximal de nœuds que vous configurez. À la fin de chaque travail, le cluster publie des nœuds et effectue une mise à l’échelle jusqu’au nombre de nœuds minimal que vous avez configuré.
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.
Vous pouvez également configurer la durée d’inactivité du nœud avant l’exécution du scale-down. Par défaut, le délai d’inactivité avant le scale-down est défini sur 120 secondes.
- Si vous effectuez une expérimentation moins itérative, réduisez ce délai pour réduire les coûts.
- Si vous effectuez une expérimentation dev/test hautement itérative, vous devrez peut-être augmenter la durée de façon à ce que les opérations constantes de scale-up et de scale-down après chaque modification apportée à votre environnement ou script d’entraînement ne vous soient pas facturées.
Vous pouvez configurer des clusters AmlCompute en fonction de l’évolution de vos besoins en matière de charge à l’aide des éléments suivants :
- Portail Azure
- Classe SDK AmlCompute
- CLI AmlCompute
- API REST
Configurer des points de terminaison en ligne managés pour la mise à l’échelle automatique
La mise à l’échelle automatique exécute automatiquement la quantité appropriée de ressources pour gérer la charge sur votre application. Les points de terminaison en ligne managés prennent en charge la mise à l’échelle automatique via l’intégration à la fonctionnalité de mise à l’échelle automatique d’Azure Monitor. Pour plus d’informations, consultez Points de terminaison et déploiements en ligne pour l’inférence en temps réel.
La mise à l’échelle automatique d’Azure Monitor prend en charge un ensemble complet de règles :
- Mise à l’échelle basée sur les métriques (par exemple, utilisation du processeur > 70 %)
- Mise à l’échelle basée sur la planification (par exemple, règles de mise à l’échelle pour les heures de pointe)
- Une combinaison des deux
Pour plus d’informations, consultez Mise à l’échelle automatique des points de terminaison en ligne.
Définir des quotas sur les ressources
AmlCompute est fourni avec une configuration de quota (ou limite). Ce quota est défini par famille de machines virtuelles (par exemple, série Dv2 ou NCv3). Le quota varie selon la région de chaque abonnement. Les abonnements commencent par de petites valeurs par défaut. Utilisez ce paramètre pour contrôler la quantité de ressources AmlCompute pouvant être mises en service dans votre abonnement. Pour plus d’informations, consultez Capacité de calcul Machine Learning.
Vous pouvez également configurer un quota au niveau de l’espace de travail par famille de machines virtuelles pour chaque espace de travail au sein d’un abonnement. Cette approche vous permet de contrôler plus précisément les coûts que chaque espace de travail peut générer et de restreindre certaines familles de machines virtuelles. Pour plus d’informations, consultez Quotas au niveau de l’espace de travail.
Pour définir des quotas au niveau de l’espace de travail :
Ouvrez le Portail Azure, puis sélectionnez n’importe quel espace de travail dans votre abonnement.
Sélectionnez Support + Résolution des problèmes>Utilisation + quotas dans le menu de l’espace de travail.
Sélectionnez Afficher le quota pour afficher les quotas dans Azure Machine Learning studio.
À partir de cette page, vous pouvez trouver votre abonnement et votre région afin de définir des quotas.
Ce paramètre affectant plusieurs espaces de travail, vous avez besoin de privilèges dans l’étendue de l’abonnement pour définir le quota.
Définir des stratégies d’arrêt de travail
Dans certains cas, vous devez configurer vos exécutions d’apprentissage pour limiter leur durée ou y mettre fin prématurément. C’est le cas par exemple quand vous utilisez le réglage d’hyperparamètre intégré d’Azure Machine Learning ou le Machine Learning automatisé.
Voici quelques options dont vous disposez :
- Définissez un paramètre appelé
max_run_duration_seconds
dans votre RunConfiguration pour contrôler la durée maximale pendant laquelle une exécution peut s’étendre sur le calcul que vous choisissez (calcul cloud local ou distant). - Pour le réglage d’hyperparamètre, définissez une stratégie de résiliation anticipée à partir d’une stratégie Bandit, d’une stratégie d’arrêt médiane ou d’une stratégie de sélection de troncation. Pour contrôler davantage les balayages d’hyperparamètres, utilisez des paramètres tels que
max_total_runs
oumax_duration_minutes
. Pour plus d’informations, consultez Spécifier une stratégie d’arrêt anticipé. - Pour le Machine Learning automatisé, définissez des stratégies d’arrêt similaires à l’aide de l’indicateur
enable_early_stopping
. Vous pouvez également utiliser des propriétés telles queiteration_timeout_minutes
etexperiment_timeout_minutes
pour contrôler la durée maximale d’un travail ou de l’ensemble de l’expérience. Pour plus d’informations, consultez Critères de sortie.
Machines virtuelles basse priorité
Azure vous permet d’utiliser une capacité inutilisée excessive en tant que machines virtuelles de basse priorité sur des groupes de machines virtuelles identiques, Batch et le service Machine Learning. Ces allocations sont préventives, mais disponibles à prix réduit par rapport aux machines virtuelles dédiées. En général, nous vous recommandons d’utiliser des machines virtuelles de basse priorité pour les charges de travail Batch. Vous devez également les utiliser lorsque des interruptions sont récupérables par le biais de renvois pour l’inférence par lots ou de redémarrages pour un entraînement Deep Learning avec points de contrôle.
Les machines virtuelles de basse priorité ont un quota unique distinct de la valeur de quota dédiée, qui est défini par famille de machines virtuelles. Pour plus d’informations sur les quotas AmlCompute, consultez Gérer et augmenter les quotas.
Les machines virtuelles de basse priorité ne fonctionnent pas pour les instances de calcul, car elles doivent prendre en charge les expériences de notebook interactives.
Planifier les instances de calcul
Quand vous créez une instance de calcul, la machine virtuelle reste allumée pour être disponible pour votre travail.
- Activez l’arrêt en cas d’inactivité (préversion) pour réduire les coûts lorsque la machine virtuelle est inactive pendant un laps de temps spécifié. Consultez Configurer l’arrêt inactif.
- Configurez une planification pour démarrer et arrêter automatiquement l’instance de calcul (préversion) lorsqu’elle n’est pas utilisée afin de réduire les coûts. Consultez Planifier le démarrage et l’arrêt automatiques.
Utiliser des instances réservées
Une autre façon d’économiser de l’argent sur les ressources de calcul est l’instance de machine virtuelle réservée Azure. Avec cette offre, vous vous engagez à des termes de 1 an ou 3 ans. Ces remises vont jusqu’à 72 % des prix de paiement à l’utilisation et s’appliquent directement sur votre facture Azure mensuelle.
La capacité de calcul Azure Machine Learning prend en charge les instances réservées par nature. Si vous achetez une instance réservée d’un an ou de trois ans, nous appliquons automatiquement la remise sur la base de votre calcul managé Azure Machine Learning.
Paralléliser l’entraînement
L’une des principales méthodes d’optimisation des coûts et des performances consiste à paralléliser la charge de travail à l’aide d’un composant parallèle dans Azure Machine Learning. Un composant parallèle vous permet d’utiliser un grand nombre de plus petits nœuds pour exécuter la tâche en parallèle, ce qui vous permet de mettre à l’échelle horizontalement. La parallélisation entraîne une surcharge. En fonction de la charge de travail et du degré de parallélisme pouvant être atteint, cette approche peut être une option. Pour plus d’informations, consultez ParallelComponent, classe.
Définir des stratégies de conservation et de suppression des données
Chaque fois qu’un pipeline s’exécute, des jeux de données intermédiaires sont générés à chaque étape. Au fil du temps, ces jeux de données intermédiaires occupent de l’espace dans votre compte de stockage. Réfléchissez à la configuration de stratégies pour gérer vos données tout au long de leur cycle de vie afin d’archiver et de supprimer vos jeux de données. Pour plus d’informations, consultez Optimiser les coûts en gérant automatiquement le cycle de vie des données.
Déployer des ressources dans la même région
Les calculs situés dans des régions différentes peuvent présenter une latence réseau et une augmentation des coûts de transfert de données. Des coûts réseau Azure liés à la bande passante sortante à partir des centres de données Azure sont encourus. Pour aider à réduire les coûts liés au réseau, déployez toutes vos ressources dans la région. Le provisionnement de votre espace de travail Azure Machine Learning et des ressources dépendantes dans la même région que vos données peuvent aider à réduire les coûts et à améliorer les performances.
Pour les scénarios cloud hybrides comme ceux utilisant Azure ExpressRoute, il peut parfois être plus économique de déplacer toutes les ressources vers Azure pour optimiser les coûts et la latence du réseau.
Supprimer les déploiements ayant échoué
Les points de terminaison en ligne managés utilisent des machines virtuelles pour les déploiements. Si vous avez envoyé une requête de création d’un déploiement en ligne et qu’elle a échoué, la requête a peut-être passé la phase de création du calcul. Dans ce cas, le déploiement ayant échoué entraînerait des frais. Une fois le débogage ou l’examen de l’échec terminé, supprimez les déploiements ayant échoué pour économiser les coûts associés.