Машинное обучение Azure: архитектура и основные понятия (версия 1)
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение Машинного обучения для Azure CLI версии 1пакет SDK для Python azureml версии 1
Эта статья относится к первой версии (версии 1) Машинное обучение Azure CLI и пакета SDK. Сведения для версии 2 см. в разделе Принципы работы Машинного обучения Azure (версия 2).
Узнайте об архитектуре и понятиях, применяемых в Машинном обучении Azure. В этой статье приведены общие сведения о компонентах и их взаимодействии между собой в процессе построения, развертывания и поддержки моделей машинного обучения.
Рабочая область
Рабочая область Машинного обучения Azure — это ресурс верхнего уровня в Машинном обучении Azure.
Рабочая область — это централизованное местоположение, в котором можно:
- управлять ресурсами, используемыми для обучения и развертывания моделей, такими как вычисления;
- Храните ресурсы, создаваемые при использовании Машинное обучение Azure, включая:
Рабочая область включает другие ресурсы Azure, которые используются рабочей областью:
- Реестр контейнеров Azure: регистрирует контейнеры Docker, используемые во время обучения и при развертывании модели. Чтобы сократить затраты, реестр ACR создается только при создании образов развертывания.
- Учетная запись службы хранилища Azure: используется в качестве хранилища данных по умолчанию для рабочей области. Здесь также хранятся записные книжки Jupyter, которые используются с вычислительными экземплярами Машинного обучения Azure.
- Azure Application Insights: хранит сведения о мониторинге для моделей.
- Azure Key Vault: хранит секреты, используемые целевыми объектами вычислений, и другие конфиденциальные сведения, необходимые рабочей области.
Вы можете использовать рабочую область совместно с другими пользователями.
Вычисления
Целевой объект вычислений — это любая машина или набор машин, используемые вами для запуска на них сценария обучения или для размещения развертывания вашей службы. В качестве целевого объекта вычислений можно использовать локальный компьютер или удаленный ресурс вычислений. Используя целевые объекты вычислений, можно начать обучение на локальном компьютере, а затем горизонтально масштабировать его в облако, не меняя сценарий обучения.
В Машинном обучении Azure вводятся два типа полностью управляемых облачных виртуальных машин (VM), которые настроены для выполнения задач машинного обучения:
Вычислительный экземпляр: вычислительные экземпляры — это виртуальные машины, которые содержат ряд установленных инструментов и сред для машинного обучения. Основное предназначение вычислительного экземпляра — использование в качестве вашей рабочей станции разработки. На нем можно начать выполнять образцы записных книжек без какой-либо настройки. Вычислительные экземпляры также можно использовать в качестве целевого объекта вычислений для заданий обучения и вывода результатов.
Вычислительные кластеры: вычислительный кластер — это кластер виртуальных машин с возможностью масштабирования на многие узлы. Вычислительные кластеры в качестве целевых объектов вычислений лучше подходят для больших заданий и использования в рабочей среде. Кластер автоматически масштабируется при отправке задания. Используйте его в качестве целевого объекта вычислений для обучения или для развертываний разработки или тестирования.
Дополнительные сведения о целевых объектах вычислений для обучения см. в разделе Целевые объекты вычислений обучения. Дополнительные сведения о целевых объектах вычислений для развертывания см. в разделе Целевые объекты развертывания.
Наборы данных и хранилища данных
Наборы данных Машинного обучения Azure упрощают доступ к данным и работу с ними. Создавая набор данных, вы создаете ссылку на расположение источника данных, а также копию его метаданных. Поскольку данные остаются в своем расположении, не возникает дополнительных затрат на хранение, и целостность источников данных не подвергается риску.
Дополнительные сведения см. в статье Создание наборов данных Машинного обучения Azure. Дополнительные примеры использования наборов данных см. в разделе с примерами записных книжек.
Наборы данных используют хранилище данных для безопасного подключения к вашим службам хранилища Azure. Хранилища данных содержат сведения о подключениях, при этом не подвергая риску ваши учетные данные для проверки подлинности и целостность исходного источника данных. В них содержатся данные о подключении, такие как идентификатор вашей подписки и авторизация с помощью маркеров в Key Vault, связанных с рабочей областью. Это позволяет безопасно получать доступ к хранилищу без необходимости указывать их жестко в коде сценариев.
Среды
Рабочая область>Среды
Среда — это инкапсуляция среды, в которой производится обучение или оценка вашей модели машинного обучения. Среда определяет пакеты Python, переменные среды и настройки программного обеспечения, связанные с вашими сценариями обучения и оценок.
Примеры кода см. в разделе "Управление средами" статьи использование сред.
Эксперименты
Рабочая область > Эксперименты
Эксперимент представляет собой совокупность нескольких запусков указанного сценария. Он всегда принадлежит рабочей области. При отправке запуска укажите имя эксперимента. Сведения о запуске хранятся в этом эксперименте. Если на момент отправки эксперимента имя не существует, автоматически создается новый эксперимент.
Пример использования эксперимента см. в руководстве по обучению первой модели.
Запуски
Рабочая область>Эксперименты>Выполнение
Выполнение — это однократный запуск скрипта обучения. Обычно эксперимент содержит большое число выполнений.
Машинное обучение Azure записывает все выполнения и сохраняет в эксперименте следующую информацию:
- метаданные о запуске (метка времени, длительность и т. д.);
- метрики, записанные в журнал с помощью сценария;
- выходные файлы, автоматически собранные экспериментом или явным образом переданные вами;
- моментальный снимок каталога, содержащего скрипты, до запуска;
Вы создаете запуск при отправке сценария для обучения модели. Запуск может иметь ноль или более дочерних запусков. Например, запуск верхнего уровня может иметь два дочерних запуска, каждый из которых может иметь свои дочерние запуски.
Конфигурации выполнения
Рабочая область>Эксперименты>Выполнение>Конфигурация запуска
Конфигурация запуска определяет, как следует запустить сценарий в указанном целевом объекте вычислений. Вы используете конфигурацию для указания скрипта, целевого объекта вычислений и Машинное обучение Azure среды для запуска, любых конфигураций распределенных заданий и некоторых дополнительных свойств. Дополнительные сведения о полном наборе настраиваемых параметров для запусков см. в описании класса ScriptRunConfig.
Конфигурацию запуска можно сохранить в файл внутри каталога, который содержит сценарий обучения. Ее также можно создать как объект в памяти и использовать его для отправки запуска.
Примеры конфигураций запусков см. в разделе Настройка запуска обучения.
Моментальные снимки
Рабочая область>Эксперименты>Выполнение>Моментальный снимок
При отправке запуска Машинное обучение Azure сжимает каталог, содержащий сценарий, как ZIP-файл и отправляет его в целевой объект вычислений. ZIP-файл затем извлекается, и сценарий выполняется в нем. Машинное обучение Azure также сохраняет ZIP-файл в качестве моментального снимка как часть записи о выполнении. Любой пользователь с доступом к рабочей области может просмотреть запись о выполнении и загрузить моментальный снимок.
Ведение журнала
Машинное обучение Azure автоматически регистрирует в журнале стандартные метрики выполнения. В то же время также можно использовать пакет SDK для Python, чтобы регистрировать произвольные метрики.
Просматривать журналы можно различными способами: можно отслеживать состояние выполнения в режиме реального времени или просматривать результаты после его завершения. Дополнительные сведения см. в статье Мониторинг и просмотр журналов запуска машинного обучения.
Примечание.
Чтобы предотвратить включение ненужных файлов в моментальный снимок, создайте файл игнорирования (.gitignore
или .amlignore
) в каталоге. Добавьте исключаемые файлы и каталоги в этот файл. Дополнительные сведения о синтаксисе, который будет использоваться в этом файле, см. в разделе синтаксис и шаблоны для .gitignore
. Файл .amlignore
использует тот же синтаксис. Если оба файла существуют, используется файл .amlignore
, а файл .gitignore
не используется.
Отслеживание и интеграция Git
При выполнении запуска обучения, в котором исходный каталог является локальным репозиторием Git, сведения о репозитории хранятся в журнале выполнения. Этот вариант работает для запусков, отправленных с помощью конфигурации запуска сценария или конвейера ML. А также для выполнений, отправленных с помощью пакетов SDK или CLI Машинного обучения.
Дополнительные сведения см. в статье Интеграция с Git для Машинного обучения Azure.
Рабочий процесс обучения
При запуске эксперимента для обучения модели выполняются следующие действия. Они показаны на схеме рабочего процесса обучения ниже:
Машинное обучение Azure вызывается с помощью идентификатора моментального снимка для моментального снимка кода, сохраненного в предыдущем разделе.
Машинное обучение Azure создает идентификатор запуска (необязательно) и маркер проверки подлинности Службы машинного обучения, который позже используется целевыми объектами вычислений, такими как Вычислительная среда Машинного обучения или виртуальные машины для взаимодействия со Службой машинного обучения.
Для выполнения заданий обучения можно выбрать управляемый целевой объект вычислений (например, Вычислительная среда Машинного обучения) или неуправляемый целевой объект вычислений (например, виртуальные машины). Ниже приведены потоки данных для обоих сценариев:
- Виртуальные машины или HDInsight, доступ к которым осуществляется с помощью учетных данных SSH в хранилище ключей в подписке Майкрософт. Машинное обучение Azure выполняет код управления на целевом объекте вычислений, который:
- Подготавливает среду. (Docker является вариантом для виртуальных машин и локальных компьютеров. Чтобы понять, как работают запущенные эксперименты в контейнерах Docker, ознакомьтесь со следующими шагами для Вычислительной среды Машинного обучения.)
- Скачивает код.
- Настраивает переменные и конфигурации среды.
- Запускает пользовательские сценарии (моментальный снимок кода, упомянутый в предыдущем разделе).
- Вычислительная среда Машинного обучения, доступ к которой осуществляется с помощью удостоверения, управляемого рабочей областью. Так как Вычислительная среда Машинного обучения является управляемым целевым объектом вычислений (т. е. управляется корпорацией Майкрософт), она выполняется в вашей подписке Майкрософт.
- При необходимости запускается удаленное построение Docker.
- Код управления записывается в общую папку пользователя Файлов Azure.
- Контейнер запускается с помощью начальной команды. Это и есть код управления, описанный в предыдущем шаге.
После завершения запуска можно запрашивать выполнения и метрики. На приведенной ниже схеме потоков этот шаг происходит, когда целевой объект обучения вычислений записывает метрики выполнения обратно в Машинное обучение Azure из хранилища в базе данных Azure Cosmos DB. Машинное обучение Azure могут вызывать клиенты. Машинное обучение в свою очередь извлекает метрики из базы данных Azure Cosmos DB и возвращает их клиенту.
Модели
В простейшем смысле модель представляет собой фрагмент кода, который принимает входные данные и создает выходные данные. Создание модели машинного обучения включает в себя выбор алгоритма, предоставление ему данных и настройку гиперпараметров. Обучение — это итеративный процесс, который создает обученную модель, включающую в себя все, чему модель научилась в процессе обучения.
Также можно задействовать модель, которая была обучена вне Машинного обучения Azure. Или же можно обучить модель, отправив запуск эксперимента в целевой объект вычислений в Машинном обучении Azure. Когда вы получите модель, ее нужно будет зарегистрировать в рабочей области.
Машинное обучение Azure не зависит от платформы. Для создания модели можно использовать любую популярную платформу машинного обучения, например Scikit-learn, XGBoost, PyTorch, TensorFlow или Chainer.
Пример обучения модели с помощью Scikit-learn см. в статье Руководство по обучению моделей классификации изображений с использованием Машинного обучения Azure.
Реестр моделей
Рабочая область>Модели
Реестр моделей позволяет отслеживать данные обо всех моделях в рабочей области Машинного обучения Azure.
Модели идентифицируются по имени и версии. При регистрации модели с уже имеющимся именем реестр предполагает, что это новая версия. Номер версии увеличивается, и новая модель регистрируется под тем же именем.
При регистрации модели вы можете указать дополнительные теги метаданных, а затем использовать эти теги для поиска моделей.
Совет
Зарегистрированная модель — это логический контейнер для одного или нескольких файлов, составляющих эту модель. Например, если ваша модель хранится в нескольких файлах, их можно зарегистрировать как единую модель рабочей области Машинного обучения Azure. После регистрации вы сможете скачать или развернуть зарегистрированную модель, чтобы получить все зарегистрированные в ней файлы.
Удалить зарегистрированную модель нельзя, если она используется в любом активном развертывании.
Пример регистрации модели см. в статье Руководство по обучению модели классификации изображений с помощью Службы машинного обучения Azure.
Развертывание
Зарегистрированная модель развертывается как конечная точка службы. Для этого необходимы следующие компоненты.
- Среда. Среда инкапсулирует зависимости, необходимые для выполнения модели для вывода.
- Код оценки. Этот скрипт принимает запросы, оценивает их с помощью модели и возвращает результаты.
- Конфигурация вывода. Конфигурация вывода определяет среду, сценарий входа и другие компоненты, необходимые для запуска модели в качестве службы.
Дополнительные сведения об этих компонентах см. в статье Развертывание моделей в Машинном обучении Azure.
Конечные точки
Рабочая область>Конечные точки
Конечная точка – это создание экземпляра модели в веб-службе, который можно разместить в облаке.
Конечная точка веб-службы
При развертывании модели в качестве веб-службы конечную точку можно развернуть на Экземпляры контейнеров Azure или Служба Azure Kubernetes. В службу входят модель, скрипт и связанные файлы. Все они помещаются в базовый образ контейнера, который содержит среду выполнения для этой модели. Образ включает конечную точку HTTP с балансировкой нагрузки, которая получает запросы на оценку, отправляемые в веб-службу.
Можно включить телеметрию Application Insights или телеметрию модели, чтобы отслеживать состояние веб-службы. Данные телеметрии доступны только вам. Они сохраняются в Application Insights и в экземплярах учетной записи хранения. Если вы включили автоматическое масштабирование, Azure будет автоматически масштабировать ваше развертывание.
На следующей схеме показан рабочий процесс вывода для модели, развернутой в качестве конечной точки веб-службы.
Ниже приведены сведения:
- Пользователь регистрирует модель с помощью клиента, например пакета SDK для Машинного обучения Azure.
- Пользователь создает образ с помощью модели, файла оценки и других зависимостей модели.
- Образ Docker создается и сохраняется в службе "Реестр контейнеров Azure".
- Веб-служба развертывается на целевом объекте вычислений (Экземпляры контейнеров или AKS) с помощью образа, созданного на предыдущем шаге.
- Сведения о запросе оценки хранятся в Application Insights, которая находится в подписке пользователя.
- Данные телеметрии также отправляются в подписку Microsoft или Azure.
Пример развертывания модели в качестве веб-службы см. в разделе Учебник. Обучение и развертывание модели.
Конечные точки для прогнозирования в реальном времени
При развертывании обученной модели в конструкторе можно развернуть эту модель как конечную точку для прогнозирования в реальном времени. Конечная точка для прогнозирования в реальном времени обычно получает один запрос через конечную точку REST и возвращает прогноз в реальном времени. Этим она отличается от пакетной обработки, при которой обрабатывается сразу много значений, а результаты после завершения записываются в хранилище данных.
Конечные точки конвейера
Конечные точки конвейера позволяют вызывать конвейеры машинного обучения программными средствами через конечную точку REST. Конечные точки конвейера позволяют автоматизировать рабочие процессы конвейера.
Конечная точка конвейера — это коллекция опубликованных конвейеров. Эта логическая организация позволяет управлять несколькими конвейерами и вызывать их, используя одну и ту же конечную точку. Каждый опубликованный конвейер в конечной точке конвейера имеет несколько версий. Для конечной точки можно выбрать конвейер по умолчанию или указать версию в вызове функции REST.
Автоматизация
Интерфейс командной строки службы "Машинное обучение Azure"
Интерфейс командной строки Машинное обучение Azure версии 1 — это расширение azure CLI, кроссплатформенный интерфейс командной строки для платформы Azure. Это расширение предоставляет команды для автоматизации действий машинного обучения.
Конвейеры машинного обучения
Используйте конвейеры машинного обучения для создания и управления рабочими процессами, которые совмещают этапы машинного обучения. Например, конвейер может включать этапы подготовки данных, обучения и развертывания модели, а также вывода и оценки. Каждый этап может охватывать несколько шагов, каждый из которых может автоматически выполняться в различных целевых объектах вычисления.
Шаги конвейера можно использовать повторно или выполнять без повтора предыдущих шагов, если выходные данные таких шагов не должны изменяться. Например, вы можете повторно обучить модель без дорогостоящих этапов подготовки данных, если сами данные не изменялись. Кроме того, конвейеры позволяют специалистам по обработке и анализу данных параллельно работать над разными частями рабочего процесса машинного обучения.
Мониторинг и ведение журналов
Машинное обучение Azure предоставляет следующие возможности мониторинга и ведения журналов.
- Специалисты по обработке и анализу данных могут отслеживать эксперименты и регистрировать информацию учебных запусков. Дополнительные сведения см. в следующих статьях:
- Администраторы могут отслеживать сведения о рабочей области, связанных ресурсах Azure и событиях, таких как создание и удаление ресурсов, с помощью Azure Monitor. Дополнительные сведения см. в статье Мониторинг Машинного обучения Azure.
- Для DevOps или MLOps можно отслеживать сведения, создаваемые моделями, развернутыми в виде веб-служб, для выявления проблем с развертываниями и сбора данных, передаваемых в службу. Дополнительные сведения см. в статьях Сбор данных модели и Мониторинг с помощью Application Insights.
Взаимодействие с рабочей областью
Студия
Студия машинного обучения Azure обеспечивает веб-представление всех артефактов в рабочей области. В студии можно просматривать результаты и сведения о наборах данных, экспериментах, конвейерах, моделях и конечных точках. Также можно управлять вычислительными ресурсами и хранилищами данных.
Кроме того, в студии доступны интерактивные средства, которые являются частью Машинного обучения Azure.
- Конструктор Машинного обучения Azure позволяет выполнять действия рабочего процесса без написания кода.
- Веб-интерфейс для автоматизированного машинного обучения
- Записные книжки Машинного обучения Azure для написания и выполнения собственного кода на интегрированных серверах записной книжки Jupyter.
- Проекты маркировки данных для создания, управления и мониторинга проектов по маркировке изображений или текста.
Средства программирования
Внимание
Средства, отмеченные ниже (предварительная версия), сейчас доступны в общедоступной предварительной версии. Предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
- Пакет SDK Машинного обучения для Python позволяет взаимодействовать с этой службой в любой среде Python.
- Конструктор Машинного обучения Azure позволяет выполнять шаги рабочего процесса без необходимости написания кода.
- Используйте CLI Машинного обучения Azure для автоматизации.
Следующие шаги
Чтобы быстро начать работу с Машинным обучением Azure, изучите следующие статьи: