forked from CDS/infrastruktur-dok
Update Workstations-Getting-Started.md
This commit is contained in:
parent
f8425ee272
commit
3570e9648f
@ -104,9 +104,53 @@ aufgerufen werden
|
|||||||
|
|
||||||
## Ein Beispiel einer Berechnung
|
## Ein Beispiel einer Berechnung
|
||||||
|
|
||||||
|
Im folgenden Beispiel verwenden wir das MNIST Datenset um ein einfaches Tensorflow Modell zu trainieren.
|
||||||
|
|
||||||
### Login auf dem Rechner
|
### Login auf dem Rechner
|
||||||
```ssh <username>@mercury.fhgr.ch```
|
`ssh <username>@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 
|
Mehr zum Login findet man im 
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user