À cette échelle (ou même à une échelle plus petite), nous pouvons commencer à faire une réelle différence en matière d'émissions de carbone (CO2) en faisant des choix intelligents lors de la planification et de l'orchestration des calculs.
Ce billet présente quelques-unes des idées sur lesquelles nous avons travaillé et explique comment vous pouvez utiliser ces concepts dans le cadre de vos propres applications.
Fait amusant : il peut être difficile de comprendre l'ampleur de cette échelle, mais pour donner un exemple des problèmes que nous avons rencontrés, nous avons dû discuter avec les régions Azure individuelles pour vérifier que nous pouvions obtenir la capacité allouée pour exécuter ces calculs simultanément sur autant de nœuds de calcul.
Historique du problème et de la solution
Notre partenaire (travaillant dans le secteur de l'énergie) a besoin de simuler ses installations de production avec un grand nombre de paramètres différents, et sur une longue période de temps, pour déterminer où, quand et quelle taille il peut construire ses nouveaux sites de production.
Chaque simulation est un travail en plusieurs étapes, chacune comportant un ensemble de tâches de calcul (chaque tâche prenant environ 3 minutes). Une fois toutes les tâches de calcul terminées, les données sont consolidées et déplacées vers l'étape suivante de la simulation à l'aide d'un modèle MapReduce. L'une de ces étapes peut comporter jusqu'à 20 000 tâches de calcul individuelles susceptibles d'être exécutées en parallèle.
Il nous a été demandé de les aider à déplacer ces simulations de leur supercalculateur sur site vers le nuage Azure, afin de permettre les grandes variations de calcul nécessaires. Dans le cadre de ce projet, ils étaient également très intéressés par la réduction des émissions de CO2 dans la mesure du possible. Le tout dans le cadre d'un coût acceptable de réduction des émissions de CO2. En d'autres termes, il est raisonnable de payer un peu plus pour un gain important, mais pas beaucoup plus pour un gain très faible.
Le traitement de ces travaux prend beaucoup de temps. En théorie, nous pourrions faire tourner un grand nombre de nœuds de calcul pour terminer le travail aussi vite que possible, mais cela ne serait pas très efficace car le démarrage et l'arrêt d'une machine virtuelle prennent du temps.
Azure Batch était la solution idéale à ce problème. Azure Batch est une plateforme HPC (High Performance Compute) entièrement gérée pour la planification des tâches et la gestion des calculs à l'échelle du cloud.
Que peut-on faire pour réduire les émissions de CO2 ?
La Green Software Foundation a défini un ensemble de principes de logiciels verts qui peuvent être utilisés pour nous guider dans l'écologisation de nos logiciels :
1 - Efficacité carbone : Émettre le moins de carbone possible.
2 - Efficacité énergétique : Utiliser le moins d'énergie possible.
3 - Conscience du carbone : Faire plus lorsque l'électricité est plus propre (plus de nucléaire et de sources d'énergie renouvelables) et faire moins lorsque l'électricité est plus sale (plus de combustibles fossiles).
4 - Efficacité du matériel : Utiliser le moins possible de carbone incorporé.
5 - Mesure : Ce que vous ne pouvez pas mesurer, vous ne pouvez pas l'améliorer.
6 - Engagements climatiques : Comprendre le mécanisme exact de réduction du carbone.
Les principes ci-dessus sont tous des principes directeurs que nous devrions nous efforcer de suivre. La liste ci-dessous n'est pas exhaustive, mais ne contient que quelques exemples de la manière dont nous pouvons rendre nos logiciels plus écologiques :
1 - Hébergement dans le centre de données le plus efficace.
2 - Maintenir une utilisation élevée du matériel. Ne pas laisser le matériel inactif. Par exemple, Azure Advisor propose des règles simples pour vous aider à dimensionner correctement vos machines virtuelles.
3 - Éteindre le matériel lorsqu'il n'est pas utilisé. Par exemple, Azure Web App auto-scaling ou Azure Kubernetes Service auto-scaler. Si possible, réduire à zéro.
4 - Écrire un code efficace qui utilise le moins de cycles de CPU possible.
Remarque : le refroidissement des serveurs entraîne un gaspillage important d'énergie et d'argent. Les centres de données à grande échelle, comme Azure, sont généralement les plus efficaces. Les centres de données à grande échelle sont optimisés en permanence et sont souvent situés à proximité de sources d'énergie renouvelables.
Dans ce billet, nous nous concentrerons sur la sensibilisation au carbone. Au cours de la mission, nous avons abordé tous les principes des logiciels verts.
L'emplacement est important
Nous savons que chaque pays ou même partie de pays a son propre mélange de sources d'énergie pour l'électricité, et les sources varient considérablement en ce qui concerne la quantité de CO2 qu'elles émettent.
Si l'on prend un exemple (en utilisant Electricity Maps), on peut voir qu'à un moment donné, les Pays-Bas, où se trouve la région d'Europe de l'Ouest-Azure, avaient un mix électrique composé principalement d'éolien, de solaire et de gaz, ce qui donne une moyenne de 111g CO2eq/kWh. Cela signifie que l'intensité carbone de l'électricité dans cette région est de 111g CO2eq/kWh.
Note : L'intensité de CO2 est la quantité de CO2eq émise par kilo watt heure (kWh) produit. Le CO2eq (équivalent CO2) est une mesure du potentiel de réchauffement planétaire du gaz, qui tient compte des différences de potentiel de réchauffement planétaire entre les différents gaz. Par exemple, le méthane a un potentiel de réchauffement global de 25, ce qui signifie qu'un gramme de méthane équivaut à 25 grammes de CO2.
Dans le même temps, le centre-nord de la Suède, où se trouve la région de Sweden Central Azure, avait un mix moyen de 15 g CO2eq/kWh, car il s'appuyait presque exclusivement sur des sources d'énergie renouvelables telles que l'éolien et l'hydroélectricité, au détriment du charbon et du gaz.
Il convient toutefois de noter qu'il s'agit d'un mélange moyen pour cette région, ce qui ne signifie pas nécessairement que l'électricité réelle provenant de la prise a exactement cette intensité de carbone, mais comme l'électricité circule librement au sein d'une région de réseau, il s'agit d'une moyenne de toute l'électricité de cette région.
Si l'on s'en tient à ces chiffres et à ce moment précis, on peut penser que le simple fait de déplacer le calcul vers le centre de la Suède permettrait de réduire l'empreinte CO2 d'une simulation d'un ordre de grandeur de 10, ce qui représente une économie significative. Nous verrons plus tard comment calculer ces économies.
Electricity maps et WattTime proposent tous deux une API permettant d'obtenir des données en temps quasi réel, mais même une sélection statique de l'endroit où héberger votre charge de travail peut faire une grande différence.
L'importance de la modernité de votre centre de données
Un autre facteur relatif à la localisation, qui est malheureusement un peu plus difficile à mesurer, est que les centres de données ne sont pas construits en même temps et que de nouveaux centres de données sont ajoutés en permanence. En raison de cette volatilité, nous n'avons pas pu utiliser ce facteur pour guider nos décisions, mais les centres de données de la nouvelle génération sont nettement plus efficaces sur le plan énergétique que les anciens.
Le temps compte
Si l'intensité de CO2 de certaines régions est assez stable dans le temps, d'autres varient considérablement au cours de la journée, des mois et des saisons. Par exemple, lors d'une journée ensoleillée, l'intensité de CO2 aux Pays-Bas peut être de 111 g, mais la nuit, lorsque l'énergie solaire n'est pas disponible, ils peuvent avoir recours au charbon ou au gaz, ce qui donne une intensité de CO2 très différente.
Dans d'autres régions, il peut être préférable de programmer les emplois la nuit, lorsque les usines et autres grands consommateurs d'énergie n'utilisent pas toute l'énergie, afin d'éviter de devoir importer de l'énergie ou d'utiliser des sources non renouvelables ou à faible teneur en carbone.
Nœuds ponctuels et machines virtuelles dédiées
Les nœuds ponctuels et les machines virtuelles dédiées ont également une grande influence sur la consommation d'énergie et les coûts. L'idée derrière les instances de nœuds ponctuels est qu'au lieu d'allouer un ensemble de VM que vous pouvez utiliser ou non, vous prenez les "restes" des VM dédiées d'autres personnes lorsqu'elles ne les utilisent pas. De cette manière, la capacité des machines virtuelles est mieux utilisée car elles ne tournent pas au ralenti.
L'avantage de ce système, outre le fait qu'il y a moins de machines virtuelles qui tournent au ralenti, est que vous bénéficiez d'une réduction pouvant aller jusqu'à 90 % par rapport aux machines virtuelles dédiées.
L'inconvénient, bien sûr, c'est que votre charge de travail peut être expulsée à tout moment si les prix au comptant sont plus élevés que ce que vous êtes prêt à payer ou si Azure n'a plus de capacité de calcul.
Cela signifie que si vous exécutez une charge de travail de longue durée, vous pouvez perdre vos données à tout moment et vous devez donc vous assurer d'avoir des points de sauvegarde fréquents. Dans notre cas, ce n'était pas un problème, nos tâches individuelles duraient environ 3 minutes, donc si nous étions expulsés, il suffisait de réexécuter la tâche en demandant un nouveau nœud.
Calculs tenant compte du carbone
Nous avons travaillé avec la Green Software Foundation pour étendre leur SDK Carbon Aware (CA-SDK) open-source afin de prendre en charge à la fois le décalage temporel et le décalage géographique. Le CA-SDK peut vous aider à déterminer quand et où la charge de travail peut être exécutée avec le moins d'émissions de carbone possible.
- L'exécution des charges de travail insensibles au facteur temps peut être reportée dans le futur.
- Les charges de travail peuvent être déplacées vers d'autres centres de données.
Code : | Sélectionner tout |
GET emissions/forecasts/current?location=swedencentral&dataStartAt=2023-10-24T14:00:00Z&dataEndAt=2023-10-25T08:00:00Z&windowSize=10
Le résultat de la requête comprendra le moment optimal pour l'exécution et une prévision des émissions de carbone pour la période spécifiée.
Code : | Sélectionner tout |
1 2 3 | [ { "location": "swedencentral", "dataStartAt": "2023-10-24T14:00:00Z", "dataEndAt": "2023-10-25T08:00:00Z", "windowSize": 10, "optimalDataPoint": { "location": "swedencentral", "timestamp": "2023-10-24T23:30:00Z", "duration": 10, "value": 27.4451043375 }, "forecastData": [ { "location": "swedencentral", "timestamp": "2023-10-24T14:00:00Z", "duration": 10, // minutes from the timestamp "value": 64.02293146 }, ... ] } ] |
Équilibrer les coûts et les émissions de CO2
Pour le bien de l'environnement sur la planète Terre, nous devrions nous efforcer de limiter les émissions de carbone. Cependant, votre charge de travail n'est peut-être pas le meilleur investissement pour l'entreprise dans le cadre de ses efforts de développement durable. Il peut y avoir d'autres projets au sein de l'entreprise avec des fruits à portée de main qui peuvent réduire les émissions de carbone de manière beaucoup plus importante avec le même investissement.
Les défis auxquels les parties prenantes de l'entreprise ont été confrontées sont les suivants : payer 5 % de plus pour une réduction de 50 % des émissions de carbone est acceptable, mais payer 50 % pour une réduction de 5 % des émissions de carbone ne l'est pas.
Pour surmonter cette difficulté, nous devions trouver un moyen de donner la priorité à tout coût supplémentaire lié au déplacement de la charge de travail vers une autre région Azure par rapport à la réduction des émissions de carbone. Le déplacement d'une charge de travail vers une autre région Azure entraîne un coût de déplacement des données et le prix de la même ressource Azure peut également varier.
Pour résoudre ce problème, nous avons créé le kit de développement logiciel (SDK) de l'économie du carbone (CE-SDK). Il utilise le CA-SDK pour obtenir le moment et l'emplacement optimaux pour l'exécution, puis le CE-SDK utilise l'API de tarification au détail d'Azure pour calculer le coût du déplacement de la charge de travail vers une autre région Azure. Le CE-SDK ne déplace pas la charge de travail et n'en calcule pas le coût, mais il peut être utilisé pour décider où et quand exécuter la charge de travail.
Le CE-SDK utilise une pondération normalisée pour donner la priorité à toute réduction des émissions de carbone par rapport à tout coût supplémentaire.
De cette manière, les parties prenantes de l'entreprise peuvent décider du montant qu'elles sont prêtes à payer pour une empreinte carbone plus faible.
Évolution vers le haut et vers le bas
Presque toutes les charges de travail, qu'il s'agisse d'une boutique en ligne ou d'une simulation par lots, présentent des pics et des creux dans leurs besoins de calcul. La possibilité d'augmenter et de diminuer la capacité de calcul est un facteur clé pour réduire l'empreinte carbone de votre charge de travail.
C'est quelque chose que vous pouvez faire sur site, mais c'est beaucoup plus facile à faire dans le nuage avec un simple appel d'API. Les solutions PaaS (Platform as a Service) telles qu'Azure Batch et Azure Web App intègrent des capacités de mise à l'échelle automatique qui peuvent vous aider à augmenter ou à réduire votre charge de travail.
Dans notre cas, nous avons pu passer de zéro à 400 000 cœurs. Plus important encore, nous avons pu réduire les émissions de CO2 lorsque la puissance de calcul n'était pas nécessaire.
Un serveur web ne peut normalement pas être réduit à zéro car vous ne savez jamais quand un utilisateur visitera votre site. Cependant, vous pouvez réduire l'échelle à une seule instance pendant la nuit, lorsque vous savez qu'aucun utilisateur ne visitera votre site.
Source : Un article de Tess Ferrandez Norlander et Anders Lybecker : Saving CO2 using location and time shifting in Azure traduit par Sandra Coret.
Et vous ?
Que pensez-vous de ces solutions apportées par Microsoft pour économiser les émissions de CO2 ?
Voir aussi :
Meta va acheter près de 7 millions de crédits carbone, l'objectif de Meta est de réduire son empreinte carbone, et de soutenir des projets environnementaux et sociaux à travers le monde
Microsoft signe un contrat géant d'élimination du carbone pour éponger le CO2 à l'aide de calcaire, certains y voient « une opération de greenwashing qui repose sur une technologie coûteuse »
AWS lance un outil gratuit de suivi des émissions de carbone qui favorise le cloud AWS par rapport aux systèmes sur site, revendiquant une réduction de 88 % de l'empreinte carbone des entreprises