CAS D'USAGE · DATA CENTER · IA
Refroidir une salle IA. Dix scénarios, vérifiés.
Seize baies GPU donnent 2 MW à des plaques froides. Que se passe-t-il quand une pompe lâche à l'heure la plus chaude, quand le réseau tombe, quand une baie fuit, quand les prochains GPU demandent 200 kW par baie ? Chaque question est un cas de test du modèle, simulé dans OpenModelica, avec un verdict et sa marge.
01 / LE MODÈLE ARCLANG
Le système, écrit comme un modèle Arcadia.
Avant toute physique, la salle est un modèle système en ArcLang : qui a besoin de quoi (analyse opérationnelle), les exigences, les fonctions et leurs chaînes, une architecture logique avec ses variantes, une architecture physique aux ports typés, les modes de refroidissement et un scénario de panne. Le compilateur le vérifie : unités, physique des ports, traces, budget de 10 s de la chaîne d'isolation d'une fuite (8,5 s utilisées).
Un fichier contient l'exigence, l'architecture et le test qui la vérifie.
Une exigence, une variante de CDU, le nœud physique avec ses ports thermiques et ses signaux, la chaîne d'isolation d'une fuite avec son budget, et le cas de test qui simule une panne de pompe. Le verdict revient à l'exigence ; le jalon de production bloque une livraison tant qu'il échoue.
// examples/datacenter/ai-liquid-cooling/ai_liquid_cooling.arc (abridged) requirement "Pump redundancy" { id: "REQ-N1" description: "A CDU pump failing at full load leaves every GPU cold plate at or below 85 °C, without throttling" } component "CDU, three pumps (N+1)" { id: "LC-CDU-N1" variant: true pump_count: 3 pump_flow: 22 kg/s hx_conductance: 450 kW/K } node "Coolant distribution unit" { id: "PN-CDU" coolant_capacity: 8 MJ/K port "secondary" { physics: thermal flange: b } port out "coolant_flow" { is: "Signal" } } functional_chain "Leak isolation" { involves: ["SF-LEAK-DETECT", "SF-LEAK-DECIDE", "SF-LEAK-CLOSE"] latency_budget: 10 s } test_case "Pump failure at full load, two pumps" { verifies: ["REQ-N1"] simulate: { model: "CoolingPhysics.PumpFailureTwoPumps" configuration: "CFG-N" stop_time: 24 h } expects: ["max(\"PN-RACKS\".gpu_temperature) <= 85 °C", "min(\"PN-RACKS\".cap) >= 0.99"] } $ arclang verify ai_liquid_cooling.arc --test TC-PUMP-N ✗ TC-PUMP-N "Pump failure at full load, two pumps": FAIL FAIL min(gpuRacks.cap) = 0.6869 (short by 0.3031)
L'architecture physique (PAB) dans la visionneuse d'ArcLang, telle que arclang diagram -f html la dessine : nœuds, composants déployés, liens physiques (rouge) et échanges (bleu).
L'architecture logique (LAB) : une ligne de produits, trois points de variation et leurs variantes.
Les fonctions système (SAB) : la boucle d'arrivée et la chaîne d'isolation d'une fuite, chacune avec son budget de latence.
Les modes de refroidissement (MSM) : libre, assistance du groupe froid, dégradé, bridage.
Une panne de pompe pendant un entraînement (ES) : avec et sans pompe de secours.
02 / LA PHYSIQUE
La physique, de la puce à l'air extérieur.
L'architecture physique devient du Modelica : arclang export -f modelica en écrit la structure, dessinée, et les ingénieurs écrivent la physique de chaque nœud avec la bibliothèque standard Modelica.
Les baies GPU.
Seize baies de 120 kW ; 85 % de la chaleur part dans les plaques froides. Le GPU le plus chaud est en sortie du liquide, et une plaque froide conduit moins quand le débit baisse.
L'unité de distribution du liquide (CDU).
Le liquide des baies, ses pompes (deux, ou trois en N+1) et un échangeur à plaques vers l'eau du bâtiment, dont la conductance suit le débit.
Eau du bâtiment, aéroréfrigérants, groupe froid.
Les aéroréfrigérants donnent la chaleur à l'air extérieur ; un groupe froid complète les après-midi chauds. Son rendement est une part de Carnot : 4,7 à 35 °C, comme un vrai groupe à air.
La régulation.
Un PI tient l'arrivée du liquide à 32 °C, les ventilateurs d'abord, puis le groupe froid. Un second PI demande à l'ordonnanceur de brider les GPU dès que l'un dépasse 83 °C : un entraînement bridé est la défaillance à éviter.
Une ligne de produits.
Deux générations de baies (120 et 200 kW), trois CDU, deux tailles d'évacuation de la chaleur : quatre configurations, chacune vérifiée.
Le système dans OMEdit (OpenModelica 1.27.1), tel que arclang export -f modelica le dessine depuis l'architecture physique.
L'intérieur de la CDU : la masse thermique du liquide et l'échangeur à plaques, composants de la bibliothèque standard Modelica reliés aux connecteurs générés.
Les baies : la chaleur vers les plaques froides et le GPU le plus chaud, lu par son capteur.
03 / LES SCÉNARIOS
Dix questions, dix verdicts.
Chaque ligne est un cas de test du modèle ; arclang verify le simule dans OpenModelica sur une journée de référence à 35 °C, un entraînement démarrant à 1 h. Un échec est un résultat, pas un bug : il dit ce que la conception doit changer.
| Scénario | Verdict | Ce qu'il montre |
|---|---|---|
| Journée d'été de référence, trois pompes (N+1) | RÉUSSI | GPU à 76 °C au plus, arrivée du liquide à 36,4 °C au plus, PUE partiel 1,077. |
| Une pompe lâche à 14 h, deux pompes | ÉCHEC | Le débit est divisé par deux ; les GPU sont bridés à 69 % de leur puissance pour tenir 83 °C. |
| La même panne, trois pompes | RÉUSSI | La pompe de secours prend le relais. |
| Coupure de courant à 14 h | RÉUSSI | Pompes sur onduleur, ventilateurs sur le groupe électrogène après 30 s, groupe froid de retour après 10 min : les aéroréfrigérants seuls tiennent les GPU à 79 °C. |
| Groupe électrogène en retard de 1, 3 ou 5 min, avec ou sans ballon tampon | 5 SUR 6 | L'eau du circuit tient 3 min sans aucun refroidissement ; 5 min demandent un ballon tampon d'environ 30 m³. |
| Une baie fuit à 14 h, éteinte 10 à 60 s après l'alarme | 2 SUR 4 | Ses vannes se ferment en 8,5 s ; éteinte en 20 s au plus, ses GPU restent sous 95 °C, à 30 s ils atteignent 102 °C. Les autres baies continuent. |
| Baies de 200 kW sur l'installation actuelle | ÉCHEC | Les GPU sont bridés toute la journée : 82 % la nuit (le débit des pompes manque), 73 % l'après-midi. |
| Baies de 200 kW, CDU à grand débit, aéroréfrigérants plus grands, groupe froid de 1,6 MW | RÉUSSI | Aucun bridage, GPU à 77 °C, PUE partiel 1,075. |
| De 30 à 45 °C dehors × de 100 à 132 kW par baie | 9 SUR 12 | À 45 °C (et à 40 °C avec des baies de 132 kW), le groupe froid ne suffit plus et les GPU sont bridés. |
| Monte-Carlo sur les étés : 35 °C ± 3 K, de 110 à 132 kW par baie | RÉUSSI | 60 jours chauds sur 60 sans bridage : au moins 95 % au seuil de confiance de 95 %. |
04 / TROIS SCÉNARIOS DANS OMEDIT
Ce que disent les courbes.
Les mêmes modèles s'ouvrent dans OMEdit : on change un paramètre dans le navigateur de variables, on relance la simulation, on lit la courbe. La physique est un paquet Modelica que les ingénieurs écrivent et gardent ; ArcLang régénère la structure autour sans toucher une ligne.
Combien de temps l'eau tient-elle ?
Le réseau tombe à l'heure la plus chaude et le groupe électrogène démarre avec 5 minutes de retard : plus de ventilateurs, plus de groupe froid, les 1,6 MW vont dans l'eau du circuit. Le GPU le plus chaud passe de 76 à 83 °C, et l'ordonnanceur doit brider les GPU jusqu'au retour du refroidissement. Trois minutes passent sans encombre ; cinq demandent un ballon tampon.
Le GPU le plus chaud pendant la coupure, en kelvins (356 K = 83 °C), groupe électrogène en retard de 5 min.
Dimensionnement : un ballon tampon de 30 m³, ou un groupe électrogène garanti en moins de 3 minutes.
En combien de temps éteindre une baie qui fuit ?
Une baie fuit. La chaîne d'isolation ferme ses vannes en 8,5 s ; ses GPU n'ont alors plus de liquide et chauffent d'environ 1,25 K par seconde jusqu'à ce que l'ordonnanceur coupe la baie. Ici il attend 30 s : 102,5 °C. En 20 s au plus, ils restent sous 95 °C, et les quinze autres baies ne voient rien.
Le GPU le plus chaud de la baie isolée, éteinte 30 s après l'alarme.
Une exigence pour l'ordonnanceur : éteindre une baie qui fuit dans les 20 s qui suivent l'alarme.
Que changer pour des baies de 200 kW ?
La même salle avec des baies de nouvelle génération. Sur l'installation actuelle, les GPU ne tournent jamais à pleine puissance : les pompes ne déplacent pas assez de liquide (82 % même la nuit) et le groupe froid manque l'après-midi (73 %). Avec une CDU à grand débit, des aéroréfrigérants plus grands et un groupe froid de 1,6 MW, les baies tournent à 100 % toute la journée.
Part de la puissance des GPU autorisée sur la journée : installation actuelle (bleu), installation renforcée (rouge, à 1).
Le renforcement, chiffré depuis le modèle : débit de la CDU +64 %, aéroréfrigérants +70 %, groupe froid de 1,6 MW.
05 / POURQUOI EN ARCLANG
L'architecture et la physique, dans un seul modèle sous git.
- Traçable
- Chaque verdict est rattaché à une exigence ; le jalon de production bloque une livraison tant qu'un verdict échoue ou n'est plus à jour.
- Relisible
- Le modèle est du texte sous git : une pull request montre quelle exigence, quel paramètre et quel verdict un changement touche.
- Ouvert
- OpenModelica et la bibliothèque standard Modelica ; la physique s'ouvre dans OMEdit ; l'export SysML v2 est validé par l'implémentation pilote de l'OMG.
- Reproductible
- Les mêmes commandes tournent en intégration continue : une modification de la conception relance les dix scénarios et dit ce qui a bougé.
Le modèle et sa physique sont ouverts : ai_liquid_cooling.arc et CoolingPhysics.mo, dans le dépôt ArcLang (dans les binaires à partir de la prochaine version).