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:
- synthetische testen van de officiële TensorFlow™-website. Het neuraal-netwerkmodel is Inception v3. (https://www.tensorflow.org/lite/performance/measurement)
- testen met echte gegevens. De gebruikte CIFAR-10-gegevensset bevat 32 x 32 RGB-beelden. Neuraal netwerk, 9 lagen. Volledige beschrijving vindt u hier: (https://www.tensorflow.org/tutorials/images/cnn)
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.