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

Завершено

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

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

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

Самый простой подход, скорее всего, заключается в создании среды на основе образа Docker. Образы Docker можно размещать в общедоступном реестре, например Docker Hub, или хранить в частном порядке в реестре контейнеров Azure.

Многие платформы с открытым кодом инкапсулируются в общедоступных образах, которые можно найти в Docker Hub. Например, можно найти общедоступный образ Docker, содержащий все необходимые пакеты для обучения модели глубокого обучения с помощью PyTorch.

Чтобы создать среду из образа Docker, можно использовать пакет SDK для Python:

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="pytorch/pytorch:latest",
    name="public-docker-image-example",
    description="Environment created from a public Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

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

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    name="aml-docker-image-example",
    description="Environment created from a Azure ML Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

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

Хотя образы Docker содержат все необходимые пакеты при работе с определенной платформой, может потребоваться включить другие пакеты для запуска кода.

Например, вы можете обучить модель с помощью PyTorch и отслеживать модель с помощью MLflow.

Если необходимо включить другие пакеты или библиотеки в среду, можно добавить файл спецификации conda в образ Docker при создании среды.

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

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.7
  - scikit-learn
  - pandas
  - numpy
  - matplotlib

Совет

Ознакомьтесь с документацией conda о том, как создать среду вручную для получения информации о стандартном формате файлов conda.

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

from azure.ai.ml.entities import Environment

env_docker_conda = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    conda_file="./conda-env.yml",
    name="docker-image-plus-conda-example",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)

Заметка

Так как все курируемые среды префиксируются с помощью AzureML-, вы не можете создать среду с одинаковым префиксом.

Используйте среду

Чаще всего используются среды, когда вы хотите запустить скрипт как команду (команды) задания.

Чтобы указать среду, которую вы хотите использовать для запуска скрипта, ссылайтесь на среду с помощью синтаксиса <curated-environment-name>:<version> или <curated-environment-name>@latest.

Например, в следующем коде показано, как настроить задание команды с помощью пакета SDK для Python, в котором используется курированная среда, включая Scikit-Learn:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py",
    environment="docker-image-plus-conda-example:1",
    compute="aml-cluster",
    display_name="train-custom-env",
    experiment_name="train-custom-env"
)

# submit job
returned_job = ml_client.create_or_update(job)

При отправке задания создается среда выполнения. При первом использовании среды может потребоваться 10–15 минут для создания среды. Вы можете изучить журналы сборки окружения в журналах задания.

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