diff --git a/Workstations-Getting-Started.md b/Workstations-Getting-Started.md index c0d16d7..79d319a 100644 --- a/Workstations-Getting-Started.md +++ b/Workstations-Getting-Started.md @@ -104,9 +104,53 @@ aufgerufen werden ## Ein Beispiel einer Berechnung +Im folgenden Beispiel verwenden wir das MNIST Datenset um ein einfaches Tensorflow Modell zu trainieren. ### Login auf dem Rechner -```ssh @mercury.fhgr.ch``` +`ssh @mercury.fhgr.ch` + +### Einrichten einer Execution Environment für Tensorflow mit Apptainer +``` +mkdir -p ~/build-apptainer/sandboxes/ && cd ~/build-apptainer +apptainer pull tensorflow-2.16.1-gpu.sif docker://tensorflow/tensorflow:2.16.1-gpu +apptainer build --sandbox sandboxes/tensorflow ./tensorflow-2.16.1-gpu.sif +apptainer exec --fakeroot --writable sandboxes/tensorflow/ apt-get update +apptainer exec --writable --fakeroot sandboxes/tensorflow/ apt install -y nvidia-profiler +``` + +### Starten eines Slurmjobs +Um auf die GPUs zuzugreifen, brauchen wir eine Slurm Session. Da unser Programm nur für eine GPU ausgelegt ist, fordern wir auch nur eine GPU mit Slurm an: + +`salloc -p student -G a100:1` + +Sobald unser Slurm Job an der Reihe ist um ausgeführt zu werden, können wir zum Testen ob wir Zugriff auf die GPU haben, den folgenden Befehl aufrufen: + +``` +apptainer shell --nv "/scratch/${USER}/tensorflow-2.16.1-gpu-modified.sif" +``` + +Wir haben nun in den Tensorflow Container gewechselt und können nun ein kurzes Skirpt aufrufen um den Zugriff auf die GPU zu testen: + +``` +python3 <<- EOF +import tensorflow as tf +print(tf.config.list_physical_devices('GPU')[0]) +EOF +``` +In der letzten Ausgabezeile unseres Skripts steht nun: + +`PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')` + +Falls ein Index Error erscheint (IndexError: list index out of range), hat der Zugriff auf die GPU nicht geklappt. + + + + + + + + + Mehr zum Login findet man im ![Lab Login Tutorial](https://gitea.fhgr.ch/CDS/infrastruktur-dok/src/branch/main/Lab-Login-Tutorial.md)