Cluster de calcul : soumettre des jobs R dans un environnement Conda

Les clusters permettent de faire tourner des calculs (séquentiel ou parallèle) nécessitant une grande quantité de ressources (coeurs, noeuds …) et de mémoire. En utilisant Conda, il est possible d’utiliser un environnement dédié à notre analyse, avec les packages R qui nous intéressent. Les étapes suivantes supposent que l’on est connecté en SSH sur un cluster de calcul.

Ce tutoriel a été réalisé sur le cluster Genouest.

Création de l’environnement

En SSH, on lance les commandes suivantes.

# Pour se connecter sur un noeud de calcul
srun --pty bash 

# Pour créer un environnement conda dédié à notre analyse
. /local/env/envconda.sh 

# Exemple pour pouvoir utiliser le package sf pour des calculs spatiaux
conda create -p ~/my_env_r_spatial r-sf 

Fichier R

On crée un fichier pour l’exemple : test_spatial.R, avec le code suivant.

library(sf)

demo(nc, ask = FALSE, echo = FALSE)
print(st_geometry(nc))

Shell script

Pour soumettre un job sur le cluster, on a besoin d’un shell script. On crée un fichier pour l’exemple : test_spatial.sh, avec le code suivant.

#!/bin/sh

#On charge Conda
. /local/env/envconda.sh 

#On active l'environnement qu'on a créé auparavant
conda activate ~/my_env_r_spatial

#On lance le script R
Rscript test_spatial.R

On transfère esnuite les fichiers test_spatial.R et test_spatial.sh via FTP sur le serveur de calcul.

Soumettre le job

Sur le cluster, en SSH, on lance la commande suivante.

sbatch testconda.sh

Et à la fin du job, on retrouve le fichier de sortie dans le répertoire, slurm-1082570.out dans mon cas car je n’ai pas précisé un nom de fichier.

Output

La sortie prouve que tout a bien fonctionné.

On peut adapter les étapes précédentes en fonction de nos besoins. Par exemple, la fonction pdredge du package MuMIn permet de lancer une sélection automatique de modèles en parallèle sur plusieurs noeuds de calcul. Attention cependant à utiliser la sélection automatique de variables avec parcimonie, en ayant conscience des inconvénients…