L’infrastructure de Migale
Ce post a pour objectif de vous présenter et de vous apprendre à utiliser l’infrastructure mise à disposition par la plateforme Migale : modalités d’accès (création de compte, connexion aux ressources), espaces de travail, outils et banques de données, utilisation du cluster de calcul.
Présentation de Migale
La plateforme de bioinformatique Migale existe depuis 2003 au sein de l’unité MaIAGE. Elle a pour missions de fournir une infrastructure adaptée pour la bioinformatique et des services à la communauté des sciences de la vie.
La plateforme Migale fait partie de l’infrastructure nationale de bioinformatique IFB. Migale fait également partie de l’infrastructure France-Génomique qui regroupe des plateformes de séquençage et des plateformes de bioinformatique traitant ce type de données. En 2018 la plateforme a été reconnue ISC par INRAE. Sous l’impulsion de ses départements scientifiques de tutelle, elle compose, avec les 3 plateformes de bioinformatique GenoToul Bioinfo, PlantBioinfoPF et SIGENAE, l’IR en bioinformatique, BioinfOmics, d’INRAE.
Infrastructure de calcul scientifique
Notre infrastructure informatique comprend un cluster de calcul, des serveurs, des machines virtuelles hébergeant des applications et un système de stockage. Tous sont interconnectés.
Les utilisateurs peuvent se connecter à nos ressources par le biais d’interfaces web comme Galaxy, Rstudio ou en ligne de commande. Le point d’entrée (serveur frontal) est le serveur front
(précédemment appelé migale
). Pour s’y connecter, il faut au préalable demander l’ouverture d’un compte.
Vous êtes responsable de l’utilisation qui est faite de votre compte. Celui-ci est personnel et il est interdit de le partager avec d’autres personnes (stagiaire, doctorant, encadrant…).
Nous surveillons l’usage qui est fait de Migale et pouvons interrompre vos calculs si ceux-ci ne sont pas conformes aux règles d’usage décrites dans ce document, contreviennent à la charte d’utilisation des ressources informatiques INRAE ou empêchent le bon usage partagé des moyens mis à disposition.
Obtenir un compte
Un compte sur la plateforme donne un accès à cette infrastructure.
Pour tous les exemples à suivre, l’utilisateur sera stage01
, du groupe maiage
.
L’obtention d’un compte est possible pour toute personne travaillant sur des données des sciences de la vie. Le formulaire est accessible sur le site de la plateforme : https://migale.inrae.fr/ask-account. Le compte est ouvert le temps du contrat des non permanents (renouvelable sur demande) et illimité pour les permanents.
L’adresse mail demandée est obligatoire. Elle sera ajoutée à la liste de diffusion (user-migale@groupes.renater.fr) regroupant tous les utilisateurs. Cela permet à la fois une diffusion d’informations concernant les interruptions de service, les nouveaux outils disponibles, les changements importants… Pensez à nous avertir si vous en changez !
Connexion au serveur front
Le serveur front
est le point d’accès à notre infrastructure ; c’est un serveur qui utilise l’environnement Unix (Ubuntu). Son accès peut se faire de façon différente suivant le système d’exploitation de l’utilisateur (Unix, MacOS ou Windows).
L’environnement Unix du serveur front
est accessible via le terminal, qui peut être ouvert avec Ctrl + Alt + T
.
local:~$ ssh -X stage01@front.migale.inrae.fr
Password:
Le mot de passe, fourni au moment de la demande de compte, est requis.
Le mot de passe entré ne s’affiche pas à l’écran pour des raisons de sécurité. Soyez bien concentrés lors de la saisie.
S’affiche alors à l’écran un message d’accueil ainsi que des instructions génériques et actualités.
local:~$ ssh -X stage01@front.migale.inrae.fr
stage01@front:~$
Mac OS est livré avec un terminal Unix, l’application “Terminal.app”. une fois lancée, cell-ci vous donne accès à un terminal qui s’utilise de la même façon que sous Unix. Les utilisateurs les plus avancés pourront installer le logiciel iTerm2 qui apporte au terminal des fonction avancées (tabs, panneaux, profils d’utilisation selon les serveurs,…)
MobaXterm propose une application logicielle permettant d’utiliser sous Windows les commandes Unix/Linux. Ce logiciel est gratuit et très simple d’utilisation. Pour se connecter, il faut spécifier l’adresse de l’hôte distant (remote host), en l’occurrence front.migale.inrae.fr
, le nom d’utilisateur (username), et enfin le mot de passe.
Changer son mot de passe
Le mot de passe fourni au moment de la création du compte est donné par l’administrateur système. Il faut impérativement le changer via ce site web : https://ssp.migale.inrae.fr/.
Votre mot de passe doit être sécurisé et doit répondre à un certain nombre de règles (longueur, complexité,…).
Clé SSH
Pour ne pas avoir à fournir le mot de passe à chaque connexion, il est possible de créer une clé ssh. Cela permet d’éviter les oublis et évite la perte de temps due aux fautes de frappe du mot de passe. L’authentification se fait par clé, de façon tout aussi sécurisée.
# Création d’une clé (publique et privée)
local:~$ ssh-keygen -t rsa -b 2048
# Envoi de la clé publique sur le serveur front
local:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub stage01@front.migale.inrae.fr
# Connexion sans mot de passe
local:~$ ssh -X front.migale.inrae.fr
stage01@front:~$
Sécurité
L’ensemble des ressources accessibles par mot de passe sont surveillées par le logiciel fail2ban
. Celui-ci surveille les tentatives de connexion sur nos services. Après 6 connexions infructueuses (mauvais nom d’utilisateur ou mot de passe), l’utilisateur doit attendre 10 minutes avant de pouvoir se reconnecter. Après 15 banissements temporaires, l’utilisateur est banni définitivement. Si cela vous arrive et que vous n’êtes pas un robot malveillant, contactez help-migale@inrae.fr pour une réinitialisation de votre compte.
Les espaces de travail
L’espace utilisateur
La figure 2 représente l’organisation des espaces utilisateurs. Ce sont des espaces personnels home
regroupe tous les espaces des utilisateurs. Bien entendu, un utilisateur ne peut accéder qu’à l’arborescence qui le concerne. Lors de la connexion, l’utilisateur est dirigé automatiquement dans le home directory
(entouré en violet sur la figure), correspondant au répertoire home/stage01
pour l’utilisateur stage01. À l’intérieur se trouvent un répertoire work
et un répertoire save
. Ces espaces sont soumis à des quotas qui sont indiqués dans le tableau 1.
Espace | Chemin | Backup | Quota | Usage |
---|---|---|---|---|
HOME | /home/stage01 |
Oui | 1 Go | données de configuration |
SAVE | /home/stage01/save |
Oui | 50 Go | données à conserver |
WORK | /home/stage01/work |
Non | 150 Go | données temporaires |
Sur les espaces save
et work
, le quota peut être doublé, sur demande, pour les utilisateurs intensifs du cluster via le formulaire https://migale.inrae.fr/ask-resources. Vous pouvez également demander d’avantage de ressources, mais une contribution financière vous sera demandée.
Lors de la connexion SSH au serveur front, un message d’information indique l’utilisation de votre quota :
Information for stage01 at mar. 01 févr. 2022 09:45:22 CET
Home : 262.2MB / 1GB (26%)
Save : 0B / 50GB (0%)
Work : 8KB / 150GB (0%)
Vous pouvez également connaître l’utilisation actuelle de votre quota grace à la commande get_quota
.
stage01@front:~$ get_quota
Information for stage01 at mar. 01 févr. 2022 09:45:22 CET
Home : 110.8MB / 1GB (11%)
Save : 0B / 50GB (0%)
Work : 8KB / 150GB (0%)
Sauvegarde des données
Seuls les espaces home
et save
sont sauvegardés. Le système de sauvegarde journalier est de type snapshots avec rétention d’une semaine. Chaque utilisateur peut accéder à l’ensemble des sauvegardes de son reprtoire save
. Pour revenir à une sauvegarde, il suffit d’y accéder dans le dossier /save_home/snapshot/LOGIN
puis de naviguer jsuqu’à la date de sauvagrde d’interêt. Les fichiers sauvagrdés sont ainsi accessibles et peuvent être recopiés dans le repertoire save
courant.
Restaurer un reprtoire d’un espace save
L’utilisateur stage01
a effacé par erreur le repertoire manuscript_final
de son repertoire home
. Il cherche à récuperer la version du 25/11 de ce dossier.
stage01@front:~$ ls /save_home/snapshot/daily.2022-01-14_0010/stage01/
cp -r /save_home/snapshot/daily.2022-01-14_0010/stage01/manuscript_final/ /home/stage01/save/
Dans cet exemple, l’ensemble du répertoire manuscript_final
, dans sa sauvegarde du 14/01/2022 à 10h est recopiée dans le répertoire home
.
Espaces projets
Certains espaces sont dédiés à un projet. Par exemple, l’espace projet redlosses
est lié au groupe unix redlosses
. Chaque membre du groupe redlosses
peut donc écrire dans les répertoires work
et save
associés (Figure 3).
Espace pour les fichiers temporaires
Le répertoire /projet/tmp
est un espace de volumétrie totale de 350 Go accessible à tous les utilisateurs et dédié aux fichiers temporaires issus de calculs. Il n’est pas rare que les outils bioinformatiques demandent quel espace utiliser pour les données temporaires. Si celles-ci sont volumineuses et ne peuvent pas être déposées dans les autres espaces par manque de place, ce répertoire devra être utilisé à la place de /tmp
. Cet espace est accessible depuis les noeuds de calcul.
Cet espace est partagé entre tous les utilisateurs et ne doit pas servir pour y conserver des données. Une purge automatique de ce répertoire est effectuée régulièrement.
Outils
Outils génériques
Pour les outils à interface graphique présentés ci-après, il est nécessaire d’avoir paramétré un système d’export de fenêtrage sur son poste personnel. C’est natif sous Linux (ajout de l’option -X
au ssh au moment de la connexion), installé par défaut sous MobaXterm ou WSL (Windows). Sous Mac OS, cela nécessite l’installation du logiciel Xquartz
. La commande &
permet de lancer l’outil en arrière plan. Vous pourrez alors continuer à utiliser votre terminal en même temps que vous ouvrez/éditez un fichier.
Éditeurs de texte
Les éditeurs de texte suivants sont disponibles sur front : emacs
, xemacs
, gedit
, geany
, nedit
, nano
, vim
, vi
.
emacs
, vi
, vim
et nano
permettent l’édition de fichiers dans le terminal.
xemacs
, gedit
, nedit
et geany
permettent l’édition de fichiers dans des interfaces graphiques.
vim myfile.txt
# ou
gedit myfile.txt &
Si votre logiciel préféré n’est pas dans cette liste, vous pouvez en demander l’installation sur notre site web .
Visualiser des images ou des documents PDF
Pour visualiser des images ou des PDF, nous vous conseillons le logiciel evince
.
evince myfile.pdf &
Visualiser des pages web
Pour visualiser des pages web, le navigateur Firefox
est installé.
firefox --no-remote myfile.html &
Vous remarquerez sans doute que les performances d’affichage des logiciels ayant des interfaces déportées ne sont pas équivalents à celle que vous pouvez avoir sur votre poste en local. La performance peut être variable selon le logiciel utilisé et la qualité de votre connexion (débit et latence). Si vous rencontrez des difficultés à éditer des fichiers, nous vous conseillons de passer par des logiciels d’édition sans interface comme emacs
ou vim
mais un temps d’apprentissage sera nécessaire (la documentation de ces outils est disponible sur internet).
Python
La version de Python installée sur front est la 3.8.10. Si vous avez besoin de paquets Python qui ne sont pas installés sur front
, vous pouvez :
- Nous demander de les installer via le formulaire d’installation d’outils
- Créer un environnement virtuel dans lequel vous pourrez installer les paquets Python dont vous avez besoin (plus d’informations dans la documentation Python)
Et Python 2 ?
Python 2 n’est plus mis à jour et déclaré obsolète depuis janvier 2020. Cela fait suite à une longue période de transition entre les versions 2 et 3 de Python (presque 15 ans !). Nous ne pouvons que vous conseiller de passer vos scripts à Python 3, version disponible sur front
et qui est maintenue. Il y a un coup de passage à cette nouvelle version, mais cela permet de pérenniser les scripts. Vous trouverez sur cette page des conseils pour modifier vos scripts afin de les rendre compatibles avec Python 3.
Nous avons installé dans un environnement conda une version de Python 2, mais nous ne pouvons pas nous engager à la maintenir dans le temps. Python 2 n’étant plus maintenu par les développeurs, à la moindre faille de sécurité il est possible que nous ayons à la retirer. Ne comptez donc pas sur cet envrionnement de manière fiable et durable.
Outils bioinformatiques
De nombreux outils sont accessibles en ligne de commande. Vous pouvez retrouver la liste complète des outils sur notre site web.
La majorité des outils est installée avec
La majorité des outils bioinformatiques sont disponibles sur le dépôt Bioconda.
Trouver un outil
La commande suivante permet de lister tous les outils installés sur le serveur avec conda :
conda info --envs
Pour rechercher un outil en particulier par son nom, il suffit d’utiliser la commande grep
à la suite. Exemple pour l’outil blast :
stage01@front:~$ conda info --envs |grep blast
blast-2.12.0
Activer l’environnement d’un outil
La commande conda activate
permet de charger l’environnement d’un outil et d’y avoir accès.
stage01@front:~$ conda activate blast-2.12.0
Les exécutables de l’outil blast sont maintenant accessibles :
(blast-2.12.0) stage01@front:~$ blastn -version
blastn: 2.12.0+
Package: blast 2.12.0, build Jul 13 2021 09:03:00
Désactiver l’environnement conda
Pour quitter un environnement, il faut utiliser la commande conda deactivate
:
(blast-2.12.0) stage01@front:~$ conda deactivate
stage01@front:~$
Le nom de l’environnement chargé, ici blast-2.12.0, est indiqué entre parenthèses avant le prompt.
Aucun outil ne doit être lancé sur le serveur front ! Lisez bien la section Cluster de calcul.
Banques de données
De nombreuses banques de données biologiques publiques sont accessibles sous différents formats (FASTA, genbank, hmm…). Elles sont stockées et accessibles à tous les utilisateurs. Leur mise à jour est effectuée et gérée avec le logiciel BioMAJ, ou manuellement.
Nous utilisons BioMAJ pour gérer la plupart des banques de données. BioMAJ (BIOlogie Mise A Jour) est un moteur de workflow dédié à la synchronisation et au traitement des données.
Elles sont accessibles dans un espace dédié nommé /db
. La dernière version est localisée dans le répertoire current
de la banque. Ensuite différents indexes sont accessibles (blast, diamond, hmm…)
Exemple avec les indexes blast pour UniProt :
stage01@front:~$ ls /db/uniprot/current/
blast blast.uniprot diamond fasta fasta.uniprot flat test.log
[stage01@front ~]$ ls /db/uniprot/current/blast/
uniprot.00.phr uniprot.04.psq uniprot.09.pin uniprot.14.phr uniprot.18.psq uniprot.23.pin uniprot.28.phr
uniprot.00.pin uniprot.05.phr uniprot.09.psq uniprot.14.pin uniprot.19.phr uniprot.23.psq uniprot.28.pin
uniprot.00.psq uniprot.05.pin uniprot.10.phr uniprot.14.psq uniprot.19.pin uniprot.24.phr uniprot.28.psq
uniprot.01.phr uniprot.05.psq uniprot.10.pin uniprot.15.phr uniprot.19.psq uniprot.24.pin uniprot.29.phr
uniprot.01.pin uniprot.06.phr uniprot.10.psq uniprot.15.pin uniprot.20.phr uniprot.24.psq uniprot.29.pin
uniprot.01.psq uniprot.06.pin uniprot.11.phr uniprot.15.psq uniprot.20.pin uniprot.25.phr uniprot.29.psq
uniprot.02.phr uniprot.06.psq uniprot.11.pin uniprot.16.phr uniprot.20.psq uniprot.25.pin uniprot.30.phr
uniprot.02.pin uniprot.07.phr uniprot.11.psq uniprot.16.pin uniprot.21.phr uniprot.25.psq uniprot.30.pin
uniprot.02.psq uniprot.07.pin uniprot.12.phr uniprot.16.psq uniprot.21.pin uniprot.26.phr uniprot.30.psq
uniprot.03.phr uniprot.07.psq uniprot.12.pin uniprot.17.phr uniprot.21.psq uniprot.26.pin uniprot.pal
uniprot.03.pin uniprot.08.phr uniprot.12.psq uniprot.17.pin uniprot.22.phr uniprot.26.psq
uniprot.03.psq uniprot.08.pin uniprot.13.phr uniprot.17.psq uniprot.22.pin uniprot.27.phr
uniprot.04.phr uniprot.08.psq uniprot.13.pin uniprot.18.phr uniprot.22.psq uniprot.27.pin
uniprot.04.pin uniprot.09.phr uniprot.13.psq uniprot.18.pin uniprot.23.phr uniprot.27.psq
La liste complète des banques est disponible sur notre site web.
De plus en plus d’outils embarquent leurs propres banques. Ces banques sont stockées dans un espace dédié, qui porte le nom de l’outil. Pour l’outil kraken2
, les banques sont dans le répertoire /db/outils/kraken2/
, pour FROGS
dans le répertoire /db/outils/FROGS/
…
Cluster de calcul
Un cluster est simplement un regroupement d’ordinateurs administrés et organisés ensemble. On appelle ces ordinateurs des noeuds de calcul (node). Chaque noeud se caractérise par son nombre de processeurs et sa capacité mémoire. Ce regroupement des noeuds rend possible une gestion globale des ressources de calcul et permet de dépasser les limitations d’un ordinateur individuel. Toutes les informations actualisées sont disponibles sur notre site web : https://migale.inrae.fr/cluster.
Les ressources sont accessibles via le serveur front
. Un logiciel est là pour interagir avec les différents noeuds et gérer la répartition des calculs sur les noeuds : il s’agit d’un gestionnaire de jobs (ou Job Scheduler) ; un job représentant un process (une commande). Les jobs sont soumis au gestionnaire, qui les organisera en file d’attente et les distribuera entre les noeuds suivant les ressources souhaitées et disponibles. Le gestionnaire utilisé sur la plateforme Migale est SGE (Sun Grid Engine).
Vocabulaire
Le processeur
Un noeud d’un cluster contient généralement plusieurs processeurs (CPU) sur lesquels sont exécutées les instructions des programmes informatiques. Dans des conditions classiques d’utilisation, un job est exécuté sur un CPU. Certains programmes sont conçus de manière à pouvoir s’exécuter sur plusieurs CPU simultanément : c’est la parallélisation. Chaque sous-partie parallélisable s’appelle un thread, on parle donc de multithreading. A noter qu’il est possible de paralléliser un calcul uniquement si le programme utilisé le prévoit et exclusivement au sein des CPU d’un même noeud de calcul.
La mémoire
La mémoire vive, ou random access memory (RAM) est l’espace spécifique consacré aux informations provisoires lors de l’exécution d’un calcul. Les processeurs peuvent y stocker, écrire et lire rapidement des informations binaires. C’est un paramètre très important lors du lancement d’un job sur un cluster. Il est recommandé de lire les recommandations décrites dans la documention du logiciel utilisé pour régler ce paramètre car la valeur par défaut définie par le gestionnaire de jobs n’est pas toujours pertinente.
Définitions
Terme | Explication |
---|---|
noeud | Il s’agit d’un noeud de calcul, donc d’une machine physique. Exemple : n34 |
queue | Chaque noeud est associé à une queue et les différentes queues possèdent des caractéristiques propres. Par exemple la file short.q autorise les jobs d’une durée maximale de 12 heures |
job | Commande ou ensemble de commandes lancées sur une queue du cluster de calcul |
Les noeuds de calcul ont des caractéristiques différentes :
- mémoire
- CPUs
et les queues également :
- durée maximale du job
- accès à certains groupes ou utilisateurs
Les informations à jour sont disponibles sur notre site web : https://migale.inrae.fr/cluster.
La figure suivante représente un cluster de calcul composé de trois noeuds n1, n2 et n3. n1 et n2 ont 4 CPUs et n3 6 CPUs. Trois utilisateurs ont soumis un job. La couleur des CPUs correspond à la couleur des utilisateurs. Par exemple, l’utilisateur a réservé 3 CPUs sur le noeud n1. Les CPUs en vert sont les CPUs qui sont disponibles.
Il n’est pas possible de réserver des CPUs sur des noeuds différents.
Soumettre un job
La commande qsub
permet de soumettre un job sur le cluster, c’est-à-dire déporter les process sur un noeud de calcul. Chaque job se voit assigné un numéro unique. Par défaut, chaque job utilise 1 CPU. Pour utiliser plus de CPUs, il faut utiliser l’option -pe thread
.
:warning: Il est primordial de réserver le bon nombre de CPUs. Si trop de ressources sont réservées, elles ne servent à rien. Si le job utilise plus de ressources que celles réservées, le noeud se retrouve en surcharge. Les conséquences sont soit un ralentissement du job en question et des autres jobs sur le même noeud, soit le plantage du noeud.
Voici les options les plus couramment utilisées :
Option | Arguments | Exemple | Signification |
---|---|---|---|
-cwd |
/ | / | exécuter dans le répertoire courant |
-V |
/ | / | transmettre les variables d’environnement de front au noeud |
-N |
string | -N myblast | Nom du job |
-b y |
string | -b y “ls -l” | Commande(s) à exécuter, entre double quotes |
-q |
string | -q short.q | Queue |
-pe thread |
int | -pe thread 4 | Nombre de CPUs (threads) dont le job va avoir besoin au maximum |
-l hostname= |
string | -l hostname=n12 | Identifiant d’un noeud de la queue choisie |
-o |
string | -o myblast.out | Fichier dans lequel sera écrite la sortie standard |
-e |
string | -e myblast.err | Fichier dans lequel sera écrite la sortie d’erreur |
-m |
char [bea] | -m ea | Envoyer un mail lorsque le job se termine ou est interrompu |
-M |
string | -M stage01@inrae.fr | Adresse mail à laquelle envoyer le mail |
L’option -N
est obligatoire pour la commande qsub
. Sans l’option cwd
, le job est soumis dans le home directory de l’utilisateur, ce qui n’est pas recommandé :warning:.
Soumettre une ligne de commande
L’option -b y
permet d’écrire la ligne de commande à soumettre directement dans l’instruction de soumission.
Lancer la commande blast sur le cluster, en utilisant 4 CPUs
stage01@front:~$ qsub -cwd -V -q short.q -N myblast -pe thread 4 -b y "conda activate blast-2.12.0 && blastn -db subject.fasta -query query.fasta -out out.blast -num_thread 4 && conda deactivate"
Your job 11003 ("myblast") has been submitted
Il ne faut surtout pas oublier de charger l’environnement conda de l’outil, et de le désactiver. La syntaxe &&
permet d’enchaîner les commandes.
Soumettre un script
Si vos lignes de commandes à soumettre sont écrites dans un script, il suffit de spécifier le PATH vers le script en dernier argument de la commande qsub
.
Soumettre la commande blast écrite dans un script sur le cluster
stage01@front:~$ head myblast.sh
conda activate blast-2.12.0
blastn -db subject.fasta -query query.fasta -out out.blast -num_thread 4
conda deactivate
Ensuite il faut soumettre ce script avec la commande qsub
.
stage01@front:~$ qsub -cwd -V -q short.q -N myblast -pe thread 4 myblast.sh"
Your job 11004 ("myblast") has been submitted
Écrire les options de la commande qsub
dans le script shell
Il est possible de spécifier des options de la commande qsub
dans le script
#!/bin/bash
### Les commentaires qui commencent par ‘#$’ sont interprétés par SGE comme des options en ligne ###
### ce script est un exemple, il est nécessaire de le modifier pour l'adapter à vos besoins ###
# Shell à utiliser pour l'exécution du job
#$ -S /bin/bash
# Nom du job
#$ -N BLAST_test
# Nom de la queue
#$ -q short.q
# Export de toutes les variables d'environnement
#$ -V
# Sortie standard
#$ -o /home/stage01/work/sge_blast.out
# Sortie d’erreur
#$ -e /home/stage01/work/sge_blast.err
# Lance la commande depuis le répertoire où est lancé le script
#$ -cwd
# Utiliser 4 CPUs
#$ -pe thread 4
# Exemple pour l'utilisation de blast :
DATABANK="subject.fasta"
QUERY="query.fasta"
OUTPUT="out.blast"
conda activate blast-2.12.0
blastn -db $DATABANK -query $QUERY -out $OUTPUT -num_thread 4
conda deactivate
stage01@front:~$ qsub myblast.sh
Your job 11005 ("myblast") has been submitted
Soumettre un job-array
Ce type de soumission est particulièrement intéressant dans le cadre de la bioinformatique où plusieurs traitements doivent être effectués indépendamment sur plusieurs échantillons. La commande qarray
, qui est en fait un script qui utilise l’option -t
de qsub
permet de simplifier pour l’utilisateur cette syntaxe un peu compliquée. Les options de qsub
peuvent être utilisées.
Lancer trois blasts simultanément
stage01@front:~$ head myblasts.sh
conda activate blast-2.12.0 && blastn -db subject.fasta -query query1.fasta -out out1.blast -num_thread 4 && conda deactivate
conda activate blast-2.12.0 && blastn -db subject.fasta -query query2.fasta -out out2.blast -num_thread 4 && conda deactivate
conda activate blast-2.12.0 && blastn -db subject.fasta -query query3.fasta -out out3.blast -num_thread 4 && conda deactivate
En lançant ce script avec la commande qsub
, les trois commandes seraient exécutées de façon séquentielle. Pour les lancer en parallèle sur le cluster, il faut utiliser l’option -t
de qsub
.
stage01@front:~$ qsub -t 1:3 -cwd -V -N myblasts -pe thread 4 myblasts.sh
Your job-array 11032.1-3:1 ("myblasts") has been submitted
La commande qstat
renvoie des informations particulières pour les job-arrays.
- Quand les jobs sont en attente :
stage01@front:~$ qstat
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
11033 0.00000 myblasts.s orue qw 02/01/2022 10:10:54 1 1-3:1
- Quand les jobs sont lancés :
stage01@front:~$ qstat
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
11033 0.50500 myblasts.s orue r 02/01/2022 10:11:06 short.q@n22 1 1
11033 0.50500 myblasts.s orue r 02/01/2022 10:11:06 short.q@n22 1 2
11033 0.50500 myblasts.s orue r 02/01/2022 10:11:06 short.q@n22 1 3
Les job-arrays ont donc le même identifiant (11033) mais se distinguent par leur ja-task-ID (job-array task identifier).
Monitorer un job
Visualiser les jobs
La commande qstat
donne de nombreuses informations sur les jobs soumis :
Colonne | Signification |
---|---|
job-ID | l’identifiant du job |
prior | la valeur de priorité |
name | le nom du job |
user | l’utilisateur qui a soumis le job |
state | l’état du job. Peut être qw (en attente), r (en cours d’exécution), Eqw (en erreur) |
submit/start | date de soumission |
at | heure de soumission |
queue | queue d’appartenance du noeud sur lequel le job est exécuté |
slots | nombre de CPUs demandés |
ja-task-ID | ID de la tâche du job-array |
Visualiser les jobs soumis sur le cluster
stage01@front:~$ qstat
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
11034 0.50500 myblast.sh orue r 02/01/2022 10:14:21 short.q@n14 1
Pour visualiser les jobs des autres utilisateurs, il faut utiliser l’option -u
(-u *
) pour voir tous les jobs soumis).
Une fois que le job est terminé, il n’est plus listé par la commande qstat
. Pour avoir des informations sur un job terminé, il faut connaître son numéro et utiliser la commande qacct
.
Retrouver les informations du job 11034
stage01@front:~$ qacct -j 11034
==============================================================
qname short.q
hostname n14
group maiage
owner stage01
project NONE
department defaultdepartment
jobname myblast.sh
jobnumber 11034
taskid undefined
account sge
priority 0
qsub_time Tue Feb 1 10:14:18 2022
start_time Tue Feb 1 10:14:21 2022
end_time Tue Feb 1 10:14:30 2022
granted_pe NONE
slots 1
failed 0
exit_status 1
ru_wallclock 9s
ru_utime 0.307s
ru_stime 0.181s
ru_maxrss 32.949KB
ru_ixrss 0.000B
ru_ismrss 0.000B
ru_idrss 0.000B
ru_isrss 0.000B
ru_minflt 11117
ru_majflt 327
ru_nswap 0
ru_inblock 100736
ru_oublock 176
ru_msgsnd 0
ru_msgrcv 0
ru_nsignals 0
ru_nvcsw 2076
ru_nivcsw 19
cpu 0.488s
mem 2.812MBs
io 3.666MB
iow 0.000s
maxvmem 20.242MB
arid undefined
ar_sub_time undefined
category -u stage01
Cette commande vous donne accès à la mémoire utilisée par le job, son temps d’exécution, les informations sur le noeud, la queue… ainsi que son statut d’erreur.
Interrompre un job lancé
Il est possible, pour différentes raisons, de vouloir interrompre un job soumis sur le cluster avec la commande qdel
. Le numéro d’identifiant du job est utile pour cibler le job à interrompre.
Interrompre le job 11034
stage01@front:~$ qdel 11034
stage01 has registered the job 11034 for deletion
L’utilisateur peut aussi interrompre tous ses jobs en spécifiant son identifiant avec l’option -u
.
Interrompre tous les jobs soumis (par stage01)
stage01@front:~$ qdel -u stage01
stage01 has deleted job 11035
stage01 has deleted job 11036
stage01 has deleted job 11037
Modifier un job en attente
La commande qalter
permet de modifier des options de soumission à la volée, sans avoir besoin de relancer la commande qsub
.
:information_source: Cette commande n’est valable que sur les jobs en attente.
Changer la queue de soumission d’un job
stage01@front:~$ qalter -q long.q 11038
modified hard queue list of job 11038
Rechercher les ressources disponibles
La commande qhost
permet de lister les ressources et de visualiser celles qui sont disponibles et celles qui sont occupées. L’option -q
permet de lister les noeuds par queue.
Une représentation en temps réel de la charge du cluster est disponible sur la page d’accueil de notre site web : https://migale.inrae.fr
C’est à l’utilisateur de choisir les ressources souhaitées en fonction de ce qu’il souhaite faire.
Je pense que mon job blast va prendre plus de 12 heures, mais moins de 72 heures. Blast est multithreadé et ne nécessite pas beaucoup de mémoire
- Il faut choisir la queue
long.q
.
stage01@front:~$ qhost -q |grep -B 1 long.q
- Il faut choisir parmi les noeuds proposés un noeud qui a beaucoup de CPUs disponibles
n1 lx-amd64 64 2 64 64 28.83 251.6G 4.7G 8.0G 84.5M
long.q BIP 0/0/64
n10 lx-amd64 64 2 64 64 20.31 251.6G 3.4G 8.0G 92.0M
long.q BIP 0/0/64
n11 lx-amd64 64 2 64 64 3.90 251.6G 4.3G 8.0G 82.5M
long.q BIP 0/24/64
n12 lx-amd64 64 2 64 64 8.69 251.6G 4.4G 8.0G 93.9M
long.q BIP 0/48/64
--
n2 lx-amd64 64 2 64 64 0.00 251.6G 4.8G 8.0G 84.5M
long.q BIP 0/0/64
--
n3 lx-amd64 64 2 64 64 24.03 251.6G 6.0G 8.0G 90.9M
long.q BIP 0/24/64
n4 lx-amd64 64 2 64 64 3.87 251.6G 4.5G 8.0G 82.5M
long.q BIP 0/24/64
n5 lx-amd64 64 2 64 64 24.64 251.6G 4.5G 8.0G 92.4M
long.q BIP 0/0/64
n6 lx-amd64 64 2 64 64 8.08 251.6G 3.5G 8.0G 74.3M
long.q BIP 0/0/64
n7 lx-amd64 64 2 64 64 21.61 251.6G 5.0G 8.0G 78.4M
long.q BIP 0/0/64
n8 lx-amd64 64 2 64 64 13.04 251.6G 2.0G 8.0G 84.4M
long.q BIP 0/0/64
n9 lx-amd64 64 2 64 64 0.41 251.6G 4.8G 8.0G 78.6M
long.q BIP 0/8/64
Les noeuds 37 à 41 sont ceux qui ont le plus de CPUs disponibles (32). Actuellement, au maximum 20 CPUs sont disponibles sur le noeud n37
. Sans attendre plus de ressources, l’utilisateur peut demander 20 CPUs au cluster et paramétrer le job en conséquence.
stage01@front:~$ qsub -cwd -V -N myblast -pe thread 20 -q long.q -l hostname=n37 -b y "conda activate blast-2.9.0 && blastn -db subject.fasta -query query.fasta -out out.blast -num_thread 20 && conda deactivate"
Your job 11040 ("myblast") has been submitted
Créer une session interactive
La commande qlogin
permet une connexion sur un noeud. Les options sont les mêmes que celles de la commande qsub
. qlogin
permet de mettre au point une analyse ou executer des calculs sur un noeud de façon interactive.
Avantages :
- les ressources sont réservées le temps de la session
Inconvénients :
- La session est close à la fermeture de la connexion au serveur
front
Lancer une session interactive avec 4 CPUs sur un noeud de la queue short.q
stage01@front:~$ qlogin -q short.q -pe thread 4
Your job 11035 ("QLOGIN") has been submitted
waiting for interactive job to be scheduled ...
Your interactive job 11035 has been successfully scheduled.
Establishing /opt/sge/util/resources/wrappers/qlogin_wrapper session to host n13 ...
The authenticity of host '[n13]:43117 ([192.168.1.178]:43117)' can't be established.
ECDSA key fingerprint is SHA256:V4+qJP0tS+PHatSdA5Ub0e09kdoxDep4Kyc++oEggFU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[n13]:43117,[192.168.1.178]:43117' (ECDSA) to the list of known hosts.
stage01@n13's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-90-generic x86_64)
La session interactive est considérée comme un job, elle a donc un identifiant et est visualisable avec la commande qstat
.
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
11035 0.50500 QLOGIN stage01 r 02/01/2022 10:19:34 short.q@n13 4
La commande pour quitter une session interactive est exit
.
R est disponible sur le serveur front
. Il est régulièrement mis à jour et de nombreux paquets sont installés sur demande via ce formulaire sur notre site web : https://migale.inra.fr/ask-tool.
Rstudio
Une interface vous permet d’utiliser Rstudio : https://rstudio.migale.inrae.fr. Ce RStudio est configuré pour utiliser le R de front
. Il est lié à vos répertoires de travail sur la plate-forme. Vous pouvez vous y connecter en utilisant vos identifiants qui vous ont été envoyés à l’ouverture de votre compte.
Quelques règles concernant son utilisation :
- Ce Rstudio est un environnement de développement et de prototypage. Pour les calculs lourds, la soumission de scripts R en batch sur le cluster est obligatoire (section suivante).
- Une session (1 job) est possible par utilisateur.
- Nous vous demandons d’éviter l’installation de paquets par cette interface (menu Outils/Installation de paquets) et de demander l’installation de paquets par notre site web. Nous ne pourrons pas vous dépanner si vous ne respectez pas cette règle.
Rstudio ne doit pas être utilisé pour effectuer des calculs longs ou multi-threadés !
Exécuter un script R sur le cluster
La commande Rscript permet d’exécuter un script depuis un terminal. Pour que l’exécution soit déportée sur le cluster, il est nécessaire d’utiliser qsub
comme vu précédemment.
Lancer un script R sur le cluster
Voici un exemple de code R :
<- 10
a <- 5
b <- paste("a=",a,", b=",b," et leur produit est ",a*b, sep="")
res print(res)
Ce code est écrit dans un fichier test.R
:
echo '''a <- 10
b <- 5
res <- paste("a=",a,", b=",b," et leur produit est ",a*b, sep="")
print(res)''' >> test.R
La commande suivante permet de lancer le job sur la queue short.q
:
stage01@front:~$ qsub -cwd -N test -q short.q -b y "Rscript test.R"
Your job 11050 ("test") has been submitted
Une fois le job terminé, la sortie a été redirigée dans le fichier test.o11050
stage01@front:~$ cat test.o11050
[1] "a=10, b=5 et leur produit est 50"
Exécuter une partie du code seulement sur le cluster
Il est possible de soumettre une exécution particulière d’une partie du code R sur le cluster. Son usage étant plus avancé, il fera l’objet d’un tutoriel dédié dans les semaines à venir.
Portail Galaxy
La plateforme Migale met à disposition de ses utilisateurs une interface Galaxy : https://galaxy.migale.inrae.fr. Elle est accessible à tous les utilisateurs.
Prise en main
Pour apprendre les bases d’utilisation de Galaxy, nous vous proposons de suivre les tutoriels mis à disposition sur le site officiel de Galaxy.
Connexion
Pour vous identifier, il est nécessaire de s’identifier avec votre identifiant et votre mot de passe associés à votre compte. Le bouton d’authentification se trouve sur le bandeau du haut.
Il n’est pas possible de changer son mot de passe via l’interface Galaxy !
Outils
Nous installons les outils sur demande. Nous avons fait le choix d’installer uniquement des outils déposés sur les dépôts dédiés aux wrappers Galaxy (toolshed). Pour faire une demande d’outil, il faut remplir ce formulaire : https://migale.inrae.fr/ask-tool.
Données
Les données que vous déposez sur Galaxy sont stockées sur un espace dédié, uniquement accessible depuis Galaxy. Par défaut, un quota de 20 Go vous est alloué. Si vous souhaitez une augmentation de ce quota, vous pouvez le demander via ce formulaire : https://migale.inrae.fr/ask-resources
Besoin d’aide ?
Pour toute demande de support relatif à l’utilisation de l’infrastructure, vous pouvez envoyer un mail à help-migale@inrae.fr.
Conclusions
Ce tutoriel avait pour objectif de vous familiariser avec l’infrastructure de la plateforme Migale et à vous apprendre à utiliser le cluster de calcul.