Distruggiamo un falso mito:
Docker riduce le prestazioni sui server GPU?

I container Docker vengono utilizzati sempre di più nel campo del deep machine learning. Il ricorso ai container semplifica in maniera significativa l'installazione delle librerie di deep machine learning (con tutte le dipendenze) e le attività di distribuzione e ridimensionamento.

Il registro Docker Hub (https://hub.docker.com/) contiene immagini di container preconfigurate per le principali librerie di machine learning come Tensorflow™, Caffe2, Torch, CNTK, Theano, ecc.

Abbiamo condotto uno studio per verificare se il ricorso ai container Docker sui server GPU per le attività di deep learning riduce le prestazioni. Per condurre il test, abbiamo utilizzato l'immagine ufficiale di Docker della libreria di deep machine learning di TensorFlow™ (https://hub.docker.com/r/tensorflow/tensorflow/).

I test sono stati effettuati sul server GPU con la seguente configurazione (www.leadergpu.it):

  • 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

Configurazione benchmark:

Procedura di test sul computer locale

Per il test sono stati utilizzanti i seguenti comandi:

Test sintetici

# 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

Resultato: total images/sec: 126.34

Test con dati reali

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

Resultato: sec/batch 0.009-0.028

Procedura di test sul container Docker

Per il test sono stati utilizzanti i seguenti comandi:

Test sintetici

# 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

Resultato: total images/sec: 126.34

Test con dati reali

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

Resultato: sec/batch 0.009-0.028

Risultati dei test

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

Dai risultati dei test con dati sintetici e con dati reali, si evince che l'utilizzo dei container Docker non riduce le prestazioni dei server GPU per le attività di deep learning.