Utiliser des machines virtuelles Spot avec des charges de travail Batch

Azure Batch offre des machines virtuelles spot afin de réduire le coût des charges de travail Batch. Les machines virtuelles Spot rendent possibles de nouveaux types de charges de travail Batch en permettant d’utiliser une grande quantité de puissance de calcul pour un coût faible.

Les machines virtuelles spot tirent parti de la capacité excédentaire dans Azure. Lorsque vous spécifiez des machines virtuelles spot dans vos pools, Azure Batch peut utiliser ce surplus lorsqu’il est disponible.

La contrepartie à l’utilisation de machines virtuelles Spot est que ces machines virtuelles risquent de ne pas toujours être disponibles ou qu’elles peuvent être préemptées à tout moment, selon la capacité disponible. C’est la raison pour laquelle les machines virtuelles spot sont particulièrement adaptées aux charges de travail de traitement par lots et asynchrone lorsque l’heure d’achèvement de la tâche est flexible et que le travail est réparti entre plusieurs machines virtuelles.

Les machines virtuelles Spot sont proposées à un prix inférieur à celui des machines virtuelles dédiées. Pour plus d’informations sur les tarifs, consultez Tarification Batch.

Différences entre les machines virtuelles spot et de faible priorité

Batch propose deux types de machines virtuelles préemptibles à faible coût :

  • Machines virtuelles spot, offre moderne disponible à l’échelle d’Azure, également disponible en tant que machines virtuelles à instance unique ou groupes de machines virtuelles identiques.
  • Les machines virtuelles de faible priorité, offre héritée uniquement disponible par le biais d’Azure Batch.

Le type de nœud que vous obtenez dépend du mode d’allocation de pool de votre compte Batch, qui peut être défini pendant la création du compte. Les comptes Batch créés avec le mode d’allocation de pool Abonnement utilisateur obtiennent toujours des machines virtuelles spot. Les comptes Batch qui utilisent le mode d’allocation de pool Géré par Batch obtiennent toujours des machines virtuelles de faible priorité.

Avertissement

Les machines virtuelles de faible priorité seront mises hors service après le 30 septembre 2025. Veillez à migrer vers des machines virtuelles Spot dans Batch avant cette date.

Les machines virtuelles spot Azure et les machines virtuelles de faible priorité Batch sont similaires, mais présentent quelques différences de comportement.

Machines virtuelles Spot Machines virtuelles de faible priorité
Comptes Batch pris en charge Comptes Batch avec abonnement utilisateur Comptes batch gérés par Batch
Configurations de pool Batch prises en charge Configuration de la machine virtuelle Configuration de la machine virtuelle et configuration du service cloud (déconseillé)
Régions disponibles Toutes les régions qui prennent en charge les machines virtuelles Spot Toutes les régions à l’exception de Microsoft Azure géré par 21Vianet
Éligibilité du client Non disponible pour certains types d’offre d’abonnement. En savoir plus sur les limitations des machines virtuelles spot. Disponible pour tous les clients Batch
Causes possibles de l’éviction Capacité Capacité
Modèle de tarification Remises variables par rapport aux prix des machines virtuelles standard Remises fixes par rapport aux prix des machines virtuelles standard
Modèle de quota Soumis à des quotas de cœur sur votre abonnement Soumis à des quotas de cœur sur votre compte Batch
Contrat SLA de disponibilité None None

Prise en charge par Batch des machines virtuelles spot

Azure Batch fournit plusieurs fonctionnalités permettant de facilement utiliser et exploiter les machines virtuelles spot :

  • Les pools Batch peuvent contenir à la fois des machines virtuelles dédiées et des machines virtuelles spot. Le nombre de machines virtuelles de chaque type peut être indiqué lors de la création d’un pool et modifié à tout moment pour un pool existant, grâce à l’opération de redimensionnement explicite ou à la mise à l’échelle automatique. La soumission de travaux et de tâches peut rester inchangée, quels que soient les types de machines virtuelles figurant dans le pool. Vous pouvez aussi configurer un pool pour utiliser uniquement des machines virtuelles spot pour exécuter les travaux à un coût le plus faible possible, tout en faisant appel à des machines virtuelles dédiées si la capacité descend sous un seuil minimal, afin d’assurer la continuité de l’exécution des travaux.
  • Les pools Batch cherchent automatiquement à atteindre le nombre cible de machines virtuelles spot. Si des machines virtuelles sont anticipées ou indisponibles, Batch tente de remplacer la capacité perdue et de revenir au nombre cible.
  • Quand des tâches sont interrompues, Batch détecte et replace automatiquement en file d’attente les tâches pour les réexécuter.
  • Les machines virtuelles spot ont un quota de processeurs virtuels distinct de celui des machines virtuelles dédiées. Le quota pour les machines virtuelles spot est plus élevé que le quota pour les machines virtuelles dédiées, car les machines virtuelles spot sont moins coûteuses. Pour plus d’informations, consultez Quotas et limites du service Batch.

Considérations et cas d’usage

De nombreuses charges de travail Batch conviennent parfaitement aux machines virtuelles spot. Envisagez d’utiliser des machines virtuelles Spot lorsque les travaux sont divisés en plusieurs tâches parallèles ou lorsque un grand nombre de travaux font l’objet d’un scale-out et sont répartis entre diverses machines virtuelles.

Voici quelques exemples de cas d’usage de traitement par lots qui se prêtent bien aux machines virtuelles Spot :

  • Développement et test : d’importantes économies peuvent être réalisées, en particulier en cas de développement de solutions à grande échelle. Tous les types de tests peuvent tirer parti de l’utilisation de machines virtuelles de faible priorité, mais les tests de charge à grande échelle et les tests de régression sont particulièrement concernés.
  • Complément à la capacité à la demande : les machines virtuelles spot peuvent être utilisées pour compléter les machines virtuelles dédiées standard. Quand elles sont disponibles, les travaux peuvent être mis à l’échelle et par conséquent se terminer plus rapidement, pour un coût moindre. Si elles ne sont pas disponibles, les machines virtuelles dédiées de base restent disponibles.
  • Durée d’exécution des travaux flexible : S’il existe une certaine flexibilité dans le temps nécessaire à la réalisation des travaux, des baisses potentielles de capacité peuvent être tolérées. Toutefois, avec l’ajout de machines virtuelles Spot, les travaux s’exécutent généralement plus vite et à moindre coût.

Les pools Batch peuvent être configurés pour utiliser des machines virtuelles spot de plusieurs façons :

  • Un pool ne peut utiliser que des machines virtuelles spot. Dans ce cas, Batch récupère les capacités préemptées quand elles sont disponibles. Cette configuration est le moyen le plus économique d’exécuter des travaux.
  • Les machines virtuelles Spot peuvent être utilisées avec une base de référence fixe de machines virtuelles dédiées. Le nombre fixe de machines virtuelles dédiées garantit qu’il existe toujours une capacité permettant de poursuivre le traitement d’un travail.
  • Un pool peut utiliser un mélange dynamique de machines virtuelles dédiées et de machines virtuelles Spot. Les machines virtuelles Spot, plus économiques, sont alors utilisées seulement quand elles sont disponibles, et un scale-up se produit sur des machines virtuelles dédiées à plein tarif quand cela est nécessaire. Avec cette configuration, une capacité minimale reste disponible pour pouvoir poursuivre l’exécution des travaux.

Gardez à l’esprit les pratiques suivantes lorsque vous planifiez votre utilisation de machines virtuelles Spot :

  • Pour optimiser l’utilisation de la capacité excédentaire dans Azure, les travaux appropriés peuvent faire l’objet d’un scale-out.
  • Parfois, il peut arriver que les machines virtuelles ne soient pas disponibles ou qu’elles soient préemptées, ce qui a pour effet de réduire la capacité pour les travaux et peut entraîner une interruption et des réexécutions de tâches.
  • Les tâches plus courtes ont tendance à mieux fonctionner avec les machines virtuelles spot. Les travaux impliquant des tâches plus longues risquent d’être davantage impactés en cas d’interruption. Si des tâches de longue durée implémentent des points de contrôle pour enregistrer la progression pendant leur exécution, cet impact peut être réduit.
  • Les travaux MPI de longue durée qui utilisent plusieurs machines virtuelles ne se prêtent pas bien aux machines virtuelles Spot, car la préemption d’une machine virtuelle peut nécessiter la réexécution complète du travail.
  • Les nœuds spot peuvent être marqués comme inutilisables si des règles de groupe de sécurité réseau (NSG) sont mal configurées.

Créer et gérer des pools avec des machines virtuelles spot

Un pool Batch peut contenir à la fois des machines virtuelles dédiées et des machines virtuelles spot (également appelées nœuds de calcul). Vous pouvez définir le nombre cible de nœuds de calcul, tant pour les machines virtuelles dédiées que pour les machines virtuelles spot. Le nombre cible de nœuds correspond au nombre de machines virtuelles que vous souhaitez avoir dans le pool.

L’exemple suivant crée un pool constitué de machines virtuelles Azure, en l’occurrence des machines virtuelles Linux, avec un objectif de 5 machines virtuelles dédiées et 20 machines virtuelles Spot :

ImageReference imageRef = new ImageReference(
    publisher: "Canonical",
    offer: "UbuntuServer",
    sku: "20.04-LTS",
    version: "latest");

// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
    new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);

pool = batchClient.PoolOperations.CreatePool(
    poolId: "vmpool",
    targetDedicatedComputeNodes: 5,
    targetLowPriorityComputeNodes: 20,
    virtualMachineSize: "Standard_D2_v2",
    virtualMachineConfiguration: virtualMachineConfiguration);

Vous pouvez obtenir le nombre actuel de nœuds pour les machines virtuelles dédiées et pour les machines virtuelles spot :

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

Une propriété des nœuds du pool permet d’indiquer si le nœud correspond à une machine virtuelle dédiée ou à une machine virtuelle spot :

bool? isNodeDedicated = poolNode.IsDedicated;

Parfois, il peut arriver que les machines virtuelles Spot soient préemptées. Dans ce cas, les tâches qui étaient en cours d’exécution sur les machines virtuelles du nœud préempté sont de nouveau placées en file d’attente et réexécutées une fois la capacité rétablie.

Pour les pools de configuration de machines virtuelles, Batch montre également les comportements suivants :

  • L’état des machines virtuelles reportées est mis à jour vers Reporté.
  • La machine virtuelle est effectivement supprimée, ce qui entraine la perte des données stockées localement sur la machine virtuelle.
  • Une opération de listage des nœuds du pool retourne toujours les nœuds préemptés.
  • Le pool tente continuellement d’atteindre le nombre cible de nœuds spot disponibles. Une fois la capacité de remplacement trouvée, les nœuds conservent leur ID, mais ils sont réinitialisés. Ils passent par les états Création et Démarrage avant d’être disponibles pour la planification des tâches.
  • Le nombre de préemptions est disponible sous la forme d’une mesure dans le portail Azure.

Mettre à l’échelle les pools contenant des machines virtuelles spot

Comme pour les pools composés uniquement de machines virtuelles dédiées, il est possible de mettre à l’échelle un pool contenant des machines virtuelles Spot en appelant la méthode Resize ou en utilisant la mise à l’échelle automatique.

L’opération de redimensionnement du pool prend en compte un deuxième paramètre facultatif qui met à jour la valeur de targetLowPriorityNodes :

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

La formule de mise à l’échelle automatique du pool prend en charge les machines virtuelles spot comme suit :

  • Vous pouvez obtenir ou définir la valeur de la variable $TargetLowPriorityNodes définie par le service.
  • Vous pouvez obtenir la valeur de la variable $CurrentLowPriorityNodes définie par le service.
  • Vous pouvez obtenir la valeur de la variable $PreemptedNodeCount définie par le service. Cette variable renvoie le nombre de nœuds à l’état Reporté et vous permet d’augmenter ou de réduire le nombre de nœuds dédiés, en fonction du nombre de nœuds reportés qui ne sont pas disponibles.

Configurer des travaux et des tâches

Les travaux et les tâches peuvent nécessiter une configuration supplémentaire pour les nœuds Spot :

  • La propriété JobManagerTask d’un travail possède une propriété AllowLowPriorityNode. Lorsque cette propriété est définie sur true, la tâche du gestionnaire de travaux peut être planifiée sur un nœud dédié ou sur un nœud spot. Si elle a la valeur false, la tâche du gestionnaire de travaux est planifiée uniquement sur un nœud dédié.
  • La variable d’environnementAZ_BATCH_NODE_IS_DEDICATED est disponible pour une application de tâche, afin qu’elle puisse déterminer si l’exécution se fait sur un nœud Spot ou sur un nœud dédié.

Afficher les métriques pour les machines virtuelles spot

De nouvelles métriques sont disponibles dans le portail Azure pour les nœuds spot. Ces mesures sont :

  • Nombre de nœuds à priorité basse
  • Nombre de cœurs à priorité basse
  • Nombre de nœuds reportés

Pour afficher ces métriques sur le portail Azure :

  1. Accédez à votre compte  Batch dans le portail Azure.
  2. Sélectionnez Mesures à partir de la section Analyse.
  3. Sélectionnez les métriques de votre choix dans la liste Métriques.

Limites

  • Dans Batch, les machines virtuelles Spot ne prennent pas en charge la définition d’un prix maximal et ne prennent pas en charge les évictions basées sur les prix. Elles ne peuvent être supprimées que pour des raisons de capacité.
  • Les machines virtuelles spot sont uniquement disponibles pour les pools de configuration de machine virtuelle, et non pour les pools de configuration de service cloud, qui sont déconseillés.
  • Les machines virtuelles Spot ne sont pas disponibles pour certains clouds, certaines tailles de machines virtuelles et certains types d’offres d’abonnement. Découvrez plus en détail les limitations des machines virtuelles Spot.
  • Pour l’heure, les disques de système d’exploitation éphémères ne sont pas pris en charge avec les machines virtuelles Spot en raison de la stratégie d’éviction managée par le service Arrêter-Désallouer.

Étapes suivantes