Nvidia CUDA 8.0 & cuDNN 5.1
- Configuring Security Group
- SSH
- Jupyter Notebook
- Tensor Board
- Docker
- Requesting AWS EC2 Instance Limit Increase for P2, G2 instances
- Installing Nvidia Docker and Plugins for host EC2
# Configure nvidia-docker
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
sudo apt-get update && sudo apt-get install -y --no-install-recommends cuda-drivers
# Install nvidia-docker and nvidia-docker-plugin
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
- Configuring and modifing docker file for container
FROM tensorflow/tensorflow:latest-gpu-py3
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
git \
libcurl3-dev \
libfreetype6-dev \
libpng12-dev \
libzmq3-dev \
pkg-config \
python3-dev \
rsync \
software-properties-common \
unzip \
zip \
zlib1g-dev \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \
python get-pip.py && \
rm get-pip.py
# Make sure CUDNN is detected
ENV LD_LIBRARY_PATH /usr/local/cuda/lib64/:$LD_LIBRARY_PATH
# workdir
RUN mkdir /src
WORKDIR "/src"
# TensorBoard
EXPOSE 6006
# Jupyter
EXPOSE 8888
RUN pip --no-cache-dir install --upgrade \
ipykernel \
jupyter \
matplotlib \
numpy \
scipy \
sklearn \
pillow \
scikit-learn \
scikit-image \
h5py \
pandas \
tqdm \
tensorflow-gpu \
TFLearn \
git+https://github.com/fchollet/keras.git \
&& \
python -m ipykernel.kernelspec
# Set up our notebook config.
COPY jupyter_notebook_config.py /root/.jupyter/
COPY run.sh /
RUN chmod +x /run.sh
ENTRYPOINT ["/run.sh"]
import os
from IPython.lib import passwd
c.NotebookApp.ip = '*'
c.NotebookApp.port = int(os.getenv('PORT', 8888))
c.NotebookApp.open_browser = False
c.MultiKernelManager.default_kernel_name = 'python'
# sets a password if PASSWORD is set in the environment
if 'PASSWORD' in os.environ:
c.NotebookApp.password = passwd(os.environ['PASSWORD'])
del os.environ['PASSWORD']
#!/bin/bash
set -e
if [ -z "$1" ]
then
jupyter notebook
elif [ "$1" == *".ipynb"* ]
then
jupyter notebook "$1"
else
exec "$@"
fi