Введение в службу машинного обучения Azure
В сентябре 2018 года Microsoft запустила Службу машинного обучения Azure, которая помогает специалистам по обработке данных и инженерам по машинному обучению создавать сквозные конвейеры машинного обучения в Azure, не беспокоясь о разработчиках, стоящих за обучением, тестированием и развертыванием вашей модели. У Azure есть ряд предложений в этой области, таких как Блокноты Azure, Студия машинного обучения Azure и Пакетный искусственный интеллект Azure. Сравнение предложений доступно здесь.
В этой статье основное внимание будет уделено новейшему предложению Azure, и в ней будут рассмотрены основные концепции, включая пример обучения вашей собственной модели машинного обучения. Ниже приводится разбивка статьи:
- Введение в машинное обучение Azure (с этого момента именуемое AML)
- Настройка машинного обучения Azure с помощью VS-кода
- Использование конвейера AML на примере
Раздел 1: Введение в AML
Чтобы работать с AML, вам необходимо знать следующие концепции:
Рабочая область: это централизованное место для всех ваших артефактов (экспериментов, запусков, развертываний, образов). Это помогает вести историю всей вашей работы, включая регистрацию моделей машинного обучения, которые можно использовать для прогнозирования. Чтобы создать рабочее пространство:
- Авторизуйтесь на портале Azure.
- Поиск рабочих областей службы машинного обучения
- Добавить новую рабочую область
Когда вы создаете рабочую область, Azure создаст для вас реестр контейнеров, хранилище, аналитику приложений и хранилище ключей. Это позволяет хранить образы докеров в реестре контейнеров, хранить данные в хранилище, отслеживать производительность модели в аналитических данных приложения и хранить конфиденциальную информацию в хранилище ключей, включая целевые ключи вычислений.
Эксперимент: в рабочей области вы можете определить эксперименты, содержащие отдельные тренировочные прогоны. Каждый тренировочный запуск, который вы выполняете, будет ассоциироваться с экспериментом и рабочим пространством. Определение логических экспериментов высокого уровня поможет вам отслеживать различные тренировочные прогоны и их результаты.
Модель: это основа любого процесса машинного обучения. AML предоставляет возможность регистрировать (версии) моделей, созданных во время каждого обучающего прогона. Каждая зарегистрированная модель физически хранится в хранилище, предоставленном при создании рабочего пространства. Это позволяет специалистам по машинному обучению тестировать и развертывать различные модели с поддержкой версий без необходимости хранить их локально. Можно зарегистрировать модели, созданные из любой из библиотек машинного обучения (scikit-learn, TensorFlow, PyTorch и т. Д.).
Изображение: образы Docker, содержащие модель и сценарий прогнозирования (оценки), могут быть созданы после тестирования модели. AML предоставляет возможность создавать эти образы и версировать их, аналогично управлению версиями модели. Это позволяет создавать и развертывать несколько образов Docker с разными версиями модели.
Развертывание. Созданные образы Docker можно развернуть с помощью Экземпляров контейнеров Azure. В этом и заключается истинная сила AML. Автоматическое создание конечной точки HTTP с балансировкой нагрузки, не беспокоясь о базовой инфраструктуре или конфигурации развертывания, помогает специалистам-практикам машинного обучения сосредоточиться на обучении и оценке своей модели. AML помогает собирать аналитические данные о приложениях для отслеживания производительности вашего развертывания.
Раздел 2. Настройка машинного обучения Azure с помощью VS-кода
В предыдущем разделе мы рассмотрели основные концепции AML. Прежде чем приступить к работе с этой службой, важно понять эти концепции. В этом разделе мы сосредоточимся на настройке нашей среды AML.
Настройка VS-кода. Моя предпочтительная среда IDE для работы с AML - VS-Code (с этого момента называется VSC). Это мотивировано тем фактом, что в VSC доступно расширение Azure, которое обеспечивает беспрепятственное подключение к рабочему пространству AML, помогая нам получить визуальное представление о наших рабочих пространствах, экспериментах, моделях, изображениях и развертываниях.
Чтобы настроить VSC, выполните следующие действия:
- Установить VSC
- Загрузите расширения Python, Azure, Машинное обучение Azure и Visual Studio Code Tools для AI через торговую площадку в VSC. Включите расширения, и если они настроены правильно, на левой боковой панели появится значок Azure.
- Войдите в свою учетную запись Azure через расширение Azure. Вы можете сделать это, обновив расширение Azure. Появится всплывающее окно входа с инструкциями. После входа в систему он покажет вам все ваши рабочие области.
Форк и клонирование репозитория AML. Чтобы быстро начать работу с AML, я создал репозиторий GitHub с примером, который поможет вам быстро обучить и развернуть простую регрессионную модель sklearn. Пожалуйста, перед продолжением создайте вилку и клонируйте репозиторий.
Настройка среды conda: в репозитории доступен файл среды conda (environment.yml). В качестве хорошей практики я Предлагаем создать новую виртуальную среду с помощью conda. Это изолирует ваши зависимости для конвейера AML без нарушения зависимостей для ваших существующих проектов. Чтобы создать новую среду conda со всеми необходимыми пакетами:
conda env create -f environment.yml
Это создаст новую среду conda с именем myenv. Примечание. Вы можете изменить имя среды, отредактировав файл environment.yml. Теперь вы готовы обучить свою первую модель с помощью конвейера AML.
Раздел 3. Использование конвейера AML с примером
Для настройки конвейера в репо предоставляется конфигурационный файл. Давайте рассмотрим каждый раздел в файле конфигурации и соответствующий ему модуль в конвейере.
Часть 1 - Конфигурация рабочего пространства (ws_config):
Чтобы настроить рабочее пространство, создается отдельный файл конфигурации в папке aml_config / config.json. Это можно сделать, введя указанные выше параметры в раздел ws_config файла ml-config.ini и запустив его (Примечание: вы можете запустить это через VSC, но сначала обязательно активируйте среду conda)
(myenv)python generate_wsconfig.py
Примечание. Этот шаг необходимо выполнить один раз для каждого проекта, который вы создаете в конвейере, если вы не измените группу ресурсов и / или рабочую область.
Часть 2 - Обучение (тренировка):
Например, мой файл конфигурации выглядит так:
train.py будет содержать ваш обучающий код, а в репозитории представлен пример обучения простой регрессионной модели sklearn. main_train.py - это драйвер для обучения. Код хорошо прокомментирован и не требует пояснений, но я рассмотрю ключевые части кода.
- Мы создаем эксперимент с именем, указанным в файле ml-config.ini, и настраиваем виртуальную машину Azure. Новый вычислительный экземпляр с указанной конфигурацией создается, если не существует предыдущего экземпляра с таким же именем.
- Загрузите данные из локальной папки в хранилище Azure, предоставленное с рабочей областью. Данные загружаются на обучающую виртуальную машину из этого места хранения.
- Отправьте свой обучающий сценарий на обучающую виртуальную машину Azure. Рекомендуется хранить train.py в корневом каталоге проекта.
- run - это объект регистратора, который отслеживает производительность модели. Он может регистрировать различные метрики, такие как потери, точность и т. Д. В сценарии train.py объект run уже создан и может использоваться для записи метрик модели.
- Зарегистрируйте обученную модель, хранящуюся в «./outputs/ridge_1.pkl». Это то же место, где вы храните свою модель в файле train.py.
Теперь вы можете запустить свое обучение, и оно должно дать следующий результат:
(myenv)python main_train.py
Часть 3 - Создать образ Docker (докер):
Например, мой файл конфигурации выглядит так:
Скачанную выше модель можно оценить и использовать для создания образа Docker. Сценарий score.py используется для прогнозирования, и его пример представлен в репозитории. create_docker.py - это драйвер для создания образа докера, который хорошо прокомментирован. Я пройдусь по ключевым частям кода.
- Получите зарегистрированную модель по имени и версии. Вы можете использовать VSC IDE, чтобы найти имя и версию модели и передать их в файл ml-config.ini.
- Определите необходимые пакеты pip и conda в файле конфигурации для выполнения прогнозирования на обученной модели.
- Создайте образ Docker из модели, сценария прогнозирования (score.py) и необходимых зависимостей. Для образа Docker можно добавлять теги.
Теперь вы можете создать образ докера, запустив,
(myenv)python create_docker.py
Теперь вы можете увидеть образ Docker, создаваемый в разделе Images вашей рабочей области в VSC IDE.
Часть 4 - Создание развертывания (развертывание):
Например, мой файл конфигурации выглядит так:
Чтобы развернуть созданный выше образ Docker, запустите:
(myenv)python create_deployment.py
Я рассмотрю важные части скрипта create_deployment.py,
- Выберите образ Docker, указав имя и версию. Вы можете использовать VSC IDE, чтобы найти имя и версию модели и передать их в файл ml-config.ini.
- Создайте развертывание для заданного количества ядер процессора и памяти. Теги могут быть добавлены для развернутой службы.
Результат будет выглядеть примерно так:
После развертывания службы вы можете получить доступ к конечной точке HTTP из файла развертывания properties.json.
Часть 5 - Тестовое развертывание:
Я использую Почтальон для тестирования службы со следующими данными для созданной выше службы регрессии sklearn.
{ "data": [ [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1] ] }
Напомним,
- Мы рассмотрели основные концепции AML в Разделе 1.
- Настройте VS-Code и среду conda для AML в разделе 2
- Мы рассмотрели пошаговый пример обучения, развертывания и тестирования простой регрессионной модели sklearn в Разделе 3.
Я рекомендую вам использовать этот конвейер для ваших сценариев использования машинного обучения, включая обучение и развертывание моделей глубокого обучения.
Заявление об ограничении ответственности: мнения, представленные в этой статье, принадлежат автору, а не компании EY Ireland.
Для получения дополнительной информации: https://www.ey.com/gl/en/issues/business-environment/ey-global-innovation