Управление средами Машинное обучение Azure с помощью интерфейса командной строки и пакета SDK (версия 2)

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

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

Из этой статьи вы узнаете, как создавать среды Машинное обучение Azure и управлять ими с помощью пакета SDK и CLI версии 2.

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

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

Совет

Для создания полнофункциональной среды разработки используйте Visual Studio Code и расширение Машинное обучение Azure, позволяющие управлять ресурсами Машинного обучения Azure и обучать модели машинного обучения.

Клонирование репозитория примеров

Чтобы запустить примеры обучения, сначала клонируйте репозиторий примеров. В примерах интерфейса командной строки перейдите cli в каталог. В примерах пакета SDK перейдите sdk/python/assets/environment в каталог:

git clone --depth 1 https://github.com/Azure/azureml-examples

Обратите внимание, что --depth 1 клонирует только последнюю фиксацию в репозитории, что сокращает время завершения операции.

Подключение к рабочей области

Совет

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

При использовании Azure CLI требуются параметры идентификатора — подписка, группа ресурсов и имя рабочей области. Хотя эти параметры можно указать для каждой команды, можно также задать значения по умолчанию, используемые для всех команд. Используйте следующие команды, чтобы задать значения по умолчанию. Замените <subscription ID>, <Azure Machine Learning workspace name>а <resource group> также значениями конфигурации:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Курируемые среды

Существует два типа сред в Машинное обучение Azure: курируемые и пользовательские среды. Курированные среды — это стандартные среды, содержащие популярные платформы и инструменты машинного обучения. Пользовательские среды определяются пользователем и могут быть созданы с помощью команды az ml environment create.

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

Эти курируемые среды можно использовать вне поля для обучения или развертывания, ссылаясь на определенную версию или последнюю версию среды. Используйте следующий синтаксис: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> или azureml://registries/azureml/environment/<curated-environment-name>/labels/latest. Вы также можете использовать их в качестве ссылки для собственных пользовательских сред, изменив файлы Dockerfile, которые поддерживают эти курируемые среды.

Вы можете просмотреть набор доступных курируемых сред в пользовательском интерфейсе Студия машинного обучения Azure или с помощью интерфейса командной строки (версии 2).az ml environment list

Совет

При работе с курируемыми средами в ИНТЕРФЕЙСе командной строки или пакете SDK имя среды начинается с AzureML- имени курированной среды. При использовании Студия машинного обучения Azure они не имеют этого префикса. Причина этой разницы заключается в том, что пользовательский интерфейс студии отображает курированные и пользовательские среды на отдельных вкладках, поэтому префикс не требуется. Интерфейс командной строки и пакет SDK не имеют этого разделения, поэтому префикс используется для различения курированных и пользовательских сред.

Создание пользовательской среды

Вы можете определить среду из образа Docker, контекста сборки Docker и спецификации conda с помощью образа Docker.

Создание среды на основе образа Docker

Чтобы определить среду на основе образа Docker, укажите универсальный код ресурса (URI) образа, размещенного в реестре, например в Docker Hub или в Реестре контейнеров Azure.

Следующий пример представляет собой файл спецификации YAML для среды, определенной на основе образа Docker. Образ из официального репозитория PyTorch в Docker Hub указан с помощью свойства image в файле YAML.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

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

az ml environment create --file assets/environment/docker-image.yml

Совет

Машинное обучение Azure поддерживает набор базовых образов на основе ЦП и GPU Ubuntu Linux с общими системными зависимостями. Например, образы GPU содержат Miniconda, OpenMPI, CUDA, cuDNN и NCCL. Вы можете использовать эти образы для своих сред или использовать соответствующие файлы Dockerfile в качестве эталонных при создании собственных пользовательских образов.

Набор базовых образов и соответствующих файлов Dockerfile см. в репозитории AzureML-Containers.

Создание среды на основе контекста сборки Docker

Вместо определения среды на основе предварительно созданного образа ее также можно определить на основе контекста сборки Docker. Для этого укажите каталог, который служит контекстом сборки. Этот каталог должен содержать Dockerfile (не больше 1 МБ) и любые другие файлы, необходимые для сборки образа.

Следующий пример представляет собой файл спецификации YAML для среды, определенной на основе контекста сборки. Локальный путь к папке контекста сборки указывается в поле build.path, а относительный путь к файлу Dockerfile в этой папке контекста сборки указывается в поле build.dockerfile_path. Если build.dockerfile_path файл YAML опущен, Машинное обучение Azure ищет Dockerfile с именем Dockerfile в корне контекста сборки.

В этом примере контекст сборки содержит файл Dockerfile с именем Dockerfile и файл requirements.txt, на который ссылается файл Dockerfile для установки пакетов Python.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

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

az ml environment create --file assets/environment/docker-context.yml

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

Создание среды на основе спецификации conda

Среду можно определить с помощью стандартного файла конфигурации YAML, который включает зависимости для среды conda. Сведения об этом стандартном формате см. в разделе Создание среды вручную.

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

Следующий пример представляет собой файл спецификации YAML для среды, определенной на основе спецификации conda. Здесь указан относительный путь к файлу conda из файла YAML среды Машинное обучение Azure.conda_file Можно также определить встроенную спецификацию conda с помощью свойства conda_file, а не определять ее в отдельном файле.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda-yamls/pydata.yml
description: Environment created from a Docker image plus Conda environment.

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

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

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

Управление средами

Пакет SDK и CLI версии 2 также позволяют управлять жизненным циклом ресурсов среды Машинное обучение Azure.

List

Получение списка всех сред в рабочей области:

az ml environment list

Получение списка всех версий среды с заданным именем:

az ml environment list --name docker-image-example

Показать

Получение сведений об определенной среде:

az ml environment show --name docker-image-example --version 1

Обновить

Обновление изменяемых свойств определенной среды:

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

Внимание

Для сред можно обновить только свойства description и tags. Все остальные свойства являются неизменяемыми. Если необходимо изменить какие-либо из этих свойств, следует создать новую версию среды.

Архив

Архивация среды скрывает ее по умолчанию из запросов списка (az ml environment list). Вы можете по-прежнему указывать прямые ссылки на архивную среду и использовать ее в рабочих процессах. Можно архивировать все версии среды или только определенную версию.

Если вы не указываете версию, архивируются все версии среды под этим именем. Если вы создаете новую версию среды в контейнере архивной среды, эта новая версия автоматически устанавливается как архивная, а также.

Архивируйте все версии среды:

az ml environment archive --name docker-image-example

Архивация конкретной версии среды:

az ml environment archive --name docker-image-example --version 1

Внимание

Архивация версии среды не удаляет кэшированный образ в реестре контейнеров. Если вы хотите удалить кэшированный образ, связанный с определенной средой, можно использовать команду az acr repository delete в связанном репозитории среды.

Использование сред для обучения

Чтобы использовать настраиваемую среду для задания обучения, укажите environment поле конфигурации YAML задания. Можно либо ссылаться на существующую зарегистрированную Машинное обучение Azure среду с помощью environment: azureml:<environment-name>:<environment-version> или (чтобы ссылаться на последнюю версию среды), либо environment: azureml:<environment-name>@latest определить встроенную спецификацию среды. Если вы определяете встроенную среду, не указывайте name поля и version поля, так как эти среды рассматриваются как "отмена регистрации" сред и не отслеживаются в реестре ресурсов среды.

При отправке задания обучения создание новой среды может занять несколько минут. Длительность зависит от размера необходимых зависимостей. Среды кэшируются службой. Поскольку определение среды остается неизменным, полное время настройки задается только один раз.


Дополнительные сведения об использовании сред в заданиях см. в разделе "Обучение моделей".

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

Среды также можно использовать для развертывания моделей как для оценки в реальном времени, так и для пакетной оценки. Для этого укажите поле environment в конфигурации YAML развертывания.

Дополнительные сведения об использовании сред в развертываниях см. в статье "Развертывание и оценка модели машинного обучения с помощью сетевой конечной точки".

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