L'infrastructure de Migale


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.







TD



I

utilisateur



B

serveur migale



I->B


connexion



A

cluster de calcul



B->A


soumission



D

stockage



B->D




E

banques



B->E




F

outils



B->F




A->B


restitution



A->D




A->E




A->F




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.

:warning: 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.

:information_source: 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.

:warning: 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.

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.

:warning: 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é,…).

:warning: 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







TD2



HOME

/home



ST1

/home/stage01



HOME->ST1





ST2

/home/stage02



HOME->ST2





ST3

/home/stage03



HOME->ST3





ST4

/home/...



HOME->ST4





ST1S

/home/stage01/save



ST1->ST1S





ST1W

/home/stage01/work



ST1->ST1W





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


:warning: 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).







TD4



PRJW

/work_project



PROTEOREW

/work_projet/proteore



PRJW->PROTEOREW





REDLOSSESW

/work_projet/redlosses/



PRJW->REDLOSSESW





PRJS

/save_project



PROTEORES

/save_projet/proteore



PRJS->PROTEORES





REDLOSSESS

/save_projet/redlosses/



PRJS->REDLOSSESS





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.

:warning: 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 &

:information_source: 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 :warning: (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.

:bangbang: 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…)

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

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.

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.

:warning: 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

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.

:bangbang: 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.

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 ?

Ce site web utilise des cookies pour vous garantir la meilleure expérience possible sur notre site web. En savoir plus Got it