Sign inSign up

ufoym/deepo

By ufoym

•Updated 7 months ago

A series of Docker images that allows you to quickly set up your deep learning research environment.

Image
293

100K+

ufoym/deepo repository overview

deepo

CircleCI docker license

Deepo is a series of Docker⁠ images that

and their Dockerfile generator that


⁠Table of contents


⁠Quick Start

⁠

⁠GPU Version

⁠
⁠Installation
⁠
⁠Step 1. Install ⁠Docker⁠ and nvidia-docker⁠.
⁠Step 2. Obtain the all-in-one image from Docker Hub⁠
docker pull ufoym/deepo

For users in China who may suffer from slow speeds when pulling the image from the public Docker registry, you can pull deepo images from the China registry mirror by specifying the full path, including the registry, in your docker pull command, for example:

docker pull registry.docker-cn.com/ufoym/deepo

or

docker pull hub-mirror.c.163.com/ufoym/deepo

or

docker pull docker.mirrors.ustc.edu.cn/ufoym/deepo
⁠Usage

Now you can try this command:

docker run --runtime=nvidia --rm ufoym/deepo nvidia-smi
⁠

This should work and enables Deepo to use the GPU from inside a docker container. If this does not work, search ⁠the issues section on the nvidia-docker GitHub⁠ -- many solutions are already documented. To get an interactive shell to a container that will not be automatically deleted after you exit do

docker run --runtime=nvidia -it ufoym/deepo bash

If you want to share your data and configurations between the host (your machine or VM) and the container in which you are using Deepo, use the -v option, e.g.

docker run --runtime=nvidia -it -v /host/data:/data -v /host/config:/config ufoym/deepo bash

This will make /host/data from the host visible as /data in the container, and /host/config as /config. Such isolation reduces the chances of your containerized experiments overwriting or using wrong data.

Please note that some frameworks (e.g. PyTorch) use shared memory to share data between processes, so if multiprocessing is used the default shared memory segment size that container runs with is not enough, and you should increase shared memory size either with --ipc=host or --shm-size command line options to docker run.

docker run --runtime=nvidia -it --ipc=host ufoym/deepo bash

⁠CPU Version

⁠
⁠Installation
⁠
⁠Step 1. Install ⁠Docker⁠.
⁠Step 2. Obtain the all-in-one image from Docker Hub⁠
docker pull ufoym/deepo:cpu
⁠Usage

Now you can try this command:

docker run -it ufoym/deepo:cpu bash

If you want to share your data and configurations between the host (your machine or VM) and the container in which you are using Deepo, use the -v option, e.g.

docker run -it -v /host/data:/data -v /host/config:/config ufoym/deepo:cpu bash

This will make /host/data from the host visible as /data in the container, and /host/config as /config. Such isolation reduces the chances of your containerized experiments overwriting or using wrong data.

Please note that some frameworks (e.g. PyTorch) use shared memory to share data between processes, so if multiprocessing is used the default shared memory segment size that container runs with is not enough, and you should increase shared memory size either with --ipc=host or --shm-size command line options to docker run.

docker run -it --ipc=host ufoym/deepo:cpu bash

You are now ready to begin your journey.

$ python

>>> import tensorflow
>>> import sonnet
>>> import torch
>>> import keras
>>> import mxnet
>>> import cntk
>>> import chainer
>>> import theano
>>> import lasagne
>>> import caffe
>>> import caffe2

$ caffe --version

caffe version 1.0.0

$ darknet

usage: darknet <function>

$ th

 │  ______             __   |  Torch7
 │ /_  __/__  ________/ /   |  Scientific computing for Lua.
 │  / / / _ \/ __/ __/ _ \  |  Type ? for help
 │ /_/  \___/_/  \__/_//_/  |  https://github.com/torch
 │                          |  http://torch.ch
 │
 │th>
⁠

⁠Customization

⁠

Note that docker pull ufoym/deepo mentioned in ⁠Quick Start⁠ will give you a standard image containing all available deep learning frameworks. You can customize your own environment as well.

⁠Unhappy with all-in-one solution?

If you prefer a specific framework rather than an all-in-one image, just append a tag with the name of the framework. Take tensorflow for example:

docker pull ufoym/deepo:tensorflow
⁠

⁠Jupyter support

⁠Step 1. pull the image with jupyter support
docker pull ufoym/deepo:all-jupyter
⁠Step 2. run the image
docker run --runtime=nvidia -it -p 8888:8888 --ipc=host ufoym/deepo:all-jupyter jupyter notebook --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token= --notebook-dir='/root'
⁠

⁠Build your own customized image with Lego-like modules

⁠Step 1. prepare generator
git clone https://github.com/ufoym/deepo.git
cd deepo/generator
⁠Step 2. generate your customized Dockerfile

For example, if you like pytorch and lasagne, then

python generate.py Dockerfile pytorch lasagne

This should generate a Dockerfile that contains everything for building pytorch and lasagne. Note that the generator can handle automatic dependency processing and topologically sort the lists. So you don't need to worry about missing dependencies and the list order.

You can also specify the version of Python:

python generate.py Dockerfile pytorch lasagne python==3.6
⁠Step 3. build your Dockerfile
docker build -t my/deepo .

This may take several minutes as it compiles a few libraries from scratch.

⁠

⁠Comparison to alternatives

.modern-deep-learningdl-dockerjupyter-deeplearningDeepo
ubuntu⁠16.0414.0414.0418.04
cuda⁠X8.06.5-8.08.0-10.0/None
cudnn⁠Xv5v2-5v7
onnx⁠XXXO
theano⁠XOOO
tensorflow⁠OOOO
sonnet⁠XXXO
pytorch⁠XXXO
keras⁠OOOO
lasagne⁠XOOO
mxnet⁠XXXO
cntk⁠XXXO
chainer⁠XXXO
caffe⁠OOOO
caffe2⁠XXXO
torch⁠XOOO
darknet⁠XXXO

⁠

⁠Tags

⁠

⁠Available Tags

.CUDA 10.0 / Python 3.6CPU-only / Python 3.6
all-in-onelatest all all-py36 py36-cu100 all-py36-cu100all-py36-cpu all-cpu py36-cpu cpu
all-in-one with jupyterall-jupyter-py36-cu100 all-jupyter-py36 all-jupyterall-py36-jupyter-cpu py36-jupyter-cpu
Theano⁠theano-py36-cu100 theano-py36 theanotheano-py36-cpu theano-cpu
TensorFlow⁠tensorflow-py36-cu100 tensorflow-py36 tensorflowtensorflow-py36-cpu tensorflow-cpu
Sonnet⁠sonnet-py36-cu100 sonnet-py36 sonnetsonnet-py36-cpu sonnet-cpu
PyTorch⁠ / Caffe2⁠pytorch-py36-cu100 pytorch-py36 pytorchpytorch-py36-cpu pytorch-cpu
Keras⁠keras-py36-cu100 keras-py36 keraskeras-py36-cpu keras-cpu
Lasagne⁠lasagne-py36-cu100 lasagne-py36 lasagnelasagne-py36-cpu lasagne-cpu
MXNet⁠mxnet-py36-cu100 mxnet-py36 mxnetmxnet-py36-cpu mxnet-cpu
CNTK⁠cntk-py36-cu100 cntk-py36 cntkcntk-py36-cpu cntk-cpu
Chainer⁠chainer-py36-cu100 chainer-py36 chainerchainer-py36-cpu chainer-cpu
Caffe⁠caffe-py36-cu100 caffe-py36 caffecaffe-py36-cpu caffe-cpu
Torch⁠torch-cu100 torchtorch-cpu
Darknet⁠darknet-cu100 darknetdarknet-cpu
⁠

⁠Deprecated Tags

.CUDA 9.0 / Python 3.6CUDA 9.0 / Python 2.7CPU-only / Python 3.6CPU-only / Python 2.7
all-in-onepy36-cu90 all-py36-cu90all-py27-cu90 all-py27 py27-cu90all-py27-cpu py27-cpu
all-in-one with jupyterall-jupyter-py36-cu90all-py27-jupyter py27-jupyterall-py27-jupyter-cpu py27-jupyter-cpu
Theano⁠theano-py36-cu90theano-py27-cu90 theano-py27theano-py27-cpu
TensorFlow⁠tensorflow-py36-cu90tensorflow-py27-cu90 tensorflow-py27tensorflow-py27-cpu
Sonnet⁠sonnet-py36-cu90sonnet-py27-cu90 sonnet-py27sonnet-py27-cpu
PyTorch⁠pytorch-py36-cu90pytorch-py27-cu90 pytorch-py27pytorch-py27-cpu
Keras⁠keras-py36-cu90keras-py27-cu90 keras-py27keras-py27-cpu
Lasagne⁠lasagne-py36-cu90lasagne-py27-cu90 lasagne-py27lasagne-py27-cpu
MXNet⁠mxnet-py36-cu90mxnet-py27-cu90 mxnet-py27mxnet-py27-cpu
CNTK⁠cntk-py36-cu90cntk-py27-cu90 cntk-py27cntk-py27-cpu
Chainer⁠chainer-py36-cu90chainer-py27-cu90 chainer-py27chainer-py27-cpu
Caffe⁠caffe-py36-cu90caffe-py27-cu90 caffe-py27caffe-py27-cpu
Caffe2⁠caffe2-py36-cu90 caffe2-py36 caffe2caffe2-py27-cu90 caffe2-py27caffe2-py36-cpu caffe2-cpucaffe2-py27-cpu
Torch⁠torch-cu90torch-cu90 torchtorch-cpu
Darknet⁠darknet-cu90darknet-cu90 darknetdarknet-cpu

⁠

⁠Contributing

We appreciate all contributions. If you are planning to contribute back bug-fixes, please do so without any further discussion. If you plan to contribute new features, utility functions or extensions, please first open an issue and discuss the feature with us.

⁠

⁠Licensing

⁠

Deepo is ⁠MIT licensed⁠.

Tag summary

Content type

Image

Digest

Size

7.5 GB

Last updated

over 4 years ago

docker pull ufoym/deepo