Partager via


Utiliser des machines virtuelles de basse priorité dans les déploiements par lots

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

Les déploiements par lots Azure prennent en charge les machines virtuelles de basse priorité pour réduire le coût des charges de travail d’inférence par lots. Les machines virtuelles de faible priorité permettent d’utiliser une grande quantité de puissance de calcul pour un coût faible. Les machines virtuelles de basse priorité tirent parti de la capacité excédentaire dans Azure. Lorsque vous spécifiez des machines virtuelles de faible priorité dans vos pools, Azure peut utiliser ce surplus lorsqu’il est disponible.

Conseil

L’inconvénient de l’utilisation de machines virtuelles de basse priorité est que ces machines virtuelles peuvent ne pas être disponibles ou qu’elles peuvent être réquisitionnées à tout moment, en fonction de la capacité disponible. C’est la raison pour laquelle cette approche convient mieux aux charges de travail de traitement par lots et asynchrones, pour lesquelles le temps d’achèvement du travail est flexible et le travail est distribué sur de nombreuses machines virtuelles.

Les machines virtuelles de basse priorité sont proposées à un prix réduit par rapport aux machines virtuelles dédiées. Pour plus de détails sur les prix, consultez Tarification d’Azure Machine Learning.

Fonctionnement du déploiement par lots avec des machines virtuelles de faible priorité

Les déploiements de lot Azure Machine Learning fournissent plusieurs fonctionnalités permettant de facilement utiliser et tirer parti des machines virtuelles de faible priorité :

  • Les travaux de déploiement par lots consomment des machines virtuelles de faible priorité en s’exécutant sur des clusters de calcul Azure Machine Learning créés avec des machines virtuelles de faible priorité. Une fois qu’un déploiement est associé à un cluster de machines virtuelles de basse priorité, tous les travaux produits par ce déploiement utilisent des machines virtuelles de basse priorité. La configuration par travail individuel n’est pas possible.
  • Les travaux de déploiement par lots recherchent automatiquement le nombre cible de machines virtuelles dans le cluster de calcul disponible en fonction du nombre de tâches à envoyer. Si les machines virtuelles sont préemptées ou indisponibles, les travaux de déploiement par lots tentent de remplacer la capacité perdue en mettant en file d’attente les tâches ayant échoué sur le cluster.
  • Les machines virtuelles de faible priorité ont un quota de processeurs virtuels distinct de celui des machines virtuelles dédiées. Les cœurs de basse priorité par région ont une limite par défaut comprise entre 100 et 3 000 unités, en fonction de votre abonnement. Le nombre de cœurs basse priorité par abonnement peut être augmenté et représente une valeur unique entre les familles de machines virtuelles. Consultez Quotas de calcul Azure Machine Learning.

Considérations et cas d’usage

De nombreuses charges de travail de lot conviennent parfaitement aux machines virtuelles de faible priorité. Utiliser des machines virtuelles de basse priorité peut introduire des retards d’exécution lorsqu’une désallocation des machines virtuelles se produit. Si le temps qui vous est nécessaire pour terminer des travaux est flexible, vous pouvez accepter d’éventuelles baisses de capacité.

Lorsque vous déployez des modèles sous des points de terminaison de lot, la re-planification peut être effectuée au niveau du mini-lot. Cette approche à l’avantage de limiter l’impact de la désallocation aux mini-lots en cours de traitement et qui ne sont pas terminés sur le nœud concerné. Toutes les progressions terminées sont conservées.

Limites

  • Une fois qu’un déploiement est associé à un cluster de machines virtuelles de basse priorité, tous les travaux produits par ce déploiement utilisent des machines virtuelles de basse priorité. La configuration par travail individuel n’est pas possible.
  • La replanification est effectuée au niveau du minilot, quelle que soit la progression. Aucune fonctionnalité de point de contrôle n’est fournie.

Avertissement

Dans les cas où l’ensemble du cluster est réquisitionné ou qu’il s’exécute sur un cluster d’un seul nœud, le travail est annulé, car la capacité disponible est insuffisante pour permettre son exécution. Dans ce cas, il faut soumettre à nouveau.

Créer des déploiements par lots qui utilisent des machines virtuelles de basse priorité

Les travaux de déploiement par lots consomment des machines virtuelles de faible priorité en s’exécutant sur des clusters de calcul Azure Machine Learning créés avec des machines virtuelles de faible priorité.

Remarque

Une fois qu’un déploiement est associé à un cluster de machines virtuelles de basse priorité, tous les travaux produits par ce déploiement utilisent des machines virtuelles de basse priorité. La configuration par travail individuel n’est pas possible.

Vous pouvez créer un cluster de calcul Azure Machine Learning de faible priorité en procédant comme suit :

Créer une définition de calcul YAML comme la suivante, low-pri-cluster.yml :

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority

Créez le calcul à l’aide de la commande suivante :

az ml compute create -f low-pri-cluster.yml

Après avoir créé le nouveau calcul, vous pouvez créer ou mettre à jour votre déploiement pour utiliser le nouveau cluster :

Pour créer ou mettre à jour un déploiement sous le nouveau cluster de calcul, créez un fichier de configuration YAML, endpoint.yml :

$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
  instance_count: 2
settings:
  max_concurrency_per_instance: 2
  mini_batch_size: 2
  output_action: append_row
  output_file_name: predictions.csv
  retry_settings:
    max_retries: 3
    timeout: 300

Ensuite, créez le déploiement avec la commande suivante :

az ml batch-endpoint create -f endpoint.yml

Afficher et surveiller la désallocation des nœuds

De nouvelles métriques sont disponibles dans le Portail Azure pour les machines virtuelles de faible priorité afin de surveiller les machines virtuelles de faible priorité. Ces mesures sont :

  • Nœuds reportés
  • Cœurs réquisitionnés

Pour afficher ces métriques sur le portail Azure :

  1. Dans le portail Azure, accédez à votre espace de travail Azure Machine Learning.
  2. Sélectionnez Mesures à partir de la section Analyse.
  3. Sélectionnez les métriques de votre choix dans la liste Métriques.

Capture d’écran de la section des métriques dans le panneau de surveillance des ressources qui montre les métriques pertinentes pour les machines virtuelles de basse priorité.