TensorFlow na serwerach GPU

Obliczenia należy wykonywać na węzłach klastra wyposażonych w akceleratory GPU.

Najwygodniej jest skorzystać z kontenera przygotowanego przez NVIDI'ę. Dla zoptymalizowanego uruchomienia warto pobrać obraz i stworzyć lokalną kopię w formacie .sif, zamiast uruchamiać bezpośrednio z Docker Hub. Dzięki temu unikniesz konieczności ponownego pobierania obrazu przy każdym uruchomieniu.

Budowania obrazu należy przeprowadzić interaktywnie na węźle klastra lub wykorzystać system kolejkowy SLURM.

Wcześniej warto ustawić zmienną wskazującą na katalog tymczasowy/cache na zasób dyskowy, który ma odpowiednio dużo miejsca, np w katalogu scratch:

mkdir -p /users/scratch1/${USER}/.apptainer 
export APPTAINER_CACHEDIR=/users/scratch1/${USER}/.apptainer

Budowa obrazu w formacie sif:

module load trytonp/apptainer/1.3.0
apptainer build tensorflow_24.09-tf2-py3.sif docker://nvcr.io/nvidia/tensorflow:24.09-tf2-py3

Po utworzeniu pliku .sif możesz uruchomić kontener za pomocą Apptainera, zapewniając jednocześnie dostęp do GPU

apptainer exec --nv tensorflow_24.09.sif python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"