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


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

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

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

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

Схема среды в рабочем процессе машинного обучения

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

Типы сред

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

Схема кэширования среды и образов Docker

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

Внимание

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

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

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

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

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

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

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

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