Jobs und Software

Jobs erstellen

Jobskripte

Die Nutzung des AI Clusters wird grundlegend durch Jobskripte gewährleistet. Dies bedeutet, dass ein Jobskript nach den jeweiligen Endnutzerbedürfnissen angepasst werden muss. Die wichtigsten Schritte sind dabei:

1. Jobskript editieren und anpassen

2. Jobskript ausführen

3. Jobstatus überwachen

4. Den Job abbrechen

5. Zusätzliche Befehle

Zu 1:

Hier ist ein Beispiel, wie ein Batchskript aufgebaut ist. Die Abschnitte, indem eine geschweifte Klammer enthalten ist, sollte durch den speziellen Anwendungsfall ersetzt werden um individuelle Programme und Jobskripte erstellen zu können. Es wird zwischen CPU und GPU Berechnungen unterschieden. Dabei geht es um die Angabe der Zeile, inder die Grafikkartennutzung an das System angefordert wird (zB. #SBATCH --gres=gpu:1).

Achtung: Grafikkarten nur benutzen, falls nötig ! Eine fehlende Aufforderung an eine Grafikkarteim System führt zu einer Standardnutzung ohne Grafikkarte (CPU Rechnung)

Hinweis: Hilfsdateien und Beispielbatchskripte unter dem Verzeichnis

/help

GPU Berechnung

#!/bin/bash
#
#SBATCH --job-name={JOBNAME}
#SBATCH --output={OUTPUTNAME}.txt
#
#SBATCH --mail-type=END,FAIL
#SBATCH --mail-user={UserName}@hs-koblenz.de
#
#SBATCH --time=0-01:00:00
#SBATCH --cpus-per-task=16
#
#SBATCH --gres=gpu:1

module purge

module load CUDA/{VERSION}
module load Anaconda3/{VERSION}

eval "$(conda shell.bash hook)"
conda deactivate
conda activate env_neuralode

python -c "import torch; print(torch.cuda.is_available())"

CPU Berechnung

#!/bin/bash
#
#SBATCH --job-name={JOBNAME}
#SBATCH --output={OUTPUTNAME}.txt
#
#SBATCH --mail-type=END,FAIL
#SBATCH --mail-user={UserName}@hs-koblenz.de
#
#SBATCH --time=0-01:00:00
#SBATCH --cpus-per-task=16


srun hostname
srun sleep 60

Wichtig ist hierbei, dass die #SBATCH --time=0-01:00:00 Zeile richtig angepasst werden muss, da dadurch eine maximale Zeitbegrenzung der Ausführung eines Jobsfestgelegt wird. Slurm bricht den Job nach dieser Zeit ab, damit keine unendlich laufenden Prozesse entstehen und das System belasten können. Das Standard- und Maximalzeitlimit sollte unter dem System entnommen werden (Pfad im Server: "/help/cluster_info"). Je nach Software und Anwendungsfall werden in dem Abschnitt Software auch die notwendigen Abschnitte behandelt.

Zu 2:

Ausführen

Um ein Jobskript nach dem Editieren auszuführen, wird folgender Befehl verwendet:

sbatch  {JOBNAME}

Der Parameter JOBNAME wird durch den Namen der Batchskriptdatei ersetzt. Dies sollte auch in der Batchskriptdatei angepasst werden

Zu 3:

Beobachten

Um ein Jobskriptstatus nach dem Ausführen zu beobachten, wird folgender Befehl verwendet:

watch  squeue

Die Ausgabe wird mit dem Standardzeitintervall von 2 Sekunden aktualisiert.

Zu 4:

Abbrechen

Um ein Jobskript bei der Ausführung abzubrechen, wird folgender Befehl verwendet:

scancel {JOBID}

Die id  des Jobs kann in der Ausgabe oder nach dem direkten starten abgelesen werden

Zu 5:

Zusätzliche Befehle

Um eine Jobkonfiguration im Detail zu analysieren:

scontrol show job {JOBID}

Die iddes Jobskann in der Ausgabe oder nach dem direkten starten abgelesen werden

Anzeigen von Informationen über einen vergangenen SLURM Job

sacct  -X

Zusätzliche Befehle(Cluster)

Zeige den Clusterstatus an

sinfo

Zeige detaillierte Informationen über alle Nodes an

scontrol show nodes

Zeige detaillierte Informationen über eine spezielle Node an (mit Angabe des Nodenamens)

scontrol show node {NodeName}

Zeige detaillierte Informationen über die Partitionen an

scontrol show partitions

 

Software

In dem folgendem Abschnitt ist eine Anleitung für die Initialisierung von Anaconda auf dem AI System gezeigt. Weitere Software und Beispielskripte sind aus dem "/help/.." Verzeichnis zu entnehmen.

Anaconda und Python

Die Verwendung von Python und Anaconda ist für die Ausführung von AI-Skripten weitgehend unerlässlich. Hierfür ist eine korrekte Initialisierung von Python und Anaconda erforderlich, wobei die folgenden Schritte berücksichtigt werden sollten.

Pythonversion und Anacondamodul

Um zu überprüfen, welche Pythonversion auf dem AI-Cluster installiert ist, wird folgender Befehl verwendet

python --version

Damit die richtige Pythonversion verwendet werden kann, nutzen wir das Python von Anaconda. Dafür verwendet man eine vorkonfigurierte Umgebung. Bevor die Umgebung aufgelistet werden kann, muss der Nutzer Anaconda in den eigenen Arbeitsbereich initialisieren. Dafür wird zuerst das modul Anaconda geladen. Bevor man das richtige Modul lädt, ist hier aufzupassen die richtige Version zu nehmen. Um die verfügbaren Versionen anzuzeigen, kann man die bereits installierten Module auflisten mit

module avail

Und dann lädt man die gewünschte Version in das lokale System ein

module load Anaconda3/{VERSION}

Nach dem Laden des Moduls können die conda Befehle ausgeführt werden. Bevor mit Anaconda gearbeitet wird, müssen bei der Erstnutzung die Konfigurationsdatei des Systems geändert werden. Hier wird nun der Befehl "conda init" augerufen und somit die Bashrc Konfigurationsdatei des Systems angepasst. Tipp: Nur bei der ersten Benutzung aufrufen!

conda init       (Nur bei der Erstnutzung)

Nachdem diese initialisiert wird, muss der Nutzer sich mit der Steuerungstaste + D ausloggen  und sich erneut einloggen. Dann ist Anaconda richtig konfiguriert und muss wieder mit "module load Anaconda3/{VERSION}" in das System eingebunden werden. Dann können die zentral vorgegebenen Umgebungen angezeigt werden. Um die Umgebungen aufzulisten verwendet man

conda env list

Die Standardumgebung für Anaconda ist indem Fall "base". Es können andere Umgebungen aktiviert werden mit dem Befehl

conda activate{UMGEBUNGSNAME}

Nachdem eine Umgebung erfolgreich eingebunden wurde, erscheint links neben dem AI Symbol in der Konsole, der Name der Umgebung in runden Klammern. Jetzt kann man auch die vorhandenen Bibliotheken in der Umgebung anzeigen lassen

conda list

Die Pythonversion von Anaconda kann man sich auch anzeigen lassen.

python --version

Und den Speicherort zu dem Python von Anaconda

which python

-> /apps/sw2023/rome/software/Anaconda3/{VERSION}/bin/python

Nachdem Python richtig konfiguriert ist und man sich das Modul Anaconda eingeladen hat, kann damit richtig gearbeitet werden. Es können auf Wunsch auch andere Umgebungen geladen werden.