Utiliser des machines virtuelles spot avec 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 pouvoir toujours être réaffectées ou d’ê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 la tarification, 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 recevez dépend du mode d’allocation de pool de votre compte Batch, qui peut être défini lors de 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é.

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 prenant en charge les machines virtuelles spot Toutes les régions à l’exception de Microsoft Azure China 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 de les utiliser lorsque les travaux sont répartis entre plusieurs tâches parallèles ou lorsque vous effectuez un scale-out de nombreux travaux et les distribuez entre plusieurs machines virtuelles.

Voici des exemples de cas d’usage du traitement par lots bien adaptés à l’utilisation des 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 à l’exécution des travaux, des baisses potentielles de capacité peuvent être tolérées. Toutefois, avec l’ajout de machines virtuelles Spot, les travaux sont souvent exécutés plus rapidement et pour un coût moindre.

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, afin que les machines virtuelles spot, plus économiques, soient utilisées seulement quand elles sont disponibles, mais qu’un scale-up soit effectué sur les machines virtuelles dédiées (plus chères) quand c’est nécessaire. Cette configuration permet de conserver une quantité minimale de capacité disponible pour que les travaux continuent de progresser.

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 effectuer un scale-out.
  • Parfois, les machines virtuelles ne sont pas disponibles ou sont préemptées, ce qui entraîne une réduction des capacités pour les tâches, et peut conduire à l’interruption d’une tâche et à sa réexécution.
  • Les tâches plus courtes ont tendance à mieux fonctionner avec les machines virtuelles spot. Les travaux avec des tâches plus longues peuvent être davantage impactés s’ils se trouvent interrompus. Si des tâches de longue durée implémentent des points de contrôle pour enregistrer la progression au fil de leur exécution, cet impact peut être réduit.
  • Les travaux MPI dont l’exécution est longue et qui utilisent plusieurs machines virtuelles ne sont pas adaptés à l’utilisation de machines virtuelles Spot, car une machine virtuelle suspendue peut rendre nécessaire de réexécuter l’ensemble 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.

Par exemple, pour créer un pool à l’aide de machines virtuelles Azure (dans ce cas, des machines virtuelles Linux) avec une cible 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;

Les machines virtuelles peuvent parfois être préemptées. En cas de préemption, les tâches qui étaient en cours d’exécution sur les machines virtuelles à nœud préemptées sont replacées en file d’attente et réexécutées.

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 liste de nœuds sur le pool renvoie toujours les nœuds anticipé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 avec 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 de redimensionnement ou à l’aide de 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 a 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 dans 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. En savoir plus sur les limitations des machines virtuelles spot.

Étapes suivantes