Calcul scientifique

Le laboratoire met à disposition plusieurs serveurs de calcul.

Nom OS CPU C/T Fréq Min/Max RAM GPU Stockage local
(quota/utilisateur)
SSH Accès État
Philemon Ubuntu 22.04 EPYC 7402P 20C 20T 2,8 GHz / 3,3 GHz 128 Go - 10 Go SSD SATA ssh hercule.linguist.univ-paris-diderot.fr -p 2207 Réseau UPC ou VPN En service
clc2 Ubuntu 24.04 2*Xeon 6140 36C 72T 2,3 GHz / 3,7 GHz 512 Go 4*A6000 (48Go) 150 Go SSD SATA ssh clc-llf-2.linguist.univ-paris-diderot.fr Internet En service, mais pas de backup
clc3 CentOS 7 2*Xeon 6134 16C 32T 3,2 GHz / 3,7 GHz 348 Go 4*2080Ti (11Go) 150 Go HDD SAS ssh clc-llf-3.linguist.univ-paris-diderot.fr Internet En fin de vie
clc4 Ubuntu 24.04 2*Xeon 6226R 64C 128T 2,9 GHz / 3,9 GHz 128 Go 4*A5000 (24Go) 150 Go SSD SATA ? ? Pas installé
clc5 Ubuntu 22.04 2*Xeon 5220R 48C 96T 2,2 GHz / 4,0 GHz 256 Go 2*A5000 (24Go) 150 Go SDD NVMe ssh clc-llf-5.linguist.univ-paris-diderot.fr Internet En service, mais pas de backup

Vous pouvez consulter l'état des serveurs en temps réel.

Prérequis

Connaissances

Une connaissance de base d'Unix, du Shell et de SSH sont requises. La connexion se fait par clé, il faut donc bien maîtriser les concepts de clé publique/clé privée. Les membres du SIM ne connaissent pas Windows, aucun support ne pourra vous être apporté si vous essayez de vous connecter depuis une machine Windows.

Création de compte

I. Créez votre compte sur le serveur NextCloud du labo

  1. Si vous n'avez pas déjà un compte, téléchargez la fiche de renseignements du SIM, complétez-la, et remettez la au SIM. Précisez que vous souhaitez accéder aux serveurs de calcul, vous serez ainsi membre des groupes myLLF et Serveurs sur NextCloud.
  2. Vous recevez alors un mail d'invitation, avec un lien. Cliquez sur le lien. Vous arrivez sur le NextCloud du LLF, qui vous demande de choisir un mot de passe. Choissiez un bon mot de passe ! Et envisagez d'utiliser un gestionnaire de mot de passe − au SIM, on utilise BitWarden.
  3. Votre compte NextCloud est opérationnel !

Création et activation du compte

II. Téléversez votre clé SSH .

  1. Chaque heure, le serveur crée un dossier myLLF/keys pour les membres du groupe Serveurs (c'est vous !). Si vous venez d'activer votre compte, patientez donc jusqu'au début de la prochaine heure. Ne créez pas ce dossier vous-même !
  2. Déposez votre clé SSH publique, dans votre dossier myLLF/keys (si vous n'avez pas de clé SSH, voir ci-dessous la section Clés SSH). Vous pouvez ajouter, modifier et supprimer vos clés publiques ici, ce sera répercuté automatiquement sur les serveurs.
  3. Les clés sont transférées sur les serveurs une fois par heure. À nouveau, attendez donc jusqu'au début de la prochaine heure pour essayer de vous connecter.
  4. Vous avez accès à tous les serveurs du labo ! Votre login est le même que sur NextCloud. Pour vous connecter, utilisez la commande de la colonne SSH du tableau ci-dessus, par exemple, pour clc3: ssh votrelogin@clc-llf-3.linguist.univ-paris-diderot.fr .

Mal

Problèmes fréquents

SSH demande un mot de passe

Si la commande SSH vous demande un password et non une passphrase, alors elle ne trouve pas votre clé. C'est le problème le plus fréquent, et il se situe de votre côté, pas sur le serveur.

  1. Vérifiez que vous utilisez bien votre login du labo. Par exemple, mon login sur tous les serveurs du labo, c'est afalaise.
  2. Dites à SSH où se trouve votre clé privée:
    • utilisez l'option -i /chemin/vers/clé/privée pour lui indiquer où se trouve votre clé privée
    • déplacez vos clés dans votre dossier ~/.ssh

Exemple quand SSH ne trouve pas la clé:
Mal Mal

Exemple quand SSH trouve la clé, qui est protégée par une passphrase:
Bien Bien

SSH vous répond Timeout ou Connection refused

Sur chaque serveur, si vous échouez au moins 5 fois à vous connecter dans une fenêtre de 10 minutes, vous êtes banni pendant 10 minutes.

Exemple quand on est banni d'un serveur:
Banished

Si vous utilisez le Wifi de l'Université, ou le réseau filaire des salles de cours, ou un autre réseau public, certains ports sont bloqués, en particulier les ports non-standard (par exemple le port 2207 utilisé par Philemon). Cela entraîne aussi un Timeout ou Connection refused. Dans ce cas, il n'y a pas d'autre solution que d'utiliser un réseau qui ne bloque pas ces ports (comme le réseau filaire de l'Université − hors salles de cours).

Clés SSH

Une clé SSH est constituée de deux fichiers:

  • Une clé publique, que vous pouvez donner à tout le monde. C'est un fichier avec l'extension .pub .
  • Une clé privée, que vous ne devez donner à personne. C'est un fichier sans extension.

Sur Linux et MacOS, votre clé publique se trouve dans le fichier ~/.ssh/id_rsa.pub , et votre clé privée dans ~/.ssh/id_rsa . Si vous avez déjà une clé, utilisez là ! Pas besoin d'en créer une nouvelle.

Une clé SSH n'est pas spécifique à une machine. C'est juste une paire de fichiers texte, que vous pouvez copier sur d'autres machines.

Clés

Pour plus d'informations sur le fonctionnement des clés SSH, voir Wikipédia.

Créer une clé SSH

Vous pouvez en générer une avec la commande ssh-keygen -t rsa -b 4096 -C "your_email@example.com" . Cette commande vous demandera de choisir une passphrase (= un mot de passe) si vous le souhaitez -> et si vous n'êtes pas suicidaire, vous le voulez. Votre passphrase vous sera demandée à chaque utilisation de la clé.

La commande va créer deux fichiers. Un avec l'extension .pub (votre clé publique), et un sans extension (votre clé privée).

Fonctionnement du dossier myLLF/keys

Vous pouvez déposer vos clés publiques (extension .pub) dans le dossier myLLF/keys, et elles seront automatiquement (sous une heure) transférées dans votre fichier \~/.ssh/authorized_keys sur les serveurs de calcul du LLF, vous permettant de vous connecter à ces serveurs.

Keys

Prenez bien garde de ne diffuser que votre clé publique, et jamais votre clé privée. Vos clés SSH doivent être protégées par une passphrase, c'est à dire que votre client SSH vous demandera un mot de passe à chaque utilisation de votre passphrase. Pour ajouter/modifier une passphrase à une clé existante, utilisez la commande: ssh-keygen -p .

Vous pouvez mettre plusieurs fichiers dans le dossier myLLF/keys; chaque fichier portant l'extension .pub sera pris en compte.

Dans votre fichier .pub, votre clé publique doit être sur une seule ligne, comme ceci:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMvkmicp3ciVeJlkMPH1fpgZrLIQnHHxtu/DrYEbspaiLM9ovEsWDXGNbfbvIBtANXdrO2unNo54I7D4KHC41d0t6CTxS4qALLTdap+R9ncAQxm2elxmOoa/uRH8WKlxROA3ei85kYmsqKcY4thLYoBoPdGb4YN2LOxU3XDeNeWFwx0ZLWaKQOFAMz0iFFAlt7rlQAPSAoxJUkYvvo2uXWTYOA3y6kHhvQjhPLDNRc06duMe7+j+PL4AJznQYnIBvmI8NpyPSdcxoBCgdqyOMm96pHJlC7rKH9acx0cqLIkZDny4X5eaAjkqfBKF/r0+Ty+10yFZgiqn/r9ZRRIYvZ achille@gremlin

VPN

Le VPN de l'UPC est nécessaire pour accéder à certains serveurs (voir la colonne Accès dans le tableau ci-dessus), si vous n'êtes pas en filiare dans les locaux du labo.

L'accès au VPN de l'UPC est à demander à la DSIN de l'Université, cf. section "Wifi-VPN-Internet-Connexion cablage".

En attendant d'avoir votre VPN, si vous avez un ordinateur sous Unix (Linux/MacOS), vous pouvez essayer sshuttle pour mettre en place un accès à tous les serveurs du LLF via les serveurs accessibles depuis Internet. Sinon, connectez-vous en deux étapes: d'abord à une serveur accessible directement depuis Internet, puis au serveur souhaité.

Privilèges

Les comptes utilisateurs sont non-privilégiés (pas de sudo). Vous n'aurez jamais d'accès privilégié, ce n'est pas négociable.

Installation de logiciels

Vous pouvez installer certains logiciels en utilisant le gestionnaire de paquets Brew.

Vous pouvez aussi demander au SIM d'installer un paquet présent dans les dépots officiels de la distribution. Notez qu'il sera mis à jour en même temps que les autres composants du système, sans avertissement.

Conseils

Connexion persistante

Pour ne pas perdre votre session SSH au bout de quelques minutes d'inactivité, vous pouvez utiliser l'option -o "ServerAliveInterval 60".

Détacher une session

Vous pouvez « détacher » vos sessions SSH. Cela signifie qu'elles ne sont plus dépendantes de votre terminal: si vous fermez ce dernier, ou bien que vous éteignez votre ordinateur, la session continuera à vivre sur le serveur. C'est très pratique pour faire tourner un programme pendant plusieurs jours sur le serveur, sans laisser votre propre ordinateur allumé pendant tout ce temps. Sur le serveur, faites screen -S nomDeLaSession pour lancer une session détachée, lancez votre programme qui prend longtemps, et vous pouvez éteindre votre ordinateur. Pour récupérer votre session, reconnectez vous au serveur, et faites screen -r nomDeLaSession pour retrouver votre session. Si vous voulez fermer une de vos sessions, faites simplement exit depuis la session que vous voulez fermer.

Transfert de fichiers

Pour transférer des fichiers sur le serveur, plusieurs solutions s'offrent à vous:

  • Si votre ordinateur est sous Linux, vous pouvez utiliser le serveur comme un disque réseau simplement en tapant l'adresse du serveur dans votre gestionnaire de fichiers habituel; par exemple pour clc3: ssh://votrelogin@clc-llf-3.linguist.univ-paris-diderot.fr .
  • Si votre ordinateur est sous Windows, vous pouvez faire un montage SSHFS.
  • Si votre ordinateur est sous MacOS, vous pouvez aussi faire un montage SSHFS, mais il faut installer CyberDuck.
  • Dans tous les cas, vous pouvez aussi utiliser un logiciel dédié comme FileZilla.
  • Enfin, en ligne de commande, vous pouvez utiliser rsync -avz --progress monDossierLocal/* votrelogin@clc-llf-3.linguist.univ-paris-diderot.fr:monDossierDistant pour transférer tous le contenu du dossier monDossierLocal dans /home/votrelogin/monDossierDistant, qui sera créé si nécessaire. Si /home/votrelogin/monDossierDistant existe et contient déjà des fichiers, en cas de conflit ces fichiers distants seront écrasés, mais le reste de votre dossier /home/votrelogin/monDossierDistant ne sera pas affecté. Pour de gros transferts, c'est souvent la méthode la plus rapide et la plus fiable; elle supporte sans problème les déconnexions (relancez le transfert, il repartira de là où il s'était arrêté).

Attendre qu'un GPU se libère

Il faut parfois attendre qu'un GPU se libère avant de pouvoir l'utiliser. La commande nvidia-smi permet de savoir quels GPUs sont utilisés; c'est en particulier la mémoire occupée (colonne Memory-Usage) qui est importante.

Le script bash suivant attend qu'un GPU se libère, et met l'id du premier GPU libre qu'il trouve dans $gpu_id. À adapter en fonction du nombre de GPUs (ici 4 GPUs: 0, 1, 2, et 3) et de la mémoire dont on a besoin (ici 8Go soit 8000Mo).

while :
do
  for gpu_id in 0 1 2 3  # List of GPUs
  do
    free_mem=$(nvidia-smi --query-gpu=memory.free --format=csv -i $gpu_id | grep -Eo [0-9]+)
    echo GPU $gpu_id has $free_mem MB available.
    [[ $free_mem -gt 8000 ]] && break 2  # Choose this GPU if it has more than 8GB available
    sleep 5
  done
done

echo $gpu_id is available.

Confidentialité, sécurité et limites d'utilisation

Les serveurs sont hébergés dans les locaux de l'Université et administrés par le LLF. Veuillez noter que les membres du service informatique peuvent accéder à vos fichiers.

Des sauvegardes sont effectuées chaque nuit, sur le même site.

L'utilisation de ces serveurs doit être strictement professionnelle.