Собрать и использовать кастомный Docker-образ для задачи обучения

Docker registry используется для хранения кастомных Docker-образов. Экземпляр образа в Docker registry идентифицируется по тегу.

Кастомные образы предназначены для установки зависимостей, которые нужны пользователю и отсутствуют в базовых образах ML Space.

Кастомные образы с префиксом «job-» используются в Environments для обучения моделей.

Шаг 1. Соберите кастомный образ для задачи обучения на основе базового

Сборка кастомного образа осуществляется локально.

Dockerfile — текстовый документ, который содержит все необходимые команды для сборки образа.

В образе будет:

  • Обновление списка пакетов apt. Сначала обновляется список доступных пакетов, чтобы убедиться, что устанавливаются последние версии.

  • Установка дополнительных apt пакетов. Таких как curl для работы с сетью, gdb для отладки и htop для мониторинга системы. После установки очищается кеш apt, чтобы уменьшить размер образа.

  • Установка дополнительных пакетов Python через pip. Установка дополнительных библиотек Python, таких как pandas для работы с данными, seaborn для визуализации и scikit-learn для машинного обучения. Используется флаг --no-cache-dir для уменьшения размера образа, так как кеш pip не сохраняется.

Общий вид
FROM cr.msk.ai.cloud.ru/aicloud-base-images/cuda12.1-torch2-py311:0.0.36     # Using an image with CUDA 12.1, PyTorch 2 and Python 3.11 from Cloud.ru

USER root

RUN apt-get update && apt-get install -y \          # Updating the list of packages and installing additional packages via apt
    curl \              # Add the necessary packages, for example, for working with the network
    gdb \               # Debugging Tools
    htop \              # Additional utilities
    && rm -rf /var/lib/apt/lists/*

USER user

RUN pip install --no-cache-dir \        # Installing additional Python libraries via pip
    pandas \     # Library for working with data
    seaborn \    # Library for data visualization
    scikit-learn # Machine learning and data analysis

Сборка образа с необходимой версией PyTorch

Сборка образа с необходимой версией PyTorch из исходников, если требуется определенная совместимость.

Сборка образа с необходимой версией PyTorch
FROM cr.msk.ai.cloud.ru/aicloud-base-images/cuda12.1-torch2-py311:0.0.36     # Using an image with CUDA 12.1, PyTorch 2 and Python 3.11 from Cloud.ru

RUN apt-get update && apt-get install -y \      # Installing the dependencies required to build PyTorch
    git \
    cmake \
    build-essential \
    libopenblas-dev \
    liblapack-dev \
    && rm -rf /var/lib/apt/lists/*

# Installing specific versions of CuDNN and NCCL
# You will need to download and install these packages, possibly manually,
# since their versions depend on the specific requirements of the project and availability on the servers.

RUN git clone --recursive https://github.com/pytorch/pytorch        # Cloning PyTorch repository


WORKDIR /pytorch     # Go to the PyTorch directory

# Checking branch or tag if a specific version is required
# For example, switching to branch v1.8.0
RUN git checkout v1.8.0

# Installing additional Python dependencies for building PyTorch
RUN pip install --no-cache-dir \
    numpy \
    typing_extensions \
    pyyaml \
    setuptools \
    cmake \
    cffi \
    ninja

# Running the PyTorch build. Additional flags may be used in this step
# to configure the build (for example, specifying paths to CuDNN and NCCL)
RUN python setup.py install

# Return to the root directory
WORKDIR /

# [Optional] Remove PyTorch source code to reduce image size
RUN rm -rf /pytorch

Сборка с указанием необходимых версий CuDNN и NCCL

Обратите внимание, что для этого процесса требуется довольно специфичная и тщательная настройка, учитывая версии CUDA, CuDNN, NCCL и совместимость их с версией PyTorch, которую вы хотите собрать.

Есть вероятность, что вам необходимо будет самостоятельно загрузить эти пакеты с официального сайта NVIDIA и убедиться, что у вас есть доступ к ним для установки в Dockerfile.

Сборка образа с необходимыми версиями CuDNN и NCCL
FROM cr.msk.ai.cloud.ru/aicloud-base-images/cuda11.8-torch2-py311:0.0.36     # Using an image with CUDA 12.1, PyTorch 2 and Python 3.11 from Cloud.ru

RUN apt-get update && apt-get install -y \       # Update the list of packages and install the necessary tools for building
    git \
    cmake \
    build-essential \
    libopenblas-dev \
    liblapack-dev \
    wget \
    && rm -rf /var/lib/apt/lists/*

RUN wget https://developer.download.nvidia.com/compute/redist/cudnn/v8.4.1/cudnn-11.4-linux-x64-v8.4.1.50.tgz -O /tmp/cudnn.tgz && \     # Download and install CuDNN 8.4
    tar -xzvf /tmp/cudnn.tgz -C /usr/local && \
    rm /tmp/cudnn.tgz

RUN wget https://developer.download.nvidia.com/compute/redist/nccl/v2.11/nccl_2.11.4-1+cuda11.8_x86_64.txz -O /tmp/nccl.txz && \     # Download and install NCCL 2.11.4
    tar -xJf /tmp/nccl.txz -C /usr/local && \
    rm /tmp/nccl.txz

RUN git clone --recursive https://github.com/pytorch/pytorch     # Cloning the PyTorch repository and moving to the directory
WORKDIR /pytorch

RUN pip install --no-cache-dir \        # Installing Python dependencies
    numpy \
    typing_extensions \
    pyyaml \
    setuptools \
    cmake \
    cffi \
    ninja

RUN python setup.py install      # Install PyTorch from source

WORKDIR /home/jovyan     # Return to root directory

Шаг 2. Пройдите аутентификацию в Docker registry

  1. Сгенерируйте ключ для Docker CLI:

    1. В левом меню платформы перейдите в ML Space → Воркспейсы.

    2. Возле воркспейса, для которого нужно сгенерировать ключ, нажмите Кнопка с тремя вертикальными точками и выберите Параметры разработчика.

    3. Возле Docker CLI Key нажмите Сгенерировать ключ.

    4. После генерации скопируйте ключ.

  2. Аутентифицируйтесь в Docker registry любым из предпочитаемых способов.

    С помощью интерфейса ML Space можно аутентифицироваться в Docker CLI, используя команду:

    docker login cr.ai.cloud.ru --username example@example.com --password examplepsswd
    

    Где параметр example@example.com — это email пользователя, а examplepsswd — ключ, однократно передаваемый пользователю при нажатии на Сгенерировать ключ для Docker CLI.

Шаг 3. Загрузите образ в Docker registry

Команду для использования тега можно просмотреть, нажав Push command в Docker registry.

docker push cr.ai.cloud.ru/хххххххх-хххх-хххх-хххх-хххххххххххх/job-custom-image:test_tag

Эта команда позволяет загрузить образ job-custom-image с тегом test_tag в Docker registry требуемого воркспейса.

Запустили Evolution free tier
для Dev & Test
Получить