83 lines
3.6 KiB
Docker
83 lines
3.6 KiB
Docker
FROM public.ecr.aws/j1r0q0g6/notebooks/notebook-servers/jupyter:master-434b10ab
|
|
|
|
USER root
|
|
|
|
# needed for LIBNVINFER
|
|
ARG OLD_CUDA_VERSION=11.1
|
|
# args - software versions
|
|
ARG CUDA_VERSION=11.2
|
|
ARG CUDA_COMPAT_VERSION=460.73.01-1
|
|
ARG CUDA_CUDART_VERSION=11.2.152-1
|
|
ARG CUDNN_VERSION=8.1.0.77-1
|
|
ARG LIBNVINFER_VERSION=7.2.3-1
|
|
|
|
# we need bash's env var character substitution
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
# install - cuda
|
|
# for `cuda-compat-*`: https://docs.nvidia.com/cuda/eula/index.html#attachment-a
|
|
RUN curl -sL "https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub" | apt-key add - \
|
|
&& echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" > /etc/apt/sources.list.d/cuda.list \
|
|
&& apt-get -yq update \
|
|
&& apt-get -yq install --no-install-recommends \
|
|
cuda-compat-${CUDA_VERSION/./-}=${CUDA_COMPAT_VERSION} \
|
|
cuda-cudart-${CUDA_VERSION/./-}=${CUDA_CUDART_VERSION} \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& ln -s /usr/local/cuda-${CUDA_VERSION} /usr/local/cuda
|
|
|
|
# envs - cuda
|
|
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
|
|
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
|
|
ENV NVIDIA_VISIBLE_DEVICES all
|
|
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
|
|
ENV NVIDIA_REQUIRE_CUDA "cuda>=${CUDA_VERSION}"
|
|
|
|
# install - other nvidia stuff
|
|
RUN curl -sL "https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub" | apt-key add - \
|
|
&& echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list \
|
|
&& echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list \
|
|
&& apt-get -yq update \
|
|
&& apt-get -yq install --no-install-recommends \
|
|
cm-super \
|
|
cuda-command-line-tools-${CUDA_VERSION/./-} \
|
|
cuda-nvrtc-${CUDA_VERSION/./-} \
|
|
libcublas-${CUDA_VERSION/./-} \
|
|
libcudnn8=${CUDNN_VERSION}+cuda${CUDA_VERSION} \
|
|
libcufft-${CUDA_VERSION/./-} \
|
|
libcurand-${CUDA_VERSION/./-} \
|
|
libcusolver-${CUDA_VERSION/./-} \
|
|
libcusparse-${CUDA_VERSION/./-} \
|
|
libfreetype6-dev \
|
|
libhdf5-serial-dev \
|
|
libnvinfer7=${LIBNVINFER_VERSION}+cuda${OLD_CUDA_VERSION} \
|
|
libnvinfer-plugin7=${LIBNVINFER_VERSION}+cuda${OLD_CUDA_VERSION} \
|
|
libzmq3-dev \
|
|
pkg-config \
|
|
# can't be used until NVIDIA updates (requires python < 3.7)
|
|
# python3-libnvinfer=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION} \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# tensorflow fix - CUDA profiling, tensorflow requires CUPTI
|
|
ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
|
|
|
|
# tensorflow fix - wrong libcuda lib path (+ reconfigure dynamic linker run-time bindings)
|
|
RUN ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 \
|
|
&& echo "/usr/local/cuda/lib64/stubs" > /etc/ld.so.conf.d/z-cuda-stubs.conf \
|
|
&& ldconfig
|
|
|
|
# tensorflow fix - wrong libcusolver lib path
|
|
# https://github.com/tensorflow/tensorflow/issues/43947#issuecomment-748273679
|
|
RUN ln -s /usr/local/cuda-${CUDA_VERSION}/targets/x86_64-linux/lib/libcusolver.so.11 /usr/local/cuda-${CUDA_VERSION}/targets/x86_64-linux/lib/libcusolver.so.10
|
|
|
|
# tensorflow fix - some tensorflow tools expect a `python` binary
|
|
RUN ln -s $(which python3) /usr/local/bin/python
|
|
|
|
USER $NB_UID
|
|
|
|
# install - requirements.txt
|
|
COPY --chown=jovyan:users cuda-requirements.txt /tmp/requirements.txt
|
|
RUN python3 -m pip install -r /tmp/requirements.txt --quiet --no-cache-dir \
|
|
&& rm -f /tmp/requirements.txt
|