Na računalnom klasteru Isabella, na čvorovima s grafičkim procesorima NVIDIA Tesla V100-SXM2-16GB, instalirana je Python 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:
Pripremljen je modul koji postavlja sve potrebne varijable okoline:
Verzija | Modul |
---|---|
1.12.0 | tensorflow/1-12-0gpu |
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.
Primjer opisa posla koji zahtijeva jedan GPU:
#$ -cwd #$ -pe gpu 1 module load tensorflow/1-12-0gpu source $TMPDIR/gpu echo $CUDA_VISIBLE_DEVICES python3.5 moj_program.py |
Primjer opisa paralelnog posla koji zahtijeva 4 GPU-a:
#$ -cwd #$ -pe gpu 4 module load tensorflow/1-12-0gpu source $TMPDIR/gpu echo $CUDA_VISIBLE_DEVICES /usr/lib64/openmpi3/bin/mpirun -np $NSLOTS -bind-to none -map-by slot -mca pml ob1 -mca btl ^openib python3.5 moj_program.py |
Dostupne paralelne okoline za korištenje grafičkih procesora:
Paralelne okoline se odabiru SGE parametrom:
#$ -pe <paralelna okolina> |
Više informacija o paralelnim okolinama dostupnim na Isabelli možete pronaći na stranici Redovi poslova i paralelne okoline.
SGE pretpostavljeno svakom poslu dodjeljuje jednu CPU jezgru. Ukoliko je potrebno, moguće je tražiti više jezgri:
#$ -nprocs <broj_jezgri> |
Više informacija o pokretanju poslova možete pronaći na stranici Pokretanje i upravljanje poslovima.
Performanse paralelnog izvođenja TensorFlow aplikacija korištenjem Horovod biblioteke mjerene su standarnim resnet101 benchmarkom iz službenog TensorFlow benchmark repozitorija.
Slika 1 prikazuje skaliranje performansi s povećanjem broja 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.