Mythenbrecher:
Reduziert Docker die Leistung auf GPU-Servern?

Die Verwendung von Docker-Containern für Deep-Machine-Learning- und Deep-Learning-Zwecke gewinnt in letzter Zeit immer mehr an Popularität, da sich Deep-Machine-Learning-Bibliotheken mit allen Abhängigkeiten damit mühelos installieren lassen und die Bereitstellung und Skalierung einfacher und bequemer ist.

Die Docker Hub Registry (https://hub.docker.com/) enthält vorkonfektionierte Container-Images für alle gängigen Deep-Machine-Learning-Bibliotheken wie Tensorflow™, Caffe2, Torch, CNTK, Theano und andere.

Wir wollten im Rahmen einer Untersuchung herausfinden, ob es einen Leistungsabfall bei der Verwendung von Docker-Containern auf GPU-Servern für Deep-Learning-Aufgaben gibt. Zu Testzwecken wurde das offizielle Docker-Image der TensorFlow™-Bibliothek für tiefes maschinelles Lernen genutzt (https://hub.docker.com/r/tensorflow/tensorflow/).

Die Tests wurden auf dem GPU-Server mit der folgenden Konfiguration durchgeführt (www.leadergpu.de):

  • GPU: NVIDIA® Tesla® P100 (16 GB)
  • CPU: 2 x Intel® Xeon® E5-2630v4 2.2 GHz
  • RAM: 128 GB
  • SSD: 960 GB
  • Ports: 40 Gbps
  • OS: CentOS 7
  • Python 2.7
  • TensorFlow™ 1.3

Benchmark-Einstellungen:

Testverfahren auf dem lokalen Rechner

Die folgenden Befehle wurden zur Durchführung des Tests verwendet:

Synthetische Tests

# mkdir ~/Anaconda
# cd ~/Anaconda
# git clone https://github.com/tensorflow/benchmarks.git
# cd ~/Anaconda/benchmarks/scripts/tf_cnn_benchmarks
# python tf_cnn_benchmarks.py --num_gpus=1 --model inception3 --batch_size 32

Ergebnis: total images/sec: 126.34

Tests mit echten Daten

# cd ~/Anaconda
# git clone https://github.com/tensorflow/models.git
# cd ~/Anaconda/models/tutorials/image/cifar10
# python cifar10_train.py

Ergebnis: sec/batch 0.009-0.028

Testverfahren auf dem Docker-Container

Die folgenden Befehle wurden zur Durchführung des Tests verwendet:

Synthetische Tests

# docker pull tensorflow/tensorflow:latest-devel-gpu
# nvidia-docker run -it --rm -v ~/Anaconda:/root/Anaconda -p 8880:8888 -p 6000:6006 tensorflow/tensorflow:latest-devel-gpu
# cd ~/Anaconda/benchmarks/scripts/tf_cnn_benchmarks
# python tf_cnn_benchmarks.py --num_gpus=1 --model inception3 --batch_size 32

Ergebnis: total images/sec: 126.34

Tests mit echten Daten

# cd ~/Anaconda
# git clone https://github.com/tensorflow/models.git
# cd ~/Anaconda/models/tutorials/image/cifar10
# python cifar10_train.py

Ergebnis: sec/batch 0.009-0.028

Testergebnisse

Local Docker
Synthetic data images/sec: 126.34 images/sec: 126.34
Real data sec/batch: 0.009-0.028 sec/batch: 0.009-0.028

Aus den Ergebnissen der Tests mit synthetischen Daten und echten Daten lässt sich schließen, dass die Verwendung von Docker-Containern die Leistung von GPU-Servern für Deep-Learning-Aufgaben nicht beeinträchtigt.