1
- FROM nvidia/cuda:10.1-devel-ubuntu18.04
1
+ FROM lablup/common-base:20.03-py36-cuda10.1
2
2
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
10
10
ENV DEBIAN_FRONTEND=noninteractive
11
11
ENV mecab_dicdir /usr/local/lib/mecab/dic/mecab-ko-dic
12
12
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
-
17
13
ENV PYTHONUNBUFFERED=1 \
18
14
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" \
19
15
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 \
22
18
# Set default shell to /bin/bash
23
19
SHELL ["/bin/bash" , "-cu" ]
24
20
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
-
170
21
RUN python3 -m pip install pip --no-cache-dir \
171
22
tensorflow-transform==0.21.2 \
172
23
tensorflow_model_analysis==0.21.6 \
@@ -205,182 +56,28 @@ RUN python3 -m pip install pip --no-cache-dir \
205
56
jupyter-tensorboard==0.2.0 \
206
57
tensorwatch==0.8.10 \
207
58
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
325
59
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
355
63
356
64
# Install Horovod, temporarily using CUDA stubs
357
65
RUN ldconfig /usr/local/cuda/targets/x86_64-linux/lib/stubs && \
358
66
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 \
360
68
pip install --no-cache-dir horovod==0.19.0 && \
361
69
ldconfig
362
70
363
71
RUN python3 -m pip install --no-cache-dir \
364
72
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
377
74
378
75
# 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)" && \
380
77
cat /usr/local/share/jupyter/kernels/python3/kernel.json
381
78
382
79
# Jupyter notebook extension
383
- RUN mkdir -p /home/work/.jupyter/nbextension
80
+ RUN mkdir -p /home/work/.jupyter/nbextension
384
81
WORKDIR /home/work/.jupyter/nbextension
385
82
386
83
RUN jupyter nbextensions_configurator enable && \
@@ -389,22 +86,9 @@ RUN jupyter nbextensions_configurator enable && \
389
86
jupyter contrib nbextension install && \
390
87
jupyter serverextension enable --py jupyterlab --sys-prefix && \
391
88
jupyter labextension install @jupyter-widgets/jupyterlab-manager && \
89
+ # jupyter labextension install jupyterlab-nvdashboard && \
392
90
git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding && \
393
91
jupyter nbextension enable /home/work/.jupyter/nbextension/vim_binding/vim_binding
394
92
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
-
409
93
WORKDIR /home/work
410
- # vim: ft=dockerfile
94
+ # vim: ft=dockerfile
0 commit comments