Panel | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
...
Dostupne verzije
Na računalnom klasteru Isabella, na čvorovima s grafičkim procesorima NVIDIA Tesla V100-SXM2-16GB, instalirana je Python Pythonova biblioteka za strojno učenje , TensorFlow, verzija 1.12.0, optimizirana za izvođenje na grafičkim procesorima.
TensorFlow je preveden za Python 3.5, uz sljedeće verzije NVIDIA alata i biblioteka za strojno učenje:
Dostupne verzije i odgovarajući moduli, kao i NVIDIA knjižnice korištene pri kompilaciji su navedene ispod:
...
Verzija | Modul | CUDA | cuDNN | NCCL |
---|---|---|---|---|
1.12.0 | tensorflow/1-12-0-gpu |
10.0 |
...
7.3.1 |
...
2.3.5 |
Pripremljen je modul koji postavlja sve potrebne varijable okoline:
...
Horovod
Za paralelno izvođenje TensorFlow poslova na Isabelli, dostupna je Python biblioteka Horovod, verzija 0.15.1. Horovod je odabran radi minimalnih potrebnih izmjena Python skripti kako bi se mogle izvoditi na više GPU-ova, po potrebi preko više čvorova.
Upute o potrebnim izmjenama u korisničkim Python skriptama mogu se naći na Horovod GitHub repozitoriju.
Horovod koristi OpenMPI 3.0.
1.15.0 | tensorflow/1-15-0-gpu | |||
2.0.0 | tensorflow/2-0-0-gpu | |||
2.6.2 | tensorflow/2-6-2-gpu | 11.0 | 8.3.0 | 2.11.4 |
2.12.0 | tensorflow/2-12-0 | 11.8 | 8.6.0 | 2.13.4 |
Izvođenje
...
poslova
U nastavku je opisano podnošenje tipičnih TensorFlow Python poslova. Više informacija o pokretanju poslova možete pronaći na stranicama stranicama Korištenje grafičkih procesora te Pokretanje i upravljanje poslovima a o korištenju pojedinih aplikacija na Korisničke aplikacije i knjižnice.
Korištenje jednog grafičkog procesora
Warning | ||
---|---|---|
| ||
U opisima poslova koji koriste jedan grafički procesor, obavezno treba koristiti cuda-wrapper.sh, kao u sljedećem primjeru: |
Code Block | ||
---|---|---|
| ||
#$ -cwd #$ -pe gpu 1 module load tensorflow/1-12-0gpu0-gpu cuda-wrapper.sh python3.5 moj_program.py |
Code Block | ||
---|---|---|
| ||
#$ -cwd #$ -pe gpu 1 module load tensorflow/1-15-0-gpu cuda-wrapper.sh python moj_program.py |
Korištenje više grafičkih procesora
Warning |
---|
Korištenje više grafičkih procesora nije dopušteno bez korištenja biblioteke Horovod. |
Warning |
---|
U opisima poslova koji koriste više grafičkih procesora, obavezno treba koristiti openmpi-wrapper.sh, kao u primjerima u nastavku. |
Korištenje više grafičkih procesora na
...
jednom čvoru
...
Za pokretanje poslova koji zahtijevaju više grafičkih procesora na jednom čvoru potrebno je koristiti paralelnu okolinu gpusingle te željeni broj grafičkih procesora (maksimalno 4):
Code Block | ||
---|---|---|
| ||
#$ -cwd #$ -pe gpusingle 4 module load tensorflow/1-12-0gpu0-gpu mpirun -np $NSLOTS -bind-to none -mca pml ob1 -mca btl ^openib cuda-openmpi-wrapper.sh python3.5 moj_program.py |
Korištenje više grafičkih procesora na više čvorova
...
Code Block | ||
---|---|---|
| ||
#$ -cwd #$ -pe gpu 6 module load tensorflow/1-12-0gpu0-gpu mpirun -np $NSLOTS -bind-to none -mca pml ob1 -mca btl ^openib cuda-openmpi-wrapper.sh python3.5 moj_program.py |
Korištenje cijelih čvorova s grafičkim procesorima
Za pokretanje poslova koji zahtjijevaju zahtijevaju cijele čvorove potrebno je koristiti paralelnu okolinu gpufull te željeni broj grafičkih procesora (mora biti djelitelj višekratnik broja 4). Primjer skripte za zauzimanje dva čvora:
Code Block | ||
---|---|---|
| ||
#$ -cwd #$ -pe gpufull 8 module load tensorflow/1-12-0-0gpu mpirun -np $NSLOTS -bind-to none -mca pml ob1 -mca btl ^openib cudagpu openmpi-wrapper.sh python3.5 moj_program.py |
Performanse
Performanse paralelnog izvođenja TensorFlow aplikacija korištenjem Horovod biblioteke mjerene su standarnim resnet101 benchmarkom iz službenog TensorFlow benchmark repozitorija.
Slika 1 prikazuje performanse na resnet101 testu u odnosu na broj GPU-ova. Vidljivo je da se s povećanjem broja GPU-ova povećava gubitak u odnosu na maksimalne teoretske performanse, što je i za očekivati. Međutim, čak i za 12 GPU-ova, sustav daje oko 85% idealnog slučaja. Idealne performanse procijenjene su iz rezultata istog benchmarka na jednom grafičkom procesoru, bez korištenja Horovod biblioteke.
Slika 2 prikazuje performanse na istom benchmarku, korištenjem 4 GPU-a u različitim raspodjelama po čvorovima. Vidljivo je da raspored GPU-ova po čvorovima ne utječe na performanse na ovom benchmarku.
...
Podnošenje posla
Posao se podnosi s pristupnog čvora naredbom:
Code Block |
---|
qsub tf.sge |