Par Hélène Chiapello, Véronique Martin, Cédric Midoux, Olivier Rué
Article publié le 03/02/2022 (dernière modification le 30/06/2022)
5934 mots 28 mins de lecture
Niveau : facile | Prérequis :
aucun
L'infrastructure de Migale - HackMD
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.
Figure 1 : Organisation simplifiée de l'infrastructure
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).
Unix
L’environnement Unix du serveur front est accessible via le terminal, qui peut être ouvert avec Ctrl + Alt + T.
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,…)
Windows
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 le 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://migale.jouy.inrae.fr/ssp/.
Votre mot de passe doit être sécurisé et doit répondre à un certain nombre de règles (longueur, complexité,…).
Nous rencontrons régulièrement des soucis avec notre LDAP. Si votre mot de passe ne fonctionne plus (sans raison), le premier réflexe est de le réinitialiser, cela règle une bonne partie des problèmes de mot de passe. Nous travaillons sur ce point.
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éer une clé ssh
# Création d’une clé (publique et privée)local:~$ ssh-keygen -t rsa -b 2048
# Envoi de la clé publique sur le serveur frontlocal:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub stage01@front.migale.inrae.fr
# Connexion sans mot de passelocal:~$ 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
Figure 2 : Organisation des espaces utilisateurs
La figure 2 représente l’organisation des espaces utilisateurs. Ce sont des espaces personnels ! Un répertoire 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
Tableau 1 : Détail des espaces utilisateurs pour l'utilisateur stage01
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).
Figure 3 : Organisation des espaces projets
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
Python 3
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 :
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 ici : https://migale.inrae.fr/tools.
La majorité des outils est installée avec conda. Conda est un gestionnaire de paquets. Il est conçu pour gérer des paquets et dépendances de n’importe quel programme dans n’importe quel langage. Chaque outil et ses dépendances sont embarqués dans un environnement conda spécifique, et ce pour chaque version de l’outil. Cela évite des conflits entre dépendances (par exemple l’outil A qui aurait besoin de la version 2 de C tandis que l’outil B aurait besoin pour sa part de la version 3 de C. Grâce à conda, il est possible de faire cohabiter plusieurs versions d’un même outil car ils sont dans des environnements différents.
La majorité des outils bioinformatiques sont disponibles sur le dépôt Bioconda.
Lancer la commande blastn de l’outil ncbi-blast+
# Rechercher le nom de l environnement blast si inconnu
stage01@front:~$ conda info --envs |grep blast
blast-2.12.0
# Ensuite, activer l environnement conda en question
stage01@front:~$ conda activate blast-2.12.0
# Les exécutables sont 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
# Lancer la commande
(blast-2.12.0) stage01@front:~$ blastn -db subject.fasta -query query.fasta -out out.blast
# Désactiver l environnement conda
(blast-2.12.0) stage01@front:~$ conda deactivate
stage01@front:~$
Le nom de l’environnement chargé, ici blast-2.9.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…)
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 :
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.
Situation de base
Cas 1 : L’utilisateur rouge veut lancer un job avec 2 CPUs
2 CPUs sont disponibles sur le noeud n2. Le job sera soumis sans attendre.
Cas 2 : L’utilisateur rouge veut lancer un job avec 3 CPUs
3 CPUs sont disponibles sur l’ensemble du cluster, mais pas sur le même noeud. Le job sera en attente le temps qu’au moins 1 CPU se libère sur le noeud n2 ou que 2 CPUs se libèrent sur les noeuds n1 ou n3.
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.
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
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é .
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
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.
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.
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.
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
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
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.
Il 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 :
a <-10
b <-5
res <- paste("a=",a,", b=",b," et leur produit est ",a*b, sep="")
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.
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.
Les données que vous déposez sur Galaxy sont stockées sur un espace dédié, unqiquement 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.
À titre indicatif, les quelques questions suivantes vous permettront de vous auto-évaluer :
Êtes-vous prêt à vous tester sur l'utilisation de 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.
Figure 1 : Organisation simplifiée de l'infrastructure
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 groupemaiage
.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).Unix
L’environnement Unix du serveur
front
est accessible via le terminal, qui peut être ouvert avecCtrl + Alt + T
.Se connecter au serveur front
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
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,…)
Windows
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 le 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://migale.jouy.inrae.fr/ssp/.
Votre mot de passe doit être sécurisé et doit répondre à un certain nombre de règles (longueur, complexité,…).
Nous rencontrons régulièrement des soucis avec notre LDAP. Si votre mot de passe ne fonctionne plus (sans raison), le premier réflexe est de le réinitialiser, cela règle une bonne partie des problèmes de mot de passe. Nous travaillons sur ce point.
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éer une clé ssh
# 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
Figure 2 : Organisation des espaces utilisateurs
La figure 2 représente l’organisation des espaces utilisateurs. Ce sont des espaces personnels ! Un répertoire
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 lehome directory
(entouré en violet sur la figure), correspondant au répertoirehome/stage01
pour l’utilisateur stage01.À l’intérieur se trouvent un répertoire
work
et un répertoiresave
. Ces espaces sont soumis à des quotas qui sont indiqués dans le tableau 1./home/stage01
/home/stage01/save
/home/stage01/work
Tableau 1 : Détail des espaces utilisateurs pour l'utilisateur stage01
Sur les espaces
save
etwork
, 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
etsave
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 repertoiresave
courant.Restaurer un reprtoire d’un espace
save
L’utilisateur
stage01
a effacé par erreur le repertoiremanuscript_final
de son repertoirehome
. 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épertoirehome
.Espaces projets
Certains espaces sont dédiés à un projet. Par exemple, l’espace projet
redlosses
est lié au groupe unixredlosses
. Chaque membre du grouperedlosses
peut donc écrire dans les répertoireswork
etsave
associés (Figure 3).Figure 3 : Organisation des espaces projets
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 logicielXquartz
.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
etnano
permettent l’édition de fichiers dans le terminal.xemacs
,gedit
,nedit
etgeany
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
.Visualiser des pages web
Pour visualiser des pages web, le navigateur
Firefox
est installé.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
ouvim
mais un temps d’apprentissage sera nécessaire (la documentation de ces outils est disponible sur internet).Python
Python 3
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 :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 ici : https://migale.inrae.fr/tools.
La majorité des outils est installée avec conda. Conda est un gestionnaire de paquets. Il est conçu pour gérer des paquets et dépendances de n’importe quel programme dans n’importe quel langage. Chaque outil et ses dépendances sont embarqués dans un environnement conda spécifique, et ce pour chaque version de l’outil. Cela évite des conflits entre dépendances (par exemple l’outil A qui aurait besoin de la version 2 de C tandis que l’outil B aurait besoin pour sa part de la version 3 de C. Grâce à conda, il est possible de faire cohabiter plusieurs versions d’un même outil car ils sont dans des environnements différents.
La majorité des outils bioinformatiques sont disponibles sur le dépôt Bioconda.
Lancer la commande blastn de l’outil ncbi-blast+
# Rechercher le nom de l environnement blast si inconnu stage01@front:~$ conda info --envs |grep blast blast-2.12.0 # Ensuite, activer l environnement conda en question stage01@front:~$ conda activate blast-2.12.0 # Les exécutables sont 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 # Lancer la commande (blast-2.12.0) stage01@front:~$ blastn -db subject.fasta -query query.fasta -out out.blast # Désactiver l environnement conda (blast-2.12.0) stage01@front:~$ conda deactivate stage01@front:~$
Le nom de l’environnement chargé, ici blast-2.9.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épertoirecurrent
de la banque. Ensuite différents indexes sont accessibles (blast, diamond, hmm…)Trouver les index blast pour UniProt
stage01@front:~$ ls /db/uniprot/current/ blast blast.uniprot diamond fasta fasta.uniprot flat test.log [stage01@migale ~]$ 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 disponibles est accessible ici : https://migale.inrae.fr/databanks
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
n34
short.q
autorise les jobs d’une durée maximale de 12 heuresLes noeuds de calcul ont des caractéristiques différentes :
et les queues également :
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.
Situation de base
Cas 1 : L’utilisateur rouge veut lancer un job avec 2 CPUs
2 CPUs sont disponibles sur le noeud n2. Le job sera soumis sans attendre.
Cas 2 : L’utilisateur rouge veut lancer un job avec 3 CPUs
3 CPUs sont disponibles sur l’ensemble du cluster, mais pas sur le même noeud. Le job sera en attente le temps qu’au moins 1 CPU se libère sur le noeud n2 ou que 2 CPUs se libèrent sur les noeuds n1 ou n3.
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
.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 :
-cwd
-V
front
au noeud-N
-b y
-q
-pe thread
-l hostname=
-o
-e
-m
-M
L’option
-N
est obligatoire pour la commandeqsub
. Sans l’optioncwd
, le job est soumis dans le home directory de l’utilisateur, ce qui n’est pas recommandé .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 shellIl 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
deqsub
permet de simplifier pour l’utilisateur cette syntaxe un peu compliquée. Les options deqsub
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
deqsub
.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.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 :qw
(en attente),r
(en cours d’exécution),Eqw
(en erreur)Visualiser les jobs soumis sur le cluster
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 commandeqacct
.Retrouver les informations du job 11034
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)
Modifier un job en attente
La commande
qalter
permet de modifier des options de soumission à la volée, sans avoir besoin de relancer la commandeqsub
.Cette commande n’est valable que sur les jobs en attente.
Changer la queue de soumission d’un job
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.
long.q
.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 commandeqsub
.qlogin
permet de mettre au point une analyse ou executer des calculs sur un noeud de façon interactive.Avantages :
Inconvénients :
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
.La commande pour quitter une session interactive est
exit
.R
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 :
Il 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 :
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.
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é, unqiquement 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.
À titre indicatif, les quelques questions suivantes vous permettront de vous auto-évaluer :
Êtes-vous prêt à vous tester sur l'utilisation de l'infrastructure de Migale ?
Commencer