Auf den Server und PCs ist u.a. das TensorFlow-Paket für Python 2 & 3 installiert. Für GPU und MKL gibt es jeweils spezielle Pakete. Verschiedene Features (z.B. AVX512-Instruktionen von neueren Intel-CPUs) werden jedoch nicht unterstützt. Ich habe deshalb TensorFlow 1.15 (TF) für die einzelnen Systeme am Institut gebaut. TF gibt es mittlerweile auch in der Version 2.0 jedoch ist die API stark verändert worden, weshalb sie nicht genutzt wurde.
Ich habe die Systeme am Institut wie folgt gruppiert:
Gruppe | Architektur | CUDA | SyCL | MKL | NUMA |
OptiPlex3060 | Coffee Lake | No | No | Yes | No |
OptiPlex7040 | Skylake | 10.1 | No | Yes | No |
gruenau | Clovertown | No | No | Yes | No |
gruenau1 | Sandy Bridge | No | No | Yes | Yes |
gruenau[2-4] | Skylake | No | No | Yes | Yes |
gruenau[5-8] | Ivy Bridge | No | No | Yes | Yes |
gruenau9 | Skylake | 10.1 | No | Yes | Yes |
Beim Bauen von TF aus den Quellen habe ich mich grob an [1] & [2] orientiert. Die Schritte sind dann mit Python 3, CUDA und MKL (z.B. gruenau9):
- git clone https://github.com/tensorflow/tensorflow.git
- cd tensorflow
- git fetch –all –tags –prune
- git checkout tags/v1.15.0-rc3 -b r1.15
- source /usr/local/lib/bazel/bin/bazel-complete.bash
- ./configure
Nun wird die gewünschte Konfiguration abgefragt. Meine Eingaben waren:
/usr/bin/python3
/usr/lib/python3.6/site-packages
y
n
n
y
n
10.1
7.4.2
(leere Eingabe)
/usr/,/usr/include/,/usr/local/cuda-10.1/,/usr/local/cuda-10.1/include/,/opt/cuda/include/,/opt/cuda/lib64
(leere Eingabe) -> Übernahme von Default-Wert
n
/usr/bin/gcc-6
n
-D_GLIBCXX_USE_CXX11_ABI=0 -O3 -Wformat -Wformat-security -fstack-protector -fPIC -march=native -Wno-sign-compare
n
Die Konfiguration ist fertig – jetzt das Bauen:
bazel build --config=opt --config=numa --config=cuda --config=mkl --config=monolithic //tensorflow/tools/pip_package:build_pip_package
Jetzt lange Warten ….. und dann das Paket schnüren:
bazel-bin/tensorflow/tools/pip_package/build_pip_package
tensorflow_pkg
Die fertige whl-Datei liegt nun unter tensorflow_pkg und kann nun installiert werden:
pip3 install -I tensorflow_pkg/tensorflow-1.15.0rc3-cp36-cp36m-linux_x86_64.whl
pip3 list | grep tensorflow
Für die einzelnen Gruppen waren sowohl die Angaben bei der Konfiguration anders (CUDA ja/nein?) als auch beim Bauen (–config=cuda & –config=numa den Maschinen entsprechend).