Skip to content

Instantly share code, notes, and snippets.

@jhludwig
Last active September 8, 2016 19:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jhludwig/77feeaff62891a5f00c33dc10c365253 to your computer and use it in GitHub Desktop.
Save jhludwig/77feeaff62891a5f00c33dc10c365253 to your computer and use it in GitHub Desktop.
Dockerfile for FAIR Deepmask
# 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