# syntax = docker/dockerfile:experimental # # NOTE: To build this you will need a docker version > 18.06 with # experimental enabled and DOCKER_BUILDKIT=1 # # For reference: # https://docs.docker.com/develop/develop-images/build_enhancements/ # # This Dockerfile will build Docker Image with PyTorch + DNNL + AMD BLIS and Torchvision installed for CPU only # # Example commandline to build PyTorch with AMD BLIS: # sudo DOCKER_BUILDKIT=1 docker build . -t docker-image-repo-name # Example commandline to run the built docker container: # sudo docker run --name container-name -it docker-image-repo-name ARG BASE_IMAGE=ubuntu:18.04 ARG PYTHON_VERSION=3.8 FROM ${BASE_IMAGE} as dev-base CMD echo "Welcome to the PyTorch Docker Container!" && \ echo "Version of PyTorch Installed: " && python -c 'import torch; print(torch.__version__)' && \ echo "Version of Torchvision Installed: " && python -c 'import torchvision; print(torchvision.__version__)' && \ echo "LDD output showing successful linking with BLIS: " && ldd /opt/conda/lib/python3.8/site-packages/torch/_C.cpython-38-x86_64-linux-gnu.so && \ /bin/bash RUN --mount=type=cache,id=apt-dev,target=/var/cache/apt \ apt-get update && apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ ccache \ cmake \ curl \ git \ libjpeg-dev \ libpng-dev \ vim \ wget && \ rm -rf /var/lib/apt/lists/* RUN /usr/sbin/update-ccache-symlinks RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache ENV PATH /opt/conda/bin:$PATH FROM dev-base as conda RUN wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \ chmod +x ~/miniconda.sh && \ ~/miniconda.sh -b -p /opt/conda && \ rm ~/miniconda.sh && \ /opt/conda/bin/conda install -y python=${PYTHON_VERSION} conda-build && \ /opt/conda/bin/conda install -y nomkl pyyaml numpy ipython ninja setuptools cmake cffi typing future && \ /opt/conda/bin/conda clean -ya RUN conda install typing_extensions WORKDIR /root ARG BLIS_URL=https://github.com/amd/blis.git # Download, Build BLIS with multithreading support and place necessary library and include files at BLIS_HOME/lib and BLIS_HOME/include respectively RUN git clone ${BLIS_URL} && cd blis && \ ./configure --prefix=/root/BLISBuild --enable-cblas --enable-threading=openmp auto && make -j && make install && \ if [ ! -e /root/BLISBuild/lib/libblis.so ] ; then cp /root/BLISBuild/lib/libblis*.so /root/BLISBuild/lib/libblis.so ; fi # Build PyTorch with DNNL+BLIS RUN git clone https://github.com/pytorch/pytorch.git && cd pytorch && \ git submodule update --init --recursive --jobs 0 && \ export PATH=/root/BLISBuild/include/blis:$PATH LD_LIBRARY_PATH=/root/BLISBuild/lib:$LD_LIBRARY_PATH && \ export BLIS_HOME=/root/BLISBuild BLAS=BLIS USE_MKLDNN_CBLAS=ON WITH_BLAS=blis && python setup.py install # Build Torchvision RUN git clone https://github.com/pytorch/vision.git && cd vision && \ python setup.py install