TensorFlow selbst gebastelt

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:

GruppeArchitekturCUDASyCLMKLNUMA
OptiPlex3060Coffee LakeNoNoYesNo
OptiPlex7040Skylake10.1NoYesNo
gruenauClovertownNoNoYesNo
gruenau1Sandy BridgeNoNoYesYes
gruenau[2-4]SkylakeNoNoYesYes
gruenau[5-8]Ivy BridgeNoNoYesYes
gruenau9Skylake10.1NoYesYes

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):

  1. git clone https://github.com/tensorflow/tensorflow.git
  2. cd tensorflow
  3. git fetch –all –tags –prune
  4. git checkout tags/v1.15.0-rc3 -b r1.15
  5. source /usr/local/lib/bazel/bin/bazel-complete.bash
  6. ./configure

Nun wird die gewünschte Konfiguration abgefragt. Meine Eingaben waren:

  1. /usr/bin/python3
  2. /usr/lib/python3.6/site-packages
  3. y
  4. n
  5. n
  6. y
  7. n
  8. 10.1
  9. 7.4.2
  10. (leere Eingabe)
  11. /usr/,/usr/include/,/usr/local/cuda-10.1/,/usr/local/cuda-10.1/include/,/opt/cuda/include/,/opt/cuda/lib64
  12. (leere Eingabe) -> Übernahme von Default-Wert
  13. n
  14. /usr/bin/gcc-6
  15. n
  16. -D_GLIBCXX_USE_CXX11_ABI=0 -O3 -Wformat -Wformat-security -fstack-protector -fPIC -march=native -Wno-sign-compare
  17. 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).

24. Oktober 2019 | Veröffentlicht von Robert Sombrutzki
Veröffentlicht unter Allgemein

Schreiben Sie einen Kommentar

(erforderlich)