Создание и использование пользовательских сред
Если вам нужно создать собственную среду в Машинном обучении 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, связанном с рабочей областью. Всякий раз, когда вы используете ту же среду для другого задания (и другого скрипта), среда готова к работе и не должна снова создаваться.