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