From charlesreid1

For this, I used the docker image from docker hub, waleedka/modern-deep-learning.

Basics

Running the Deep Learning Container

Let's start with how we get this deep learning docker container up and running.

Start by installing Docker: Docker/Installing

Next, this deep learning container can run a Jupyter notebook server, which runs on port 8888 by default, so we'll pass the container's port 8888 through to the host machine's port 8888:

$ docker run -it -p 8888:8888 waleedka/modern-deep-learning

This is great, but unfortunately any changes we make or notebooks we create will disappear with our container, so we'll need to figure out data volumes.

For the time being, let's start by testing out the container and making sure the software components work.

Then we'll figure out a schema for data volumes, and how we get data into and out of our deep learning container.

Testing it out

To take this for a test drive, run the above command. This will give you a bash terminal on the docker container, where we can run a Jupyter notebook:

$ docker run -it -p 8888:8888 waleedka/modern-deep-learning
root@a944863bc1e6:~# jupyter notebook

Now on the host machine, we can navigate to localhost:8888 and see a Jupyter notebook server up and running. This is exposing the container's file system and any notebooks running in the container. This container runs Python 3 only.

Create a new Python notebook, and try importing a few libraries:

DockerDeepLearningTest.png

import numpy
import scipy
import sklearn
import theano
import tensorflow
import pandas
import matplotlib
import keras

Data Volumes Strategy

Let's walk through a volumes strategy for deep learning models using Docker. The strategy we use depends on whether we're training deep learning models using data, or running deep learning models to make predictions.

Training

For training deep learning models in parallel:

  • Each container will be loading up the same data set for training; if containers load up different training sets, they should be getting a data volume from a different container.
  • Training data may be on an external volume or may come from a database (contained in yet another container). We'll just consider the case of data on disk.
  • Each container will be creating a unique model and will need to dump this model somewhere. (These models may be unique because they focus on different chunks of data, or because they are creating models using different X's and Y's, or because they are trying different strategies or architectures or model parameters.)

The training data volume should be a single (possibly read-only) volume coming from a data volume container.

The neural network or resulting model should be dumped to the host machine if possible, by mounting a host machine volume inside the docker container. Otherwise, it should be saved to a results docker container.

(Training data container)

(Neural network models container)

This requires "concurrent" access to the neural network models container.

Flags