Что такое веб-службы Машинного обучения Azure?

Среды Машинного обучения Azure представляют собой инкапсуляцию среды, в которой происходит машинное обучение. Они указывают пакеты Python и параметры программного обеспечения для обучения и оценки. Среды управляются и версии сущностей в рабочей области Машинное обучение, которые обеспечивают воспроизводимые, аудит и переносимые рабочие процессы машинного обучения в различных целевых объектах вычислений.

Объект Environment можно использовать для:

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

На следующей схеме показано, как можно использовать один объект Environment в конфигурации задания (для обучения), а также для определения и конфигурации развертывания (для развертываний веб-служб).

Diagram of an environment in machine learning workflow

Среда, целевой объект вычислений и скрипт обучения вместе формируют конфигурацию задания: полную спецификацию задания обучения.

Типы сред

Среды можно разделить на три категории: проверенные, управляемые пользователем и управляемые системой.

Проверенные среды предоставляются Машинным обучением Azure и доступны в рабочей области по умолчанию. Предназначен для использования как есть, они содержат коллекции пакетов и параметров Python, которые помогут приступить к работе с различными платформами машинного обучения. Эти предварительно созданные среды также позволяют ускорить развертывание. Курируемые среды размещаются в реестре AzureML. Полный список см. в средах в реестре Azureml.

В средах, управляемых пользователями, вы несете ответственность за настройку среды и установку каждого пакета, который необходим вашему обучающему сценарию на целевом объекте вычислений. Также обязательно включите все зависимости, необходимые для развертывания модели. Управляемая пользователем среда может быть BYOC (перенос собственного контейнера) или контекст сборки Docker, который делегирует материализацию изображений в AzureML.

Если необходимо, чтобы Conda управляла средой Python, вы используете среду, управляемую системой. Новая среда Conda материализуется на основании спецификации Conda поверх базового образа DOCKER.

Создание сред и управление ими

Вы можете создавать среды из клиентов, таких как пакет SDK для Python Машинное обучение Azure, Машинное обучение Azure CLI, страница "Среды" в Студия машинного обучения Azure и расширение VS Code. При необходимости каждый клиент позволяет настроить базовый образ, Dockerfile и уровень Python.

Конкретные примеры кода см. в разделе "Создание среды" статьи Использование сред.

Кроме того, в вашем рабочем пространстве можно легко управлять средами, что позволяет:

  • Регистрировать среды.
  • Переносить среды из вашего рабочего пространства для использования в целях обучения и развертывания.
  • Создавать новый экземпляр среды, отредактировав существующий.
  • Просматривать изменения в ваших средах с течением времени, что гарантирует воспроизводимость.
  • Автоматически компилировать образы Docker на основании ваших сред.

"Анонимные" среды автоматически регистрируются в вашем рабочем пространстве при отправке эксперимента. Они не будут включены в список, но могут быть извлечены на основании версии.

Примеры кода см. в разделе "Управление средами" статьи использование сред.

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

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

Примечание.

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

Отправка задания с помощью среды

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

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

Если образ для определенного определения среды еще не существует в экземпляре реестра контейнеров, связанном с рабочей областью AzureML, создается новый образ. Для системных управляемых сред сборка образа состоит из двух этапов:

  1. Загрузка базового образа и выполнения всех действий DOCKER
  2. Создание среды conda в соответствии с зависимостями conda, указанными в определении среды.

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

Кэширование и повторное использование образов

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

Чтобы просмотреть сведения о кэшированном изображении, проверка страницу "Среды" в Студия машинного обучения Azure или использовать MLClient.environments для получения и проверки среды.

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

  • Базовый образ
  • Пользовательские шаги Docker
  • Пакеты Python

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

Примечание.

Вы не сможете отправлять локальные изменения в курируемую среду без изменения имени среды. Префиксы "AzureML-" и "Microsoft" зарезервированы исключительно для курируемых сред, и отправка задания завершится ошибкой, если имя начинается с одного из них.

Вычисляемое хэш-значение среды сравнивается с значениями в реестре контейнеров рабочей области. Если имеется совпадение, то кэшированный образ извлекается и используется, в противном случае запускается сборка образа.

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

Diagram of environment caching and Docker images

Фактические кэшированные образы в реестре контейнеров рабочей области имеют имена, аналогичные azureml/azureml_e9607b2514b066c851012848913ba19f хэшу, отображаемого в конце.

Внимание

  • Если создать среду с незакрепленной зависимостью пакета (например, numpy), эта среда будет использовать версию пакета, которая имелась на момент создания среды. Любая будущая среда, использующая соответствующее определение, будет использовать исходную версию.

    Чтобы обновить пакет, укажите номер версии для принудительного перестроения образа. Примером может быть изменение с numpy на numpy==1.18.1. Будут установлены новые зависимости, включая вложенные, которые могут нарушить работу ранее работающего сценария.

  • Использование незакреченного базового образа, например mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 в определении среды, может привести к перестроению образа при каждом обновлении тега latest . Это позволяет образу получить последние исправления и обновления системы.

Исправление образов

Корпорация Microsoft несет ответственность за исправление базовых образов для известных уязвимостей системы безопасности. Обновления для поддерживаемых образов выпускаются каждые две недели с обязательством без непатшированных уязвимостей старше 30 дней в последней версии образа. Исправленные образы выпускаются с новым неизменяемым тегом, а тег :latest обновляется до последней версии образа с исправлениями.

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

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

Дополнительные сведения об базовых образах см. по следующим ссылкам:

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