
Deepo: a Docker image containing almost all popular deep learning frameworks - ufoym
https://github.com/ufoym/deepo
======
the_jeremy
From the reddit thread 2 days ago:

> The whole point of Docker containers is that they're very efficient with
> their resource and space usage. If you have 15 redundant frameworks pre-
> loaded in a container, of which you use at most 3, you're using Docker
> wrong.

~~~
wpietri
Well, I'd say the point of Docker is to make distributing and running
something easy, reliable, and reasonably safe. Which is what is happening
here.

It is true that Docker is more space efficient than setting up whole VMs for
each app. But it's a lot less space efficient than installing everything on a
big server. If you are running, say, a bunch of Python apps, the lowest-space
approach is making sure they all use the same set of libraries, modules, and
other required resources. But harmonizing those versions is a pain in the ass,
so Docker lets you easily use multiple copies of python, overlapping
libraries, python packages, etc.

It's true that if you were deploying this in production, you'd want to trim
this back. But this is explicitly a "research environment".

~~~
akerro
> Well, I'd say the point of Docker is to make distributing and running
> something easy, reliable, and reasonably safe. Which is what is happening
> here.

No, that's [http://flatpak.org/](http://flatpak.org/)

~~~
richardwhiuk
That seems targeted at applications, not development, and it's got much less
momentum behind it.

~~~
digi_owl
Watch it turn into a Docker rival soon enough...

------
visarga
I just want to say one thing: setting up your Python for DL is a piece of cake
compared to using Python for DL. It's like automating astronaut application
forms.

~~~
nmca
I don't think this is true. How many (proper) mathematicians have you met?

~~~
visarga
I met a few, but what does that have to do with Python installations?

------
ausjke
I used LXC in the past, the current docker still puzzles me a bit.

To save resource(cpu/memory,etc) and stay lightweight, the docker I pulled
needs to reuse whatever on my host Linux to achieve that goal, otherwise it
has to provide its own dependencies which nearly-doubles the storage. Pulling
from others' docker image normally means it has different libraries etc from
my host(e.g. Linux), so I ended up running duplicated libraries/dependencies
on the same host, how does that save anything? Why not just do kvm?

For small applications that use the same libraries/dependencies as the host I
can run way more dockers than KVMs as the former is indeed resource efficient
because it can share them with the host OS, but again it only happens when the
host has essentially the same software installed for dockers to reuse, and
secondly docker itself should be light-weight(otherwise, why not kvm to avoid
all the docker-container complexity).

So, is it true that, docker is _only_ good for light-weight-application that
happens to running the same libraries/dependencies as the host OS to save
resources? At least that's what I did with LXC in the past.

Or is Docker just for easy of deployment, which most of the time it does not
save any resource, but increases it(as most of the time host OS will not have
the same shared resource installed)?

Also I can not understand why Linux-Docker saves any resources on Windows
host, other than it can be easier to deploy? Then again, the past *.exe
installation worked fine as well, why docker?

~~~
digi_owl
It seems docker is being "abused" as a way to build one-off playrooms for
spare time tinkering.

And frankly i can't help wonder if this is because more and more languages is
sprouting their own package managers, while at the same time developers are
getting ever more lax about dependencies hygiene.

~~~
turtlebits
It's not being abused. It's a much better alternative than having users
download a VM image full of preinstalled tools.

------
amelius
How easily does it work with various types/brands of GPU?

------
RobertoG
This is a very useful project.

Something similar (even if it's not exactly the intended functionality) that
already exist is the Kaggle image:

[https://github.com/Kaggle/docker-python](https://github.com/Kaggle/docker-
python)

------
zitterbewegung
How is this better than kaggle’s docker image ?

[https://hub.docker.com/u/kaggle/](https://hub.docker.com/u/kaggle/)

~~~
grahamannett
seem's basically the same (didn't check every framework but seemed like most
big names were on both) but being built on the cuda base image might make it
more easy to attach a GPU?

Also I just noticed this is about the craziest dockerfile. It's all one RUN
which good luck trying to troubleshoot if theres a non obvious error during
building

~~~
paulfurtado
Every RUN statement creates a new layer in the image. Best practice for image
size and io performance is to use the lowest number of layers possible.

That said, recent versions of docker do have the ability to squash layers at
the end of a build which could give the best of both worlds.

------
paultopia
It would be the most amazing if this also included a step-by-step-step
tutorial for setting up on the various cloud gpu providers (aws, compute
engine, that newfangled floyd thing...)

------
hikarudo
A CPU version would be nice.

------
lyricat
I recall that there were lots of special-use Linux distributions which include
specified packages.

