Cours
Le cloud computing est un atout pour les applications de data science et d’IA. Les fournisseurs sont nombreux, et choisir le bon est décisif pour votre application. Toutefois, l’un des grands défis du cloud reste la maîtrise des coûts. Lorsque nous déployons des applications et des charges de travail dans le cloud, il faut garder un œil sur la facture, car les machines utilisées peuvent revenir très cher.
Dans cet article, nous allons explorer les machines virtuelles Spot (VM) Azure, également appelées instances Spot Azure. Elles permettent de réduire les coûts lors des déploiements sur Microsoft Azure. Si vous découvrez Microsoft Azure et cherchez une introduction, consultez notre cours Introduction to Azure. Pour aller plus loin, notre cours Azure Architecture and Services vous sera utile. Enfin, pour une référence rapide, retrouvez notre fiche simple comparant les différents fournisseurs cloud ici : AWS, Azure and GCP Service Comparison for Data Science and AI.
Passons aux Azure Spot VMs.
Qu’est-ce qu’une Azure Spot VM ?
Les Azure Spot VMs sont des machines virtuelles disponibles en surplus dans les centres de données Azure à un instant donné. Parce qu’elles ne sont pas utilisées, Azure les propose à des tarifs nettement réduits, parfois jusqu’à 90 % de remise par rapport au prix standard des VM Azure.
Cette réduction s’accompagne toutefois d’une incertitude. En cas de hausse de la demande de VM par d’autres utilisateurs, Azure peut reprendre ces Spot VMs à tout moment avec un court préavis. Elles sont donc imprévisibles. Il faut donc les réserver à des tâches qui ne requièrent pas une disponibilité continue et qui supportent les interruptions. Parmi ces tâches :
Tâches par lots (batch jobs)
Les traitements par lots sont des tâches exécutées sur une machine sans intervention manuelle. Elles sont généralement traitées en grands ensembles, de manière séquentielle ou parallèle. Leurs horaires de début et de fin étant souvent flexibles, elles peuvent être mises en pause et reprises sans perturbation majeure.
Par exemple, une institution financière peut traiter en fin de journée toutes les opérations effectuées. Elle configure un traitement par lots pour charger automatiquement des milliers voire des millions de transactions issues de diverses sources, les valider, puis mettre à jour les soldes en conséquence.
Environnements de test et de développement
Les environnements de test et de développement permettent aux développeurs de créer et d’évaluer des applications sans impacter la production. Leur mise en place peut coûter cher, et c’est là que les Spot VMs sont pertinentes.
Par exemple, une équipe travaillant sur un site e-commerce souhaite tester une nouvelle fonctionnalité de recommandation basée sur l’historique de navigation. Elle la développe en environnement de développement, puis la déploie en test pour vérifier bugs, performances et expérience utilisateur. Cela peut se faire sur des Spot VMs avec différentes configurations. Après des tests concluants, la fonctionnalité est déployée en production pour les clients.
Applications tolérantes aux pannes
Les applications tolérantes aux pannes continuent de fonctionner même si certains composants tombent en panne, grâce à la redondance et aux mécanismes de bascule. Elles se prêtent bien aux Spot VMs. Par exemple, une application peut s’appuyer sur plusieurs serveurs pour traiter les requêtes utilisateurs. Si l’un tombe en panne, le système redirige automatiquement vers un autre. Comme ces opérations sont tolérantes aux pannes, elles peuvent fonctionner sur des Spot VMs pour réduire les coûts.
Avantages des Azure Spot VMs
Le principal avantage des Azure Spot VMs est l’économie substantielle réalisée. Comme indiqué, la remise peut atteindre 90 % par rapport aux VM à la demande. Grâce à cette réduction, nous pouvons ajuster la capacité à la hausse ou à la baisse selon la disponibilité, et exécuter des opérations à grande échelle qui seraient autrement très coûteuses avec des VM à la demande. De plus, avec les Spot VMs, nous pouvons définir le prix maximal que nous sommes prêts à payer. Cela nous donne la main sur nos dépenses.
Lorsque la VM est sur le point d’être reprise par Azure, nous pouvons aussi définir une stratégie d’éviction pour préciser la suite : désallouer ou supprimer la VM. En choisissant de la désallouer, la VM s’arrête mais n’est pas supprimée. Nous pourrons la redémarrer dès qu’elle redevient disponible. Entre-temps, seuls les coûts de stockage s’appliquent. En choisissant de la supprimer, toutes les données et charges de travail sont effacées.
Comment déployer une Spot VM
Dans cette section, nous expliquons comment déployer une Spot VM et choisir les options associées, comme la tarification et la stratégie d’éviction. Nous pouvons déployer une VM Spot unique ou un groupe de VMs Spot, appelé Spot VM Scale Set.
Spot VMs individuelles
La manière la plus simple est de créer une VM depuis le portail Azure.
- Sélectionnez Virtual Machines sous Services dans le portail, puis cliquez sur Create.
- Dans la page Create a virtual machine, renseignez les détails et cochez la case Run with Azure Spot discount.
- Choisissez ensuite le Eviction type et la Eviction Policy.
- Pour le Eviction type, choisissez Capacity only ou Price or capacity. L’option Capacity only évince la VM lorsque la demande de VM Azure est élevée. Elle définit également le prix maximal acceptable pour la Spot VM. Pour réduire ce prix maximal, sélectionnez Price or Capacity et indiquez le prix plafond. Avec cette option, Azure évince la VM soit en cas de forte demande, soit lorsque le coût d’une Spot VM dépasse le prix maximal spécifié.
- Choisissez aussi une stratégie d’éviction, c’est-à-dire ce qui se passe si Azure reprend votre machine. Vous pouvez sélectionner Deallocate ou Delete. L’option Deallocate arrête la VM sans supprimer ses données ni ses applications. Vous n’êtes pas facturé pour la VM à l’arrêt, mais le stockage associé reste facturé. Cette option convient si vous souhaitez redémarrer la VM quand la capacité redevient disponible. Avec Delete, la VM et tout stockage temporaire associé sont supprimés lorsque Azure reprend l’instance.
Création d’une machine virtuelle. Source : image de l’auteur
Nous pouvons également utiliser Azure CLI et Azure PowerShell, entre autres méthodes, pour lancer une Spot VM. Pour plus de détails, consultez la documentation Azure sur les Spot VMs.
Spot Virtual Machine Scale Sets (VMSS)
Nous pouvons aussi créer des groupes de Spot VMs, appelés Spot Virtual Machine Scale Sets. Pour cela, recherchez Virtual Machine Scale Sets dans le portail Azure et créez-en un. Les VMSS automatisent le déploiement et la gestion de plusieurs Spot VMs, ce qui facilite l’augmentation ou la diminution de capacité selon les besoins. Nous pouvons définir des critères de mise à l’échelle, comme l’usage CPU ou le trafic réseau, et fixer une capacité cible en fonction de notre prix maximal et de nos exigences de disponibilité.
Bonnes pratiques pour les Azure Spot VMs
Voici nos recommandations pour garantir des charges de travail résilientes et économiques avec les Spot VMs.
Vérifier la capacité
Avant de déployer des Spot VMs, je vérifie la capacité disponible dans la région visée et pour les tailles de VM prévues. La capacité d’Azure fluctue selon la demande des autres clients ; s’assurer de la disponibilité permet d’éclairer nos décisions de déploiement.
Définir un prix maximal
Je définis le prix horaire maximal que je suis prêt à payer pour une VM. Cela aide à maîtriser les coûts.
Concevoir pour l’interruption
Étant donné que les Spot VMs peuvent être préemptées avec un court préavis, je recommande de concevoir les charges de travail pour tolérer les interruptions. Utilisez des stratégies comme le checkpointing pour enregistrer périodiquement l’avancement, afin de reprendre au dernier point de contrôle plutôt que de repartir de zéro. Pour les traitements distribués, veillez à pouvoir redistribuer les tâches entre les instances restantes afin de maintenir le débit même si certaines sont préemptées.
Mettre en place une supervision
Une supervision efficace est essentielle pour gérer les Spot VMs. Azure fournit des outils pour suivre l’utilisation, les coûts et les événements d’éviction. En surveillant ces indicateurs, nous obtenons des insights sur les performances de nos Spot VMs et pouvons ajuster notre stratégie en conséquence.
Azure Spot VMs vs. instances réservées
Selon l’application, il peut parfois être plus pertinent d’utiliser une VM réservée plutôt qu’une VM Spot. Les VMs réservées constituent une autre option pour optimiser les coûts cloud. Cette section détaille les différences entre ces deux modèles.
Spot VMs
Comme nous l’avons vu, les Spot VMs offrent des économies considérables, parfois jusqu’à 90 % par rapport au prix à la demande. Cependant, ces instances peuvent être reprises par Azure avec un court préavis selon la demande de capacité. Il faut donc réserver les instances Spot à des charges de travail flexibles dans le temps et capables de supporter des interruptions : traitements par lots, environnements de développement et de test, et applications sans état facilement répartissables sur plusieurs instances.
Instances réservées
Les instances réservées, elles, s’achètent pour une durée d’un ou trois ans. En échange de cet engagement, nous bénéficions d’une remise significative par rapport au prix à la demande pour un type de VM spécifique. Leur principal avantage est l’absence de risque d’éviction par Azure. Si la charge présente des schémas d’utilisation prévisibles et exige une disponibilité continue, les instances réservées sont probablement la meilleure option.
En résumé, le choix entre Azure Spot VMs et instances réservées dépend de vos besoins en matière de coûts, de flexibilité et de fiabilité.
Conclusion
Les Azure Spot VMs sont une excellente solution pour un cloud économique. Elles peuvent offrir des remises substantielles, parfois jusqu’à 90 % par rapport au prix à la demande.
Elles sont particulièrement adaptées aux charges de travail flexibles et tolérantes aux interruptions : traitements par lots, environnements de développement et de test, ou toute application qui n’exige pas une disponibilité permanente. Pour ces usages, les Spot VMs permettent de réduire fortement les coûts.
Pour en savoir plus sur les Azure Spot VMs, consultez ces ressources :
- Azure Documentation : la documentation officielle Azure est un excellent point de départ, avec des guides détaillés, des bonnes pratiques et des références techniques sur l’utilisation des Spot VMs.
- Community Forums and Support : les forums communautaires Azure et les canaux de support sont précieux pour obtenir des réponses ciblées et apprendre des retours d’expérience d’autres utilisateurs.
Si cet article vous a plu, consultez aussi : Azure DevOps Interview Questions et Using GPT on Azure.
Je suis rédacteur technique chez MathWorks. Mon travail consiste à éditer et à rédiger la documentation relative aux produits MathWorks sur Amazon Web Services, Microsoft Azure, Docker et NVIDIA.
