Skip to content

Latest commit

History

80 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

deepo

CircleCIdockerlicense

Deepo is a series of Docker images that

and their Dockerfile generator that


Table of contents


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

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

Step 1. Install Docker.

Step 2. Obtain the all-in-one image from Docker Hub

docker pull ufoym/deepo:cpu

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

>>>importtensorflow>>>importsonnet>>>importtorch>>>importkeras>>>importmxnet>>>importcntk>>>importchainer>>>importtheano>>>importlasagne>>>importcaffe>>>importcaffe2

$ 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>

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.

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

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'

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.

.modern-deep-learningdl-dockerjupyter-deeplearningDeepo
ubuntu16.0414.0414.0418.04
cudaX8.06.5-8.08.0-10.0/None
cudnnXv5v2-5v7
onnxXXXO
theanoXOOO
tensorflowOOOO
sonnetXXXO
pytorchXXXO
kerasOOOO
lasagneXOOO
mxnetXXXO
cntkXXXO
chainerXXXO
caffeOOOO
caffe2XXXO
torchXOOO
darknetXXXO
.CUDA 10.0 / Python 3.6CPU-only / Python 3.6
all-in-onelatestallall-py36py36-cu100all-py36-cu100all-py36-cpuall-cpupy36-cpucpu
all-in-one with jupyterall-jupyter-py36-cu100all-jupyter-py36all-jupyterall-py36-jupyter-cpupy36-jupyter-cpu
Theanotheano-py36-cu100theano-py36theanotheano-py36-cputheano-cpu
TensorFlowtensorflow-py36-cu100tensorflow-py36tensorflowtensorflow-py36-cputensorflow-cpu
Sonnetsonnet-py36-cu100sonnet-py36sonnetsonnet-py36-cpusonnet-cpu
PyTorch / Caffe2pytorch-py36-cu100pytorch-py36pytorchpytorch-py36-cpupytorch-cpu
Keraskeras-py36-cu100keras-py36keraskeras-py36-cpukeras-cpu
Lasagnelasagne-py36-cu100lasagne-py36lasagnelasagne-py36-cpulasagne-cpu
MXNetmxnet-py36-cu100mxnet-py36mxnetmxnet-py36-cpumxnet-cpu
CNTKcntk-py36-cu100cntk-py36cntkcntk-py36-cpucntk-cpu
Chainerchainer-py36-cu100chainer-py36chainerchainer-py36-cpuchainer-cpu
Caffecaffe-py36-cu100caffe-py36caffecaffe-py36-cpucaffe-cpu
Torchtorch-cu100torchtorch-cpu
Darknetdarknet-cu100darknetdarknet-cpu
.CUDA 9.0 / Python 3.6CUDA 9.0 / Python 2.7CPU-only / Python 3.6CPU-only / Python 2.7
all-in-onepy36-cu90all-py36-cu90all-py27-cu90all-py27py27-cu90all-py27-cpupy27-cpu
all-in-one with jupyterall-jupyter-py36-cu90all-py27-jupyterpy27-jupyterall-py27-jupyter-cpupy27-jupyter-cpu
Theanotheano-py36-cu90theano-py27-cu90theano-py27theano-py27-cpu
TensorFlowtensorflow-py36-cu90tensorflow-py27-cu90tensorflow-py27tensorflow-py27-cpu
Sonnetsonnet-py36-cu90sonnet-py27-cu90sonnet-py27sonnet-py27-cpu
PyTorchpytorch-py36-cu90pytorch-py27-cu90pytorch-py27pytorch-py27-cpu
Keraskeras-py36-cu90keras-py27-cu90keras-py27keras-py27-cpu
Lasagnelasagne-py36-cu90lasagne-py27-cu90lasagne-py27lasagne-py27-cpu
MXNetmxnet-py36-cu90mxnet-py27-cu90mxnet-py27mxnet-py27-cpu
CNTKcntk-py36-cu90cntk-py27-cu90cntk-py27cntk-py27-cpu
Chainerchainer-py36-cu90chainer-py27-cu90chainer-py27chainer-py27-cpu
Caffecaffe-py36-cu90caffe-py27-cu90caffe-py27caffe-py27-cpu
Caffe2caffe2-py36-cu90caffe2-py36caffe2caffe2-py27-cu90caffe2-py27caffe2-py36-cpucaffe2-cpucaffe2-py27-cpu
Torchtorch-cu90torch-cu90torchtorch-cpu
Darknetdarknet-cu90darknet-cu90darknetdarknet-cpu
@misc{ming2017deepo,
author = {Ming Yang},
title = {Deepo: set up deep learning environment in a single command line.},
year = {2017},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/ufoym/deepo}}
}

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.

Deepo is MIT licensed.

About

Set up deep learning environment in a single command line.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages