pytorch

Форк
0
/
Dockerfile 
108 строк · 4.1 Кб
1
# syntax = docker/dockerfile:experimental
2
#
3
# NOTE: To build this you will need a docker version > 18.06 with
4
#       experimental enabled and DOCKER_BUILDKIT=1
5
#
6
#       If you do not use buildkit you are not going to have a good time
7
#
8
#       For reference:
9
#           https://docs.docker.com/develop/develop-images/build_enhancements/
10
ARG BASE_IMAGE=ubuntu:20.04
11
ARG PYTHON_VERSION=3.8
12

13
FROM ${BASE_IMAGE} as dev-base
14
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
15
        build-essential \
16
        ca-certificates \
17
        ccache \
18
        cmake \
19
        curl \
20
        git \
21
        libjpeg-dev \
22
        libpng-dev && \
23
    rm -rf /var/lib/apt/lists/*
24
RUN /usr/sbin/update-ccache-symlinks
25
RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache
26
ENV PATH /opt/conda/bin:$PATH
27

28
FROM dev-base as conda
29
ARG PYTHON_VERSION=3.8
30
# Automatically set by buildx
31
ARG TARGETPLATFORM
32
# translating Docker's TARGETPLATFORM into miniconda arches
33
RUN case ${TARGETPLATFORM} in \
34
         "linux/arm64")  MINICONDA_ARCH=aarch64  ;; \
35
         *)              MINICONDA_ARCH=x86_64   ;; \
36
    esac && \
37
    curl -fsSL -v -o ~/miniconda.sh -O  "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-${MINICONDA_ARCH}.sh"
38
COPY requirements.txt .
39
# Manually invoke bash on miniconda script per https://github.com/conda/conda/issues/10431
40
RUN chmod +x ~/miniconda.sh && \
41
    bash ~/miniconda.sh -b -p /opt/conda && \
42
    rm ~/miniconda.sh && \
43
    /opt/conda/bin/conda install -y python=${PYTHON_VERSION} cmake conda-build pyyaml numpy ipython && \
44
    /opt/conda/bin/python -mpip install -r requirements.txt && \
45
    /opt/conda/bin/conda clean -ya
46

47
FROM dev-base as submodule-update
48
WORKDIR /opt/pytorch
49
COPY . .
50
RUN git submodule update --init --recursive
51

52
FROM conda as build
53
ARG CMAKE_VARS
54
WORKDIR /opt/pytorch
55
COPY --from=conda /opt/conda /opt/conda
56
COPY --from=submodule-update /opt/pytorch /opt/pytorch
57
RUN make triton
58
RUN --mount=type=cache,target=/opt/ccache \
59
    export eval ${CMAKE_VARS} && \
60
    TORCH_CUDA_ARCH_LIST="3.5 5.2 6.0 6.1 7.0+PTX 8.0" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" \
61
    CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
62
    python setup.py install
63

64
FROM conda as conda-installs
65
ARG PYTHON_VERSION=3.8
66
ARG CUDA_VERSION=12.1
67
ARG CUDA_CHANNEL=nvidia
68
ARG INSTALL_CHANNEL=pytorch-nightly
69
# Automatically set by buildx
70
# Note conda needs to be pinned to 23.5.2 see: https://github.com/pytorch/pytorch/issues/106470
71
RUN /opt/conda/bin/conda install -c "${INSTALL_CHANNEL}" -y python=${PYTHON_VERSION} conda=23.5.2
72
ARG TARGETPLATFORM
73

74
# On arm64 we can only install wheel packages.
75
RUN case ${TARGETPLATFORM} in \
76
         "linux/arm64")  pip install --extra-index-url https://download.pytorch.org/whl/cpu/ torch torchvision torchaudio ;; \
77
         *)              /opt/conda/bin/conda install -c "${INSTALL_CHANNEL}" -c "${CUDA_CHANNEL}" -y "python=${PYTHON_VERSION}" pytorch torchvision torchaudio "pytorch-cuda=$(echo $CUDA_VERSION | cut -d'.' -f 1-2)"  ;; \
78
    esac && \
79
    /opt/conda/bin/conda clean -ya
80
RUN /opt/conda/bin/pip install torchelastic
81

82
FROM ${BASE_IMAGE} as official
83
ARG PYTORCH_VERSION
84
ARG TRITON_VERSION
85
ARG TARGETPLATFORM
86
ARG CUDA_VERSION
87
LABEL com.nvidia.volumes.needed="nvidia_driver"
88
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
89
        ca-certificates \
90
        libjpeg-dev \
91
        libpng-dev \
92
        && rm -rf /var/lib/apt/lists/*
93
COPY --from=conda-installs /opt/conda /opt/conda
94
RUN if test -n "${TRITON_VERSION}" -a "${TARGETPLATFORM}" != "linux/arm64"; then \
95
        DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends gcc; \
96
        rm -rf /var/lib/apt/lists/*; \
97
    fi
98
ENV PATH /opt/conda/bin:$PATH
99
ENV NVIDIA_VISIBLE_DEVICES all
100
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
101
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
102
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:$PATH
103
ENV PYTORCH_VERSION ${PYTORCH_VERSION}
104
WORKDIR /workspace
105

106
FROM official as dev
107
# Should override the already installed version from the official-image stage
108
COPY --from=build /opt/conda /opt/conda
109

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.