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


Обучение модели с помощью пользовательского образа Docker

ПРИМЕНЯЕТСЯ К:Пакет SDK машинного обучения Azure версии 1 для Python

Внимание

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

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

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

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

Предварительные условия

Чтобы запустить пример кода, конфигурация должна содержать одну из следующих сред:

Настройка обучающего эксперимента

Первая задача — настроить обучающий эксперимент путем инициализации рабочей области Машинного обучения, определения среды и настройки целевого объекта вычислений.

Инициализация рабочей области

Рабочая область Машинного обучения Azure — это ресурс верхнего уровня данной службы. Он предоставляет централизованное место для работы со всеми создаваемыми артефактами. В пакете SDK для Python можно получить доступ к артефактам рабочей области, создав объект Workspace.

При необходимости создайте объект Workspace из файла config.json, который был создан как предварительное требование.

from azureml.core import Workspace

ws = Workspace.from_config()

Определение среды

Создайте объект Environment.

from azureml.core import Environment

fastai_env = Environment("fastai2")

Указанный базовый образ в следующем коде поддерживает библиотеку fast.ai, которая позволяет использовать распределенные возможности глубокого обучения. Дополнительные сведения см. в репозитории fast.ai в Docker Hub.

При использовании пользовательского образа Docker ваша среда Python, возможно, уже настроена должным образом. В этом случае установите флаг user_managed_dependencies в True, чтобы использовать встроенную среду Python пользовательского образа. По умолчанию Машинное обучение Azure создает среду Conda с указанными зависимостями. Служба запускает скрипт в этой среде вместо использования библиотек Python, установленных на базовом образе.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Внимание

Машинное обучение Azure поддерживает только образы Docker, которые поддерживает следующее программное обеспечение:

  • Ubuntu 18.04 или более поздней версии
  • Conda 4.7.# или более поздней версии
  • Python 3.7 и более поздней версии
  • Для любого образа контейнера, используемого для обучения, требуется оболочка, совместимая с POSIX, доступная в /bin/sh.

Дополнительные сведения о создании сред Машинного обучения и управления ими см. в разделе Создание и использование программных сред.

Создание или подключение целевого объекта вычислений

Для обучения модели необходимо создать целевой объект вычислений. В этом учебнике вы создадите AmlCompute в качестве вычислительного ресурса для обучения.

Создание AmlCompute займет несколько минут. Если ресурс AmlCompute уже находится в рабочей области, этот код пропускает процесс создания.

Как и в других службах Azure, существуют ограничения на некоторые ресурсы (например, AmlCompute), связанные со службой "Машинное обучение Azure". Дополнительные сведения см. в разделе Ограничения по умолчанию и запрос повышенной квоты.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute
print(compute_target.get_status().serialize())

Внимание

Используйте SKU процессоров (ЦП) для любой сборки образа на вычислительной платформе.

Настройка задания обучения

В рамках этого учебника используйте сценарий обучения train.py на GitHub. На практике вы можете запустить любой сценарий обучения как есть с помощью Машинного обучения Azure.

Создайте ресурс ScriptRunConfig, чтобы настроить выполнение задания в нужном целевом объекте вычислений.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Отправка задания обучения

При отправке запуска обучения с помощью объекта ScriptRunConfig метод submit возвращает объект типа ScriptRun. Возвращаемый объект ScriptRun предоставляет программный доступ к сведениям о ходе выполнения обучения.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

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

Машинное обучение Azure запускает сценарии обучения, копируя весь исходный каталог. Если у вас есть конфиденциальные данные, которые вы не хотите отправлять, используйте IGNORE-файл или не включайте их в исходный каталог. Вместо этого получите доступ к данным с помощью хранилища данных.