Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Среды Azure Machine Learning инкапсулируют окружение, в котором происходит обучение и инференс машинного обучения. Они указывают пакеты Python и параметры программного обеспечения для обучения и оценки скриптов. Рабочая область машинного обучения управляет этими средами и версиями, обеспечивая воспроизводимые, проверяемые и переносимые рабочие процессы машинного обучения в различных целевых объектах вычислений. Используйте объект Environment для:
- разработки сценария обучения;
- повторного использования той же среды в Вычислительной среде Машинного обучения для обучения модели в большом масштабе.
- Разверните вашу модель с тем же окружением.
- Повторно посетите среду, в которой была обучена существующая модель.
На следующей схеме показано, как можно использовать один объект Environment в конфигурации задания (для обучения), а также для определения и конфигурации развертывания (для развертываний веб-служб).
Среда, целевой объект вычислений и скрипт обучения вместе формируют конфигурацию задания: полную спецификацию задания обучения.
Типы сред
Среды делятся на три категории: курированные, управляемые пользователем и управляемые системой.
Проверенные среды предоставляются Машинным обучением Azure и доступны в рабочей области по умолчанию. Используйте их как есть. Они содержат коллекции пакетов и параметров Python, которые помогут вам приступить к работе с различными платформами машинного обучения. Эти предварительно созданные среды также позволяют ускорить развертывание. Машинное обучение Azure размещает управляемые среды в реестре 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, служба создает новый образ. Для системных управляемых сред процесс сборки образа состоит из двух этапов:
- Загрузка базового образа и выполнения всех действий DOCKER
- Создание среды conda в соответствии с зависимостями conda, указанными в определении среды.
Для управляемых пользователем сред служба использует предоставленные сборки контекста Docker как есть. В этом случае вы несете ответственность за установку пакетов Python, включив их в базовый образ или указав пользовательские шаги Docker.
Кэширование и повторное использование образов
При использовании того же определения среды для другого задания Машинное обучение Azure повторно использует кэшированный образ из реестра контейнеров, связанного с рабочей областью.
Чтобы просмотреть сведения о кэшированном изображении, проверьте страницу "Среды" в Студия машинного обучения Azure или использовать MLClient.environments для получения и проверки среды.
Чтобы определить, следует ли повторно использовать кэшированный образ или создать новый, Машинное обучение Azure вычисляет хэш-значение из определения среды. Затем он сравнивает хэш с хэшами существующих сред. Хэш служит уникальным идентификатором для среды и основан на определении среды:
- Базовый образ
- Пользовательские шаги Docker
- Пакеты Python
Имя и версия среды не влияют на хэш. Если вы переименовываете среду или создаете новую с теми же параметрами и пакетами, что и другая среда, хэш-значение остается неизменным. Например, при внесении изменений в определение среды, таких как добавление или удаление пакета Python или изменение версии пакета, изменяется результирующее хэш-значение. Изменение порядка зависимостей или каналов в среде изменяет хэш и требует новой сборки образа. Аналогичным образом любое изменение в курированной среде приводит к созданию пользовательской среды.
Примечание.
Вы не можете отправлять локальные изменения в курированную среду, не изменяя имя среды. Префиксы "AzureML-" и "Майкрософт" зарезервированы исключительно для курируемых сред, и отправка задания завершается ошибкой, если имя начинается с любого из них.
Вычисляемое хэш-значение среды сравнивается с хэшами в реестре контейнеров рабочей области. Если есть совпадение, кэшированный образ извлекается и используется. В противном случае запускается сборка образа.
На следующей диаграмме показаны три определения среды. Два из них имеют разные имена и версии, но идентичные базовые образы и пакеты Python, что приводит к тому же хэш и соответствующему кэшированному изображению. Третья среда имеет разные пакеты и версии Python и, следовательно, соответствует другому хэшу и кэшированному образу.
Фактические кэшированные образы в реестре контейнеров рабочей области имеют имена, аналогичные azureml/azureml_e9607b2514b066c851012848913ba19f хэшу, отображаемого в конце.
Внимание
Если создать среду с незакрепленной зависимостью пакета (например,
numpy), эта среда будет использовать версию пакета, которая имелась на момент создания среды. Любая будущая среда, использующая соответствующее определение, использует исходную версию.Чтобы обновить пакет, укажите номер версии для принудительного перестроения образа. Пример этого изменения — обновление
numpyдоnumpy==1.18.1. Устанавливаются новые зависимости, включая вложенные, и это может привести к сбоям в ранее работавшем сценарии.Использование незакреченного базового образа, как
mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04в определении среды, может привести к перестроению образа при каждом обновлении тегаlatest. Это поведение помогает изображению получать последние исправления и обновления системы.
Исправление образов
Корпорация Майкрософт исправляет базовые образы для известных уязвимостей системы безопасности. Обновления для поддерживаемых образов выпускаются каждые две недели, и последняя версия образа не имеет непатшированных уязвимостей старше 30 дней. Исправленные образы выпускаются с новым неизменяемым тегом, и :latest тег обновляется до последней версии исправленного образа.
Необходимо обновить связанные Машинное обучение Azure ресурсы, чтобы использовать только что исправленное изображение. Например, при работе с управляемой сетевой конечной точкой необходимо повторно развернуть конечную точку для использования исправленного образа.
Если вы предоставляете собственные образы, вы несете ответственность за их обновление и обновление Машинное обучение Azure ресурсов, которые используют их.
Дополнительные сведения об базовых образах см. по следующим ссылкам:
- Базовые образы машинного обучения Azure в репозитории GitHub.
- Использование пользовательского контейнера для развертывания модели в сетевой конечной точке
- Управление средами и образами контейнеров
Связанный контент
- Узнайте, как создавать и использовать среды в машинное обучение Azure.
- См. справочную документацию по пакету SDK для Python для класса Environment.