Skip to content

Commit d846209

Browse files
committed
base kernel change to common-base:20.03-py36-cuda10.1
1 parent 713b1e2 commit d846209

File tree

1 file changed

+17
-333
lines changed

1 file changed

+17
-333
lines changed
Lines changed: 17 additions & 333 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
1-
FROM nvidia/cuda:10.1-devel-ubuntu18.04
1+
FROM lablup/common-base:20.03-py36-cuda10.1
22

3-
# TensorFlow version is tightly coupled to CUDA and cuDNN so it should be selected carefully
4-
ARG CUDA=10.1
5-
ARG LIBNVINFER=6.0.1-1
6-
ARG LIBNVINFER_MAJOR_VERSION=6
7-
ARG CUDNN=7.6.4.38-1
8-
ENV CUDNN_VERSION=7.6.4.38-1+cuda10.1
9-
ENV NCCL_VERSION=2.4.8-1+cuda10.1
3+
# Install TensorFlow, Keras, PyTorch and MXNet
4+
ENV TENSORFLOW_VERSION=2.2.0-rc0
5+
#ARG CUDA=10.1
6+
#ARG LIBNVINFER=6.0.1-1
7+
#ARG LIBNVINFER_MAJOR_VERSION=6
8+
#ENV CUDNN_VERSION=7.6.4.38-1+cuda10.1
9+
#ENV NCCL_VERSION=2.4.8-1+cuda10.1
1010
ENV DEBIAN_FRONTEND=noninteractive
1111
ENV mecab_dicdir /usr/local/lib/mecab/dic/mecab-ko-dic
1212

13-
# Python 2.7 or 3.7 is supported by Ubuntu Bionic out of the box
14-
ARG python=3.6
15-
ENV PYTHON_VERSION=${python}
16-
1713
ENV PYTHONUNBUFFERED=1 \
1814
LD_LIBRARY_PATH="/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/lib64:/usr/local/nvidia/lib64:/usr/local/cuda/lib64/stubs:/usr/include/x86_64-linux-gnu" \
1915
PATH="/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin/mecab" \
@@ -22,151 +18,6 @@ ENV PYTHONUNBUFFERED=1 \
2218
# Set default shell to /bin/bash
2319
SHELL ["/bin/bash", "-cu"]
2420

25-
RUN apt-get update -y && \
26-
apt-get install -y --no-install-recommends software-properties-common && \
27-
add-apt-repository -y "deb http://security.ubuntu.com/ubuntu xenial-security main" && \
28-
apt-get update -y && \
29-
apt-get install -y --allow-downgrades --allow-change-held-packages --no-install-recommends \
30-
build-essential \
31-
ca-certificates \
32-
gcc g++ make \
33-
gfortran \
34-
dkms \
35-
git \
36-
curl \
37-
vim \
38-
yasm \
39-
wget zip unzip \
40-
ca-certificates \
41-
software-properties-common \
42-
openssh-client openssh-server \
43-
libssl-dev \
44-
libmpdec2 \
45-
pdsh curl sudo net-tools \
46-
iputils-ping \
47-
cuda-command-line-tools-${CUDA/./-} \
48-
libcublas10=10.2.1.243-1 \
49-
libcublas-dev=10.2.1.243-1 \
50-
cuda-nvrtc-${CUDA/./-} \
51-
cuda-nvrtc-dev-${CUDA/./-} \
52-
cuda-cudart-dev-${CUDA/./-} \
53-
cuda-cufft-dev-${CUDA/./-} \
54-
cuda-curand-dev-${CUDA/./-} \
55-
cuda-cusolver-dev-${CUDA/./-} \
56-
cuda-cusparse-dev-${CUDA/./-} \
57-
libcudnn7=${CUDNN_VERSION} \
58-
libcudnn7-dev=${CUDNN}+cuda${CUDA} \
59-
libnccl2=${NCCL_VERSION} \
60-
libnccl-dev=${NCCL_VERSION} \
61-
libcurl3-dev \
62-
libfreetype6-dev \
63-
libhdf5-serial-dev \
64-
libzmq3-dev \
65-
libjpeg-dev \
66-
libpng-dev \
67-
libsm6 \
68-
libxext6 \
69-
libxrender-dev \
70-
libcairo2-dev libgirepository1.0-dev pkg-config gir1.2-gtk-3.0 \
71-
libgeos-dev libgeos++-dev \
72-
pkg-config \
73-
zlib1g-dev \
74-
mime-support \
75-
proj-bin libproj-dev libgeos-dev libgeos++-dev graphviz \
76-
python${PYTHON_VERSION} \
77-
python${PYTHON_VERSION}-dev \
78-
libnuma-dev \
79-
libjasper-dev \
80-
libtiff-dev \
81-
libavcodec-dev \
82-
libavformat-dev \
83-
libswscale-dev \
84-
libxine2-dev \
85-
libv4l-dev \
86-
libboost-dev \
87-
libboost-system-dev \
88-
libboost-filesystem-dev \
89-
fonts-nanum \
90-
fonts-nanum-coding \
91-
fonts-nanum-extra
92-
RUN find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \
93-
rm /usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a
94-
95-
96-
RUN ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 \
97-
&& echo "/usr/local/cuda/lib64/stubs" > /etc/ld.so.conf.d/z-cuda-stubs.conf \
98-
&& ldconfig
99-
100-
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
101-
apt-get update -y && \
102-
apt-get install -y nodejs
103-
104-
RUN apt-get update && \
105-
apt-get install -y --no-install-recommends libnvinfer${LIBNVINFER_MAJOR_VERSION}=${LIBNVINFER}+cuda${CUDA} \
106-
libnvinfer-dev=${LIBNVINFER}+cuda${CUDA} \
107-
libnvinfer-plugin-dev=${LIBNVINFER}+cuda${CUDA} \
108-
libnvinfer-plugin${LIBNVINFER_MAJOR_VERSION}=${LIBNVINFER}+cuda${CUDA} \
109-
&& apt-get clean \
110-
&& rm -rf /var/lib/apt/lists/*
111-
112-
# OFED
113-
ENV STAGE_DIR=/tmp
114-
RUN mkdir -p ${STAGE_DIR}
115-
ENV MLNX_OFED_VERSION=4.6-1.0.1.1
116-
RUN cd ${STAGE_DIR} && \
117-
wget -q -O - http://www.mellanox.com/downloads/ofed/MLNX_OFED-${MLNX_OFED_VERSION}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64.tgz | tar xzf -
118-
RUN cd ${STAGE_DIR}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64 && \
119-
./mlnxofedinstall --user-space-only --without-fw-update --all -q && \
120-
cd ${STAGE_DIR} && \
121-
rm -rf ${STAGE_DIR}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64*
122-
123-
# nvidia-peer
124-
RUN mkdir -p ${STAGE_DIR} && \
125-
git clone https://github.com/Mellanox/nv_peer_memory.git ${STAGE_DIR}/nv_peer_memory && \
126-
cd ${STAGE_DIR}/nv_peer_memory && \
127-
./build_module.sh && \
128-
cd ${STAGE_DIR} && \
129-
tar xzf ${STAGE_DIR}/nvidia-peer-memory_1.0.orig.tar.gz && \
130-
cd ${STAGE_DIR}/nvidia-peer-memory-1.0 && \
131-
dpkg-buildpackage -us -uc && \
132-
dpkg -i ${STAGE_DIR}/nvidia-peer-memory_1.0-8_all.deb
133-
134-
# Install CUDA-10.1 + cuDNN 7.6.0
135-
RUN ln -s /usr/local/cuda-10.1 /usr/local/cuda && \
136-
ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so.7.6.0 /usr/local/cuda/lib64/libcudnn.so && \
137-
ldconfig
138-
139-
RUN if [[ "${PYTHON_VERSION}" == "3.6" ]]; then \
140-
apt-get install -y python${PYTHON_VERSION}-distutils python-apt ; \
141-
fi
142-
143-
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 2
144-
145-
WORKDIR /tmp
146-
RUN curl https://bootstrap.pypa.io/get-pip.py | python3 && \
147-
python3 -m pip install --no-cache-dir -U setuptools pip
148-
149-
# Install TensorFlow, Keras, PyTorch and MXNet
150-
RUN python3 -m pip install pip --no-cache-dir -Iv \
151-
Cython==0.29.13 \
152-
numpy==1.16.3 \
153-
scipy==1.4.1 \
154-
scikit-image==0.16.2 \
155-
scikit-learn==0.22.2 \
156-
tornado==6.0.4 \
157-
pystan==2.19.1.1 \
158-
pycairo==1.19.0 \
159-
matplotlib==3.1.3
160-
RUN python3 -m pip install pip --no-cache-dir \
161-
Cartopy==0.17.0 \
162-
notebook==6.0.3
163-
164-
WORKDIR /tmp
165-
COPY ./requirements.20.03.txt /tmp
166-
RUN python3 -m pip install --no-cache-dir -Ir requirements.20.03.txt
167-
168-
ENV TENSORFLOW_VERSION=2.2.0-rc0
169-
17021
RUN python3 -m pip install pip --no-cache-dir \
17122
tensorflow-transform==0.21.2 \
17223
tensorflow_model_analysis==0.21.6 \
@@ -205,182 +56,28 @@ RUN python3 -m pip install pip --no-cache-dir \
20556
jupyter-tensorboard==0.2.0 \
20657
tensorwatch==0.8.10 \
20758
jupyterlab-nvdashboard==0.2.0
208-
209-
RUN python3 -m pip install --no-cache-dir --extra-index-url \
210-
https://developer.download.nvidia.com/compute/redist/cuda/10.0 \
211-
nvidia-dali \
212-
nvidia-dali-tf-plugin
213-
214-
215-
RUN python3 -m pip install --no-cache-dir -Iv \
216-
konlpy h5py && \
217-
rm -f /tmp/*.whl /tmp/requirements.20.03.txt
218-
219-
RUN apt-get update && \
220-
apt-get install -y \
221-
openjdk-8-jdk \
222-
automake \
223-
&& \
224-
cd /tmp && \
225-
curl -LO https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz && \
226-
tar zxfv mecab-0.996-ko-0.9.2.tar.gz && \
227-
cd mecab-0.996-ko-0.9.2 && \
228-
./configure && \
229-
make -j$(nproc) && \
230-
make check && \
231-
make install
232-
233-
RUN echo "Install mecab-ko-dic" && \
234-
cd /tmp && \
235-
ldconfig && \
236-
curl -LO https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz && \
237-
tar -zxvf mecab-ko-dic-2.1.1-20180720.tar.gz && \
238-
cd mecab-ko-dic-2.1.1-20180720 && \
239-
./autogen.sh && \
240-
./configure && \
241-
make -j$(nproc) && \
242-
sh -c 'echo "dicdir=/usr/local/lib/mecab/dic/mecab-ko-dic" > /usr/local/etc/mecabrc' && \
243-
make install && \
244-
cd /tmp && \
245-
git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git && \
246-
python3 -m pip install /tmp/mecab-python-0.996
247-
248-
RUN ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h && \
249-
apt-get install -y \
250-
libgstreamer1.0-dev \
251-
libgstreamer-plugins-base1.0-dev \
252-
libgtk-3-dev \
253-
libtbb-dev \
254-
libatlas-base-dev \
255-
libdc1394-22-dev \
256-
libxvidcore-dev \
257-
libfaac-dev \
258-
libmp3lame-dev \
259-
libtheora-dev \
260-
libvorbis-dev \
261-
libxvidcore-dev \
262-
libopencore-amrnb-dev libopencore-amrwb-dev \
263-
libavresample-dev \
264-
x264 \
265-
libx264-dev \
266-
v4l-utils \
267-
libprotobuf-dev protobuf-compiler \
268-
libgoogle-glog-dev libgflags-dev \
269-
libgphoto2-dev \
270-
libeigen3-dev \
271-
libhdf5-dev \
272-
&& \
273-
apt-get clean && \
274-
rm -rf /var/lib/apt/lists/
275-
276-
RUN wget https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.sh \
277-
-q -O /tmp/cmake-install.sh && \
278-
chmod u+x /tmp/cmake-install.sh && \
279-
mkdir /usr/bin/cmake && \
280-
/tmp/cmake-install.sh --skip-license --prefix=/usr/bin/cmake && \
281-
rm /tmp/cmake-install.sh
282-
283-
ENV PATH="/usr/bin/cmake/bin:${PATH}"
284-
285-
WORKDIR /tmp
286-
ENV OPENCV_VERSION="4.1.0"
287-
RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
288-
wget -O opencv-contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \
289-
unzip ${OPENCV_VERSION}.zip && \
290-
unzip opencv-contrib.zip && \
291-
mkdir opencv-${OPENCV_VERSION}/cmake_binary && \
292-
cd opencv-${OPENCV_VERSION}/cmake_binary && \
293-
cmake \
294-
-DCMAKE_BUILD_TYPE=RELEASE \
295-
-D BUILD_TIFF=ON \
296-
-D BUILD_opencv_java=OFF \
297-
-D WITH_CUDA=ON \
298-
-D CUDA_NVCC_FLAGS=--expt-relaxed-constexpr \
299-
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.1 \
300-
-D ENABLE_FAST_MATH=1 \
301-
-D CUDA_FAST_MATH=1 \
302-
-D WITH_CUBLAS=1 \
303-
-D WITH_OPENGL=ON \
304-
-D WITH_OPENCL=ON \
305-
-D WITH_IPP=ON \
306-
-D WITH_TBB=ON \
307-
-D WITH_EIGEN=ON \
308-
-D WITH_V4L=ON \
309-
-D BUILD_TESTS=OFF \
310-
-D BUILD_PERF_TESTS=OFF \
311-
-D OPENCV_EXTRA_MODULES_PATH="../../opencv_contrib-4.1.0/modules" \
312-
-D CMAKE_BUILD_TYPE=RELEASE \
313-
-D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") \
314-
-D PYTHON_EXECUTABLE=$(which python3) \
315-
-D PYTHON_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
316-
-D PYTHON_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
317-
.. 2>&1 | tee cmake_messages.txt && \
318-
make -j$(nproc) && \
319-
make install && \
320-
cd /tmp && \
321-
rm -fr opencv*
322-
323-
RUN python3 -m pip install --no-cache-dir opencv-python && \
324-
rm -rf /root/.cache
32559

326-
# XGBoost
327-
RUN git clone --recursive https://github.com/dmlc/xgboost && \
328-
cd xgboost && \
329-
mkdir build && \
330-
cd build && \
331-
cmake .. -DUSE_CUDA=ON -DUSE_NCCL=ON && \
332-
make -j$(nproc) && \
333-
cd ../python-package && \
334-
python3 setup.py install
335-
336-
RUN git clone --recursive https://github.com/Microsoft/LightGBM && \
337-
cd LightGBM && \
338-
mkdir build ; cd build && \
339-
cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda-10.1/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda-10.1/include/ .. && \
340-
make -j$(nproc) && \
341-
cd ../python-package && \
342-
python3 setup.py install --precompile
343-
344-
# Install Open MPI
345-
RUN mkdir /tmp/openmpi && \
346-
cd /tmp/openmpi && \
347-
wget https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.1.tar.gz && \
348-
tar zxf openmpi-4.0.1.tar.gz && \
349-
cd openmpi-4.0.1 && \
350-
./configure --enable-orterun-prefix-by-default && \
351-
make -j $(nproc) all && \
352-
make install && \
353-
ldconfig && \
354-
rm -rf /tmp/openmpi*
60+
RUN python3 -m pip install --no-cache-dir \
61+
tensorwatch==0.8.10 \
62+
jupyterlab-nvdashboard==0.2.0
35563

35664
# Install Horovod, temporarily using CUDA stubs
35765
RUN ldconfig /usr/local/cuda/targets/x86_64-linux/lib/stubs && \
35866
HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_GPU_BROADCAST=NCCL \
359-
HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 \
67+
HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITH_PYTORCH=1 HOROVOD_WITH_MXNET=1 \
36068
pip install --no-cache-dir horovod==0.19.0 && \
36169
ldconfig
36270

36371
RUN python3 -m pip install --no-cache-dir \
36472
mpi4py==3.0.3 \
365-
nni && \
366-
rm -rf /root/.cache && \
367-
rm -rf /tmp/*
368-
369-
# Install OpenSSH for MPI to communicate between containers
370-
RUN apt-get install -y --no-install-recommends openssh-client openssh-server && \
371-
mkdir -p /var/run/sshd
372-
373-
# Allow OpenSSH to talk to containers without asking for confirmation
374-
RUN cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \
375-
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \
376-
mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config
73+
nni
37774

37875
# Install ipython kernelspec
379-
Run python3 -m ipykernel install --display-name "TensorFlow 2.2-rc0 on Python 3.6 (CUDA 10.1)" && \
76+
Run python3 -m ipykernel install --display-name "TensorFlow 2.2rc0 on Python 3.6 (CUDA 10.1)" && \
38077
cat /usr/local/share/jupyter/kernels/python3/kernel.json
38178

38279
# Jupyter notebook extension
383-
RUN mkdir -p /home/work/.jupyter/nbextension
80+
RUN mkdir -p /home/work/.jupyter/nbextension
38481
WORKDIR /home/work/.jupyter/nbextension
38582

38683
RUN jupyter nbextensions_configurator enable && \
@@ -389,22 +86,9 @@ RUN jupyter nbextensions_configurator enable && \
38986
jupyter contrib nbextension install && \
39087
jupyter serverextension enable --py jupyterlab --sys-prefix && \
39188
jupyter labextension install @jupyter-widgets/jupyterlab-manager && \
89+
# jupyter labextension install jupyterlab-nvdashboard && \
39290
git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding && \
39391
jupyter nbextension enable /home/work/.jupyter/nbextension/vim_binding/vim_binding
39492

395-
396-
# Backend.AI specifics
397-
LABEL ai.backend.kernelspec="1" \
398-
ai.backend.envs.corecount="OPENBLAS_NUM_THREADS,OMP_NUM_THREADS,NPROC" \
399-
ai.backend.features="batch query uid-match user-input" \
400-
ai.backend.base-distro="ubuntu16.04" \
401-
ai.backend.resource.min.cpu="1" \
402-
ai.backend.resource.min.mem="1g" \
403-
ai.backend.resource.min.cuda.device=1 \
404-
ai.backend.resource.min.cuda.shares=0.1 \
405-
ai.backend.runtime-type="python" \
406-
ai.backend.runtime-path="/usr/bin/python3" \
407-
ai.backend.service-ports="ipython:pty:3000,tensorboard:http:6006,jupyter:http:8080,jupyterlab:http:8090"
408-
40993
WORKDIR /home/work
410-
# vim: ft=dockerfile
94+
# vim: ft=dockerfile

0 commit comments

Comments
 (0)