De mythe ontkracht:
verlaagt Docker de prestaties op GPU-servers?

Het gebruik van Docker-containers voor deep-machine-learning en deep-learningdoeleinden wint de laatste tijd sterk aan populariteit. Het gebruik van containers maakt het installeren van deep-machine-learningbibliotheken met alle afhankelijkheden bijna probleemloos en de implementatie en schaalbaarheid eenvoudiger en gemakkelijker.

De Docker Hub Registry (https://hub.docker.com/) bevat voorgemonteerde containerbeelden voor alle populaire deep-machine-learningbibliotheken zoals Tensorflow™, Caffe2, Torch, CNTK, Theano en andere.

Wij hebben besloten een onderzoek uit te voeren en te zien of er een prestatievermindering optreedt bij het gebruik van Docker-containers op GPU-servers voor deep-learningtaken. Voor testdoeleinden werd de officiële Docker-image van de TensorFlow™-deep-machine-learningbibliotheek aangehaald (https://hub.docker.com/r/tensorflow/tensorflow/).

De testen zijn uitgevoerd op de GPU-server met de volgende configuratie (www.leadergpu.nl):

  • 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

Benchmarkinstellingen:

Testprocedure op lokale machine

De volgende commando's werden gebruikt om de test uit te voeren:

Synthetische testen

# 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

Resultaat: total images/sec: 126.34

Testen met echte gegevens

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

Resultaat: sec/batch 0.009-0.028

Testprocedure op Docker-container

De volgende commando's werden gebruikt om de test uit te voeren:

Synthetische testen

# 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

Resultaat: total images/sec: 126.34

Testen met echte gegevens

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

Resultaat: sec/batch 0.009-0.028

Testresultaten

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

Uit de resultaten van testen op basis van synthetische gegevens en echte gegevens kan worden geconcludeerd dat het gebruik van Docker-containers de prestaties op GPU-servers voor deep-learningtaken niet vermindert.