Поделиться через


Расширение предварительно созданного образа Docker

Внимание

В этой статье содержатся сведения об использовании пакета SDK машинного обучения Azure версии 1. Пакет SDK версии 1 устарел с 31 марта 2025 г. Поддержка будет завершена 30 июня 2026 г. Вы можете установить и использовать пакет SDK версии 1 до этой даты.

Рекомендуется перейти на пакет SDK версии 2 до 30 июня 2026 г. Дополнительные сведения о пакете SDK версии 2 см. в статье "Что такое ИНТЕРФЕЙС командной строки Машинного обучения Azure" и пакет SDK для Python версии 2 исправочник по пакету SDK версии 2.

В некоторых случаях предварительно созданные образы Docker для вывода моделей и решений расширяемости для Машинного обучения Azure могут не соответствовать потребностям службы вывода.

В этом случае можно с помощью Dockerfile создать новый образ, используя один из готовых образов в качестве отправной точки. Расширение существующего готового образа Docker позволяет использовать сетевой стек и библиотеки Машинного обучения Azure, не создавая образ с нуля.

Преимущества и недостатки

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

Основной компромисс этого подхода заключается в том, что во время развертывания выполняется дополнительная сборка образа, которая замедляет процесс развертывания. Если вы можете использовать метод расширяемости пакета Python , развертывание выполняется быстрее.

Необходимые компоненты

  • Рабочая область Машинного обучения Azure. Руководство по созданию рабочей области см. в статье "Создание ресурсов для начала работы".

  • Знакомство с принципами создания Dockerfile.

  • Локальный рабочий экземпляр Docker, включая интерфейс командной строки (CLI) docker, ЛИБО Реестр контейнеров Azure (ACR), связанный с вашей рабочей областью Машинного обучения Azure.

    Предупреждение

    Реестр контейнеров Azure для рабочей области создается при первом обучении или развертывании модели с помощью рабочей области. Если вы создали новую рабочую область, но не обучили или не создали модель, реестр контейнеров Azure не существует для рабочей области.

Создание и сборка Dockerfile

Ниже приведен пример Dockerfile, который использует предварительно созданный образ Docker машинного обучения Azure в качестве базового образа:

FROM mcr.microsoft.com/azureml/<image_name>:<tag>

COPY requirements.txt /tmp/requirements.txt​

RUN pip install –r /tmp/requirements.txt​

Затем разместите приведенный выше Dockerfile в каталоге со всеми необходимыми файлами и выполните следующую команду, чтобы создать образ:

docker build -f <above dockerfile> -t <image_name>:<tag> .

Совет

Подробные сведения о команде docker build можно найти в документации по Docker.

Если команда docker build недоступна в локальной среде, создайте образ Docker в облаке с помощью Реестра контейнеров Azure (ACR) для рабочей области машинного обучения Azure. Дополнительные сведения см. в руководстве по созданию и развертыванию образов контейнеров в облаке с помощью службы "Реестр контейнеров Azure".

Внимание

Прежде чем пытаться создать пользовательский базовый образ с помощью Реестра контейнеров Azure, Майкрософт рекомендует сначала проверить работу Dockerfile локально.

В следующих разделах содержатся более подробные сведения о Dockerfile.

Установка дополнительных пакетов

Если у вас есть другие пакеты apt, которые необходимо установить в контейнере Ubuntu, их можно добавить в Dockerfile. В следующем примере показано, как использовать команду apt-get из Dockerfile:

FROM <prebuilt docker image from MCR>

# Switch to root to install apt packages
USER root:root

RUN apt-get update && \
    apt-get install -y \
    <package-1> \
    ... 
    <package-n> && \
    apt-get clean -y && \
    rm -rf /var/lib/apt/lists/*

# Switch back to non-root user
USER dockeruser

Кроме того, можно установить дополнительные пакеты pip из Dockerfile. В следующем примере показано использование команды pip install:

RUN pip install <library>

Встраивание модели и кода в образы

Если в образ необходимо встроить модель и код, нужно задать следующие переменные среды в Dockerfile:

  • AZUREML_ENTRY_SCRIPT: начальный сценарий кода. Этот файл содержит методы init() и run().
  • AZUREML_MODEL_DIR: каталог, содержащий файлы модели. Начальный сценарий должен использовать его в качестве корневого каталога модели.

В следующем примере показано, как задать эти переменные среды в Dockerfile:

FROM <prebuilt docker image from MCR>

# Code
COPY <local_code_directory> /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=<entryscript_file_name>

# Model
COPY <model_directory> /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models

Пример Dockerfile

В следующем примере показано, как установить пакеты apt, задать переменные среды и добавить код и модель в Dockerfile:

Замечание

В следующем примере образ mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest используется в качестве базового образа. Сведения о доступных изображениях см. в разделе "Предварительно созданные образы Docker" для вывода модели.

FROM mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest

USER root:root

# Install libpng-tools and opencv
RUN apt-get update && \
    apt-get install -y \
    libpng-tools \
    python3-opencv && \
    apt-get clean -y && \
    rm -rf /var/lib/apt/lists/*

# Switch back to non-root user
USER dockeruser

# Code
COPY code /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=score.py

# Model
COPY model /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models

Следующие шаги

Сведения о том, как использовать Dockerfile с пакетом SDK Python для Машинного обучения Azure, см. в следующих документах:

Дополнительные сведения о развертывании модели см. в этой статье.

Сведения об устранении неполадок с развертыванием готовых образов Docker см. в этой статье.