Last active
September 8, 2016 19:14
-
-
Save jhludwig/77feeaff62891a5f00c33dc10c365253 to your computer and use it in GitHub Desktop.
Dockerfile for FAIR Deepmask
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Surround.io Deepmask Dockerfile | |
FROM debian:jessie | |
ENV PATH /usr/local/cuda/bin:/usr/local/nvidia/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | |
# Without this, debconf can ask you interactive questions. | |
ENV DEBIAN_FRONTEND noninteractive | |
# Add the Debian backports repo so we can get newer packages. | |
# also get rid of httpredir so we don't get disconnects | |
RUN apt-get update && echo 'deb http://http.debian.net/debian jessie-backports main' > /etc/apt/sources.list.d/backports.list \ | |
&& sed -i -e 's@http://httpredir\.debian\.org@ftp://ftp.us.debian.org@g' /etc/apt/sources.list | |
# build basics | |
RUN apt-get clean \ | |
&& apt-get update \ | |
&& apt-get upgrade -y \ | |
&& apt-get dist-upgrade -y \ | |
&& echo 'step done' | |
# install necessary packages | |
RUN apt-get update && apt-get install -y \ | |
autotools-dev \ | |
blt-dev \ | |
build-essential \ | |
bzip2 \ | |
cmake \ | |
curl \ | |
dpkg-dev \ | |
g++ \ | |
g++-multilib \ | |
gcc \ | |
gcc-multilib \ | |
gfortran \ | |
git \ | |
git-core \ | |
gnuplot \ | |
gnuplot-x11 \ | |
imagemagick \ | |
ipython \ | |
ipython3 \ | |
libbluetooth-dev \ | |
libbz2-dev \ | |
libexpat1-dev \ | |
libffi-dev \ | |
libffi6 \ | |
libffi6-dbg \ | |
libfftw3-dev \ | |
libfreetype6-dev \ | |
libgdbm-dev \ | |
libgfortran-4.9-dev \ | |
libgoogle-glog-dev \ | |
libgpm2 \ | |
libgraphicsmagick1-dev \ | |
libjpeg-dev \ | |
liblapack-dev \ | |
libncursesw5-dev \ | |
libopenblas-dev \ | |
libpng-dev \ | |
libpng12-dev \ | |
libqt4-dev \ | |
libqt4-core \ | |
libqt4-gui \ | |
libreadline-dev \ | |
libsox-dev \ | |
libsox-fmt-all \ | |
libsqlite3-dev \ | |
libssl-dev \ | |
libtinfo-dev \ | |
libzmq3-dev \ | |
mime-support \ | |
ncurses-dev \ | |
net-tools \ | |
netbase \ | |
pkg-config \ | |
python-crypto \ | |
python-dev \ | |
python-mox3 \ | |
python-pil \ | |
python-pip \ | |
python-ply \ | |
python-software-properties \ | |
python-zmq \ | |
quilt \ | |
rsync \ | |
software-properties-common \ | |
sox \ | |
sudo \ | |
swig \ | |
tk-dev \ | |
unzip \ | |
wget \ | |
zip \ | |
zlib1g-dev | |
# update python, pip | |
RUN wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz && \ | |
tar xfz Python-2.7.11.tgz && \ | |
cd Python-2.7.11/ && \ | |
./configure --prefix /usr/local/lib/python2.7.11 --enable-ipv6 && \ | |
make && \ | |
make install && \ | |
cd .. && \ | |
rm -rf Python-2.7.11 && \ | |
rm Python-2.7.11.tgz | |
RUN wget https://bootstrap.pypa.io/get-pip.py && \ | |
python get-pip.py && \ | |
rm get-pip.py | |
# install pip packages | |
RUN pip install --no-cache-dir --upgrade \ | |
Cython \ | |
ipykernel \ | |
ipywidgets \ | |
jupyter \ | |
matplotlib \ | |
notebook \ | |
numpy \ | |
Pillow \ | |
setuptools \ | |
&& ldconfig \ | |
&& python -m ipykernel.kernelspec | |
# boost install | |
ARG boost_version=1.61.0 | |
ARG boost_dir=boost_1_61_0 | |
ENV boost_version ${boost_version} | |
RUN wget http://downloads.sourceforge.net/project/boost/boost/${boost_version}/${boost_dir}.tar.gz \ | |
&& tar xfz ${boost_dir}.tar.gz \ | |
&& rm ${boost_dir}.tar.gz \ | |
&& cd ${boost_dir} \ | |
&& ./bootstrap.sh \ | |
&& ./b2 --without-python --prefix=/usr -j 4 link=shared runtime-link=shared install \ | |
&& cd .. && rm -rf ${boost_dir} && ldconfig | |
# NVIDIA CUDA Stuff | |
# Cuda install from nvidia docker images 3/28 | |
ENV CUDA_VERSION 7.5 | |
ENV CUDA_PKG_VERSION "$CUDA_VERSION=7.5-18" | |
RUN apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/GPGKEY && \ | |
apt-key adv --export --no-emit-version -a 889bee522da690103c4b085ed88c3d385c37d3be | tail -n +2 > cudasign.pub && \ | |
echo "bd841d59a27a406e513db7d405550894188a4c1cd96bf8aa4f82f1b39e0b5c1c cudasign.pub" | sha256sum -c --strict - && rm cudasign.pub && \ | |
echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64 /" > /etc/apt/sources.list.d/cuda.list && \ | |
echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list && \ | |
apt-get update && \ | |
apt-get install -y --no-install-recommends \ | |
cuda-nvrtc-$CUDA_PKG_VERSION \ | |
cuda-cusolver-$CUDA_PKG_VERSION \ | |
cuda-cublas-$CUDA_PKG_VERSION \ | |
cuda-cufft-$CUDA_PKG_VERSION \ | |
cuda-curand-$CUDA_PKG_VERSION \ | |
cuda-cusparse-$CUDA_PKG_VERSION \ | |
cuda-npp-$CUDA_PKG_VERSION \ | |
cuda-cudart-$CUDA_PKG_VERSION && \ | |
ln -s cuda-$CUDA_VERSION /usr/local/cuda && \ | |
apt-get install -y --no-install-recommends \ | |
cuda-core-$CUDA_PKG_VERSION \ | |
cuda-misc-headers-$CUDA_PKG_VERSION \ | |
cuda-command-line-tools-$CUDA_PKG_VERSION \ | |
cuda-license-$CUDA_PKG_VERSION \ | |
cuda-nvrtc-dev-$CUDA_PKG_VERSION \ | |
cuda-cusolver-dev-$CUDA_PKG_VERSION \ | |
cuda-cublas-dev-$CUDA_PKG_VERSION \ | |
cuda-cufft-dev-$CUDA_PKG_VERSION \ | |
cuda-curand-dev-$CUDA_PKG_VERSION \ | |
cuda-cusparse-dev-$CUDA_PKG_VERSION \ | |
cuda-npp-dev-$CUDA_PKG_VERSION \ | |
cuda-cudart-dev-$CUDA_PKG_VERSION \ | |
cuda-driver-dev-$CUDA_PKG_VERSION && \ | |
ldconfig && \ | |
apt-get install -y --no-install-recommends \ | |
libcudnn4-dev=4.0.7 \ | |
libcudnn5-dev \ | |
gcc-4.8 \ | |
g++-4.8 && \ | |
ldconfig && \ | |
echo "done CUDA prerequisites" | |
# Add nvidia and cuda artifacts to search paths, and install gpu dev kit | |
ENV PATH /usr/local/cuda/bin:/usr/local/nvidia/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | |
RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ | |
echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf && \ | |
echo "/usr/local/cuda/lib" >> /etc/ld.so.conf.d/cuda.conf && \ | |
echo "/usr/local/cuda/lib64" >> /etc/ld.so.conf.d/cuda.conf && \ | |
ldconfig && \ | |
wget http://developer.download.nvidia.com/compute/cuda//7_0/Prod/local_installers/cuda_346.46_gdk_linux.run && \ | |
chmod +x ./cuda_346.46_gdk_linux.run && \ | |
./cuda_346.46_gdk_linux.run --installdir="/" --silent && \ | |
rm ./cuda_346.46_gdk_linux.run | |
# Set up CUDA variables | |
ENV CUDA_PATH /usr/local/cuda | |
ENV LD_LIBRARY_PATH /usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/local/nvidia/lib64:/usr/local/nvidia/lib:$LD_LIBRARY_PATH | |
RUN ldconfig | |
ENV PYTHON_LIBRARY=/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so | |
# 5/13/2016 Inject nvidia-tools (hand collected) | |
# Assume that _nvidia-tools directory had been downloaded | |
# via `docker pull surround/nvidia-tools` | |
ADD _data/nvidia-tools/etc/ /etc/ | |
ADD _data/nvidia-tools/usr/local/ /usr/local/ | |
RUN ln -s /usr/local/nvidia/lib64/libcuda.so.1 /usr/local/nvidia/lib64/libcuda.so | |
# Install Torch. Dependencies already installed | |
RUN git clone https://github.com/torch/distro.git /root/torch --recursive && \ | |
cd /root/torch && \ | |
./install.sh | |
# Export environment variables manually | |
ENV LUA_PATH='/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;/root/torch/install/share/lua/5.1/?.lua;/root/torch/install/share/lua/5.1/?/init.lua;./?.lua;/root/torch/install/share/luajit-2.1.0-beta1/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua' | |
ENV LUA_CPATH='/root/.luarocks/lib/lua/5.1/?.so;/root/torch/install/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so' | |
ENV PATH=/root/torch/install/bin:$PATH | |
ENV LD_LIBRARY_PATH=/root/torch/install/lib:$LD_LIBRARY_PATH | |
ENV DYLD_LIBRARY_PATH=/root/torch/install/lib:$DYLD_LIBRARY_PATH | |
ENV LUA_CPATH='/root/torch/install/lib/?.so;'$LUA_CPATH | |
# install coco for deepmask | |
RUN git clone https://github.com/pdollar/coco /root/coco && \ | |
cd /root/coco/PythonAPI && make && \ | |
cd /root/coco && luarocks make LuaAPI/rocks/coco-scm-1.rockspec | |
ENV PYTHONPATH=/root/coco/PythonAPI:$PYTHONPATH | |
# install lua prereqs for multipathnet | |
RUN luarocks install class && \ | |
luarocks install fbpython && \ | |
luarocks install inn && \ | |
luarocks install optnet && \ | |
luarocks install torchnet && \ | |
luarocks install lbase64 && \ | |
luarocks install iterm | |
# install deepmask and multipathnet | |
RUN git clone https://github.com/facebookresearch/deepmask.git /root/deepmask && \ | |
git clone https://github.com/facebookresearch/multipathnet /root/multipathnet && \ | |
cd /root/multipathnet && \ | |
ln -s ../deepmask | |
# models for deepmask | |
RUN mkdir -p /root/deepmask/pretrained/deepmask && \ | |
cd /root/deepmask/pretrained/deepmask && \ | |
wget https://s3.amazonaws.com/deepmask/models/deepmask/model.t7 && \ | |
mkdir -p /root/deepmask/pretrained/sharpmask && \ | |
cd /root/deepmask/pretrained/sharpmask && \ | |
wget https://s3.amazonaws.com/deepmask/models/sharpmask/model.t7 | |
# get models for multipathnet | |
RUN mkdir -p /root/multipathnet/data/models && \ | |
cd /root/multipathnet/data/models && \ | |
wget https://s3.amazonaws.com/deepmask/models/sharpmask/model.t7 -O sharpmask.t7 && \ | |
wget https://s3.amazonaws.com/multipathnet/models/resnet18_integral_coco.t7 && \ | |
mkdir -p /root/multipathnet/data/annotations && \ | |
cd /root/multipathnet/data && \ | |
wget http://msvocds.blob.core.windows.net/annotations-1-0-3/instances_train-val2014.zip && \ | |
unzip instances_train-val2014.zip && \ | |
rm instances_train-val2014.zip | |
# Set ~/torch as working directory | |
WORKDIR /root/deepmask | |
# IPython | |
EXPOSE 8888 | |
MAINTAINER Surround Developers <dev@surround.io> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment