Docker/Pods/Deep Learning
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:
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
| docker notes on the virtual microservice container platform
Installing the docker platform: Docker/Installing Docker Hello World: Docker/Hello World
Creating Docker Containers: Getting docker containers from docker hub: Docker/Dockerhub Creating docker containers with dockerfiles: Docker/Dockerfiles Managing Dockerfiles using git: Docker/Dockerfiles/Git Setting up Python virtualenv in container: Docker/Virtualenv
Running docker containers: Docker/Basics Dealing with volumes in Docker images: Docker/Volumes Removing Docker images: Docker/Removing Images Rsync Docker Container: Docker/Rsync
Networking with Docker Containers:
|
| docker pods pods are groups of docker containers that travel together
Docker pods are collections of Docker containers that are intended to run in concert for various applications.
Wireless Sensor Data Acquisition Pod The wireless sensor data acquisition pod deploys containers This pod uses the following technologies: Stunnel · Rsync · Apache · MongoDB · Python · Jupyter (numerical Python stack)
Deep Learning Pod This pod utilizes the following technologies: Python · Sklearn · Jupyter (numerical Python stack) · Keras · TensorFlow
|