Premiers pas avec l'environnement Pangeo


Pangeo se définit comme une plateforme communautaire pour le Big Data en Géoscience. Les chercheurs impliqués dans le projet Pangeo ont décidé de s'appuyer sur des paquetages python comme Dask, Xarray et Iris avec Jupyter comme interface de programmation.

Dans la suite de cette page, nous n'entrerons pas dans les détails du fonctionnement des paquetages Dask et Jupyter Notebook mais fournissons les étapes minimales pour obtenir un environnement de travail Dask déployé en mode Cluster distribué Dask.distributed à l'aide de Dask-Jobqueue.

1. Activer l'environnement Pangeo sur Summit2

2. Travailler sur UN nœud de calcul

Cette section décrit comment utiliser un nœud de calcul pour travailler sous Dask. Elle s'inspire de la documentation dask.distributed on a single machine.

3. Travailler avec plusieurs nœuds de calcul

Dans ce mode, lancer Jupyter Lab sur un nœud comme précédemment et utiliser le module python dask_jobqueue pour démarrer des jobs workers comme indiqué dans la documentation dask_jobqueue.

Pour démarrer un processus worker par nœud qui exploite tous les cœurs et toute la mémoire du nœud sans avoir à se préoccuper du type de nœud au sein d'une même partition, il est préférable d'utiliser le module summit2_jobqueue spécialement écrit pour Summit2 (voir section Module summit2_jobqueue).

Pour des raisons de performance et de bon fonctionnement, choisir une partition Slurm qui vérifie ces 2 contraintes :

  • partition avec des nœuds équipés de cartes IB, de manière à ce que les workers communiquent via l'interface réseau rapide ib0

  • partition qui ne s'étend pas sur plusieurs armoires (cas de la partition any par exemple) car les réseaux IB de chaque armoire sont indépendants.

Partitions possibles : mpib40_SIRO mpib40_POM mpib40_B0 mpib40_MESO mpib40_B1 o3piasiib fuxi_* edi_15IB pom16ib crocoib

3.1. Module dask_jobqueue

Avec cluster=SLURMCluster(...,processes=2,...), un job worker est configuré pour lancer 2 processus worker.

La commande cluster.scale(4) ne démarre alors que 2 jobs worker soit un total de 4 processus worker. En effet, l'argument X dans cluster.scale(X) designe le nombre de processus worker (et non pas le nombre de jobs) !

3.2. Module summit2_jobqueue

Récupérer le source du module summit2_jobqueue.py et le placer dans le répertoire d'où est lancé Jupyter Lab ou un répertoire pointé par la variable d'environnement PYTHONPATH.

Ce module est une adaptation du module dask_jobqueue. Il permet de simplifier l'instanciation de la classe SLURMCluster tout en configurant par défaut un job worker de la manière suivante :

- un seul worker/job
- un seul job/nœud (mode exclusive de Slurm)
- tous les cpus du nœud alloués pour le job et disponibles pour le processus worker
- toute la mémoire du nœud est disponible pour le processus worker

Le principe d'utilisation est identique à précédemment, Il faut toutefois modifier le fichier 'jobqueue.yaml' puis simplement changer la ligne d'import de la classe SLURMCluster comme détaillé ci-dessous.

4. Dashboard de Dask

Le dashboard est disponible dès que les classes SLURMCluster ou LocalCluster ont été instanciées. Pour accéder à la page Dask dashboard lorsque vous travaillez avec JupyterLab, ouvrir un nouvel onglet dans le navigateur Web et saisir l'adresse :

http://localhost:8888/proxy/8787/status

Naviguer sur les différents onglets de la page pour afficher diverses informations sur les processus workers. Pour plus d'informations, voir la documentation Diagnostics Dashboard et Web Interface.

Si vous ne travaillez pas sous JupyterLab/Notebook mais directement avec python ou Ipython :

  1. Ouvrir une fenêtre terminal sur VOTRE PC et exécuter la commande :

    ssh -N -L8787:nX:8787 summit2

    en remplaçant nX par le numéro du nœud alloué pour travailler.

  2. Lancer un navigateur Web sur VOTRE PC, puis saisir l'adresse ci-dessous :

    http://localhost:8787/status

5. Terminer la session Jupyter Lab

Pour tuer tous les processus worker (et terminer les jobs correspondants) :

mettre à 0 le nombre de workers et cliquer sur 'Scale' dans le widget ou bien exécuter une cellule contenant la ligne :

cluster.scale(0)


CatégorieDocUnix

WikiSummit2: PangeoEnv (dernière édition le 2021-04-27 13:28:52 par DidierGazen)