🖥️ Diapositives du cours — Séance 27 (ven. 4 déc.)
Tout ce cours, jusqu’ici, tourne sur un portable, et c’est délibéré : petites données et itération rapide enseignent plus par heure que grosses données et longues files d’attente. Mais les vrais projets finissent par déborder. Cette page est la carte pour ce moment-là.
Quand vous avez débordé du portable¶
Deux symptômes, un pour la mémoire et un pour le temps :
- Données plus grosses que la RAM. Pandas veut votre table en mémoire plusieurs fois de suite pendant une jointure ou un
groupby. Dès que l’ensemble de travail dépasse quelques dizaines de gigaoctets, ou bien vous passez au flux (lectures par blocs (chunks), Zarr, chargement paresseux Dask/xarray), ou bien vous allez sur une machine avec plus de mémoire. Essayez d’abord le flux ; c’est gratuit. - Entraînement plus long que quelques heures. Un modèle qui s’entraîne en 10 minutes vous laisse mener l’étude à 6 exécutions de la section 5.2 pendant la pause déjeuner. Un modèle qui s’entraîne en 10 heures fait coûter une journée à chaque erreur, et rend la recherche d’hyperparamètres impossible. Un seul GPU correct apporte souvent un facteur 10 à 50 par rapport au CPU d’un portable pour les modèles profonds.
Un troisième symptôme, plus discret : vous devez lancer beaucoup de travaux indépendants (traitement par station, balayages de graines aléatoires, plis de validation croisée). C’est du parallélisme trivial, et c’est exactement ce à quoi servent les grappes (clusters).
Avant de passer à l’échelle, profilez. Beaucoup de problèmes « il me faut une grappe » sont en réalité une boucle en O(n²), du float64 là où le float32 suffirait, ou un rechargement des données à l’intérieur de la boucle. Une heure de profilage coûte moins cher que n’importe quel GPU.
L’échelle des options¶
Ne montez que jusqu’où vous en avez besoin.
Serveurs de laboratoire, mésocentres et HPC universitaire¶
C’est en général votre premier arrêt, et le moins cher. En France, la plupart des sites universitaires ont accès à un mésocentre régional ou d’établissement — une trentaine de structures mutualisées, coordonnées par le groupe Calcul du CNRS en lien avec GENCI —, et c’est là, plutôt que sur les calculateurs nationaux, que tourne l’essentiel des projets de master et de thèse ; le compte s’obtient auprès du laboratoire, de la direction du numérique ou du mésocentre lui-même, sans passer par un appel national. Aux États-Unis, les étudiantes et étudiants de l’UW ont accès à Hyak. Les grappes font tourner un ordonnanceur, presque toujours SLURM. Vous décrivez le travail ; l’ordonnanceur lui trouve un nœud :
sbatch --gres=gpu:1 --mem=64G --time=08:00:00 --wrap "pixi run python train.py --config sweep3.yaml"Votre pile de reproductibilité se transporte telle quelle : clonez le dépôt sur la grappe, pixi install (ou construisez un conteneur Apptainer à partir de votre image), exécutez les mêmes scripts. Si votre workflow ne fonctionne que sur votre portable, la section 5.1 n’est pas encore terminée.
Allocations nationales et européennes¶
En France, le temps de calcul national s’obtient sur dossier auprès de GENCI, via le portail eDARI, guichet unique des trois centres nationaux : l’IDRIS, unité du CNRS à Orsay, héberge Jean Zay, le calculateur de référence de l’IA académique française, et c’est là que vont la plupart des projets d’apprentissage profond — l’IDRIS opère à ses côtés DALIA, une machine Grace-Blackwell dédiée à la recherche académique ouverte, elle aussi demandable par eDARI ; le TGCC (Joliot-Curie), exploité par le CEA, et le CINES (Adastra), à Montpellier, complètent le dispositif. Deux voies d’accès, et deux seulement : l’Accès Dynamique, ouvert en permanence, de petite taille et rapide à obtenir, dimensionné pour un projet de thèse qui démarre — l’équivalent des allocations d’exploration décrites ci-dessous —, et l’Accès Régulier, deux campagnes par an avec évaluation par un comité thématique, pour les demandes plus grosses. À l’échelle européenne, EuroHPC ouvre des appels sur les supercalculateurs pré-exascale (LUMI en Finlande, Leonardo en Italie, MareNostrum 5 en Espagne) et exascale (JUPITER, en Allemagne), avec des accès Benchmark et Development légers, à guichet mensuel, destinés justement à tester un code avant de demander gros. L’EOSC (European Open Science Cloud) fédère par ailleurs des services de données et de calcul pour la recherche européenne — son nœud européen, l’EOSC EU Node, est ouvert depuis 2024 —, et c’est souvent par là que transitent les jeux de données que vous voudrez lire.
Aux États-Unis, NSF ACCESS accorde du temps de calcul gratuit sur les systèmes nationaux aux chercheuses et chercheurs américains — y compris des nœuds GPU bien plus gros que le matériel de laboratoire. Les allocations « Explore » sont petites, rapides à obtenir et dimensionnées pour un projet de master ou de thèse ; votre encadrante ou encadrant peut en détenir de plus grosses.
La règle est la même des deux côtés de l’Atlantique : si votre projet est un travail de recherche financé, demandez une allocation avant de payer un fournisseur cloud.
Cloud commercial (AWS, GCP, Azure)¶
Le cloud vend deux choses qui peuvent vous intéresser : du calcul élastique (cent machines pendant une heure) et du stockage objet à côté des jeux de données publics. Les pièces à connaître :
- Le stockage objet (S3 / GCS / Azure Blob) : des espaces de noms plats d’objets adressés par URL, pratiquement infinis, peu chers à stocker, facturés à l’accès et à la sortie (egress). La plupart des archives géoscientifiques modernes (Sentinel, ERA5, données sismiques sur AWS Open Data) vivent là.
- Les instances GPU spot / préemptibles : le même matériel avec 60 à 90 % de remise, à la réserve près que le fournisseur peut le reprendre avec quelques minutes de préavis. Parfait pour l’entraînement à condition d’écrire régulièrement des points de sauvegarde (checkpoints) — ce que vous devriez faire de toute façon.
- La discipline des coûts : estimez avant de lancer (chaque fournisseur a un calculateur tarifaire : prix de l’instance × heures × nombre, plus stockage et sortie) ; posez une alerte de facturation dès le premier jour, avant la première instance, et non après la première surprise ; éteignez ce qui tourne — une instance GPU inactive se facture exactement comme une instance occupée ; et privilégiez les schémas d’accès sans frais de sortie (calculer dans la même
regionque les données).
Une personne qui laisse tourner un compte cloud sans plafond apprend la discipline des coûts exactement une fois. Posez l’alerte d’abord.
À l’échelle de l’enseignement : Colab et Codespaces¶
Google Colab donne un GPU gratuit (bridé) attaché à un carnet, et GitHub Codespaces donne une machine VS Code jetable câblée à votre dépôt. Les deux conviennent aux travaux de cours, aux démonstrations et à l’essai d’une idée avant de demander de vraies ressources. Ni l’un ni l’autre n’est une plateforme de recherche : les sessions sont éphémères, le matériel imprévisible, et les travaux longs se font tuer. Traitez-les comme du brouillon.
Environnements restreints¶
Tout ce qui précède suppose un accès sortant ouvert à Internet : pixi install qui atteint conda-forge et PyPI, l’intégration continue sur github.com, des outils de suivi d’expériences hébergés, des lectures anonymes dans des buckets publics. Les laboratoires nationaux, les enclaves sécurisées et beaucoup de réseaux gouvernementaux ou industriels bloquent tout ou partie de cela. Le workflow survit ; c’est le transport qui change. Quatre substitutions couvrent la plupart des cas.
Miroirs de paquets et installations hors ligne. Le workflow pixi du chapitre 1.3 et l’environnement verrouillé de 5.1 se transposent sans changement — seules les URL de canaux bougent. La plupart des sites restreints exploitent un miroir interne de conda-forge et de PyPI (Artifactory, Nexus, ou un simple miroir de fichiers) ; pointez pixi dessus avec une table [mirrors] dans sa configuration, et les mêmes pixi.toml + pixi.lock se résolvent en le même environnement. Pour un système entièrement isolé du réseau, résolvez et téléchargez sur une machine connectée, faites passer le cache de paquets (ou une image de conteneur, voir ci-dessous) par la passerelle de transfert homologuée, et installez hors ligne. Demandez à votre centre quel chemin est autorisé avant d’en inventer un.
Transfert de conteneur. Construisez là où vous avez Internet, exécutez là où vous ne l’avez pas. Construisez l’image Apptainer (ou faites un docker save vers une archive tar) sur une machine ouverte, faites entrer l’unique fichier .sif par la passerelle, et exécutez-le sans privilèges sur la grappe — aucun nœud de calcul n’a jamais besoin d’atteindre conda-forge. Sur un HPC restreint, c’est le chemin principal pour l’environnement, pas une note de bas de page : un seul fichier transporte toute la pile épinglée de 5.1.
Intégration continue auto-hébergée. Le motif des vérifications exécutables — environnement épinglé, tout réexécuter à chaque changement — est ce qui porte la garantie de 5.1 et le workflow recopiable de 5.3 ; GitHub Actions n’en est qu’un hébergeur parmi d’autres. GitLab CI, Jenkins, ou un exécuteur auto-hébergé à l’intérieur de l’enclave font le même travail dans un autre dialecte de YAML. Si github.com est inaccessible, une instance GitLab interne avec un seul exécuteur sur un poste de laboratoire préserve la propriété qui compte : ce qui compte, c’est ce que l’intégration continue parvient à exécuter.
Suivi d’expériences hébergé ou auto-hébergé. Weights & Biases, tel qu’utilisé en 5.2, est un service hébergé : chaque paramètre, métrique et artefact journalisé quitte votre réseau. Avant de l’adopter, confrontez ce choix à vos règles de classification des données — les métadonnées d’exécution peuvent être restreintes par le financeur ou soumises au contrôle des exportations, même quand le code ne l’est pas. MLflow auto-hébergé garde les mêmes enregistrements à l’intérieur de l’enclave, et l’outil de suivi en 30 lignes de JSON construit en 5.2 est conforme partout, puisqu’il n’écrit jamais que des fichiers locaux. Le même examen vaut pour l’accès aux données lui-même : les lectures anonymes de buckets publics de la section suivante sont des appels sortants que votre réseau peut bloquer, et le repli est un miroir institutionnel ou un sous-ensemble pré-acheminé par la passerelle.
Accès aux données optimisé pour le cloud : lire sur place¶
L’ancien workflow — télécharger l’archive, puis analyser — se brise quand l’archive fait 100 To. Les formats optimisés pour le cloud corrigent cela en rendant les lectures partielles peu coûteuses par HTTP : Zarr pour les tableaux N-dimensionnels découpés en blocs, Cloud-Optimized GeoTIFF (COG) pour les rasters, plus Parquet pour les tables. Vous ouvrez le jeu de données distant paresseusement et ne tirez que les blocs que votre calcul touche.
Le carnet 5.5 exécute ce motif pour de vrai, contre le magasin Zarr de 30 Tio de température de surface de la mer MUR sur AWS Open Data : ouverture paresseuse en ~12 s à partir d’une seule lecture de métadonnées de 10 Kio, un sous-ensemble régional sur dix jours qui déplace 60 Mio pour produire une réponse de 9 Mio — une part sur ~525 000 du magasin — et une moyenne mensuelle en flux qui ne garde jamais plus de quelques blocs en mémoire. Le motif à intérioriser : la requête se déplace vers les données, et seuls des résultats de la taille de votre réponse reviennent. Combiné à un calcul dans la même region cloud, cela remplace des téléchargements de téraoctets par des lectures de mégaoctets. fsspec fournit la même astuce pour presque n’importe quel dispositif de stockage, et pooch (section 5.3) reste le bon outil pour les petits fichiers versionnés dont votre dépôt dépend réellement.
Pour aller plus loin¶
- Livre SCOPED HPS, chapitre cloud : https://
seisscoped .org /HPS -book /chapters /cloud /Introduction .html — l’informatique en nuage pour la sismologie, en pratique. - Ressources cloud UW cloudmaven / eScience : https://
cloudmaven .github .io /documentation / — une prise en main du cloud à la sauce universitaire. - Projet Pangeo (https://pangeo.io/) — la communauté de référence pour l’analyse géoscientifique nativement cloud avec xarray, Dask et Zarr.