Понимание того, какой вариант подходит вам лучше всего

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

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

Настраивать

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



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

1. Функции Azure

Вероятно, это самый простой подход. Мы можем использовать Функции Azure с триггером HTTP для быстрого развертывания модели в виде бессерверного API.

Шаги

Используя VSCode, я хотел бы порекомендовать установить расширение функций Azure, которое позволяет нам контролировать функции Azure из нашей IDE.

На вкладке Azure мы переходим в Workspace и создаем функцию локально.

Это заполняет структуру каталогов, чтобы помочь нам начать разработку нашей функции.

Мы обновляем функцию main в файле __init__.py для загрузки модели машинного обучения, анализа данных в запросе и возврата предсказанного класса.

Затем мы обновляем файл requirements.txt, чтобы функция могла десериализовать модель.

Мы также загружаем нашу замаринованную модель в виде файловой зависимости, которую мы размещаем на том же уровне каталога.

После этого пришло время развернуть изменения в Azure. Мы создаем приложение-функцию в Azure, а затем развертываем в нем нашу локальную функцию.

После завершения развертывания мы копируем URL-адрес и, например, используем Postman для запуска запросов к нашей модели.

2. Служба приложений Azure

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

Это интересный вариант, если нам нужна архитектура, в которой модель упакована в более крупный API, например, для уменьшения сетевой задержки при вызове модели.

Шаги

Используя каталог из репозитория, предоставленного выше, у нас уже есть модель, файл requirements.txt, чтобы служба приложений могла установить все зависимости, и app.py , который использует FastAPI для запуска простого API и перепрофилирует код, который мы использовали ранее в функции Azure.

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

Наконец, нам просто нужно добавить нашу команду запуска на вкладку конфигурации на портале Azure.

После перезапуска приложения мы отправляем запрос Postman и подтверждаем, что наша служба приложений работает должным образом ✅

3. Машинное обучение Azure для AKS

AzureML включает в себя готовые возможности, помогающие развернуть модель в кластере Kubernetes (AKS) для рабочих сценариев. Это можно сделать с помощью пакета SDK Azure ML с Python, как будет показано ниже.

Я думаю, что большинство вариантов использования машинного обучения могут значительно выиграть от использования AzureML. Если мы хотим сделать что-то еще помимо простого развертывания модели, он включает в себя функции, связанные с управлением моделью или мониторингом модели, упрощает интеграцию с другими службами и упрощает использование принципов MLOps.

Это также делает развертывание более доступным за счет автоматизации важных шагов, таких как создание веб-службы, контейнеризация модели и среды Python или управление развертыванием кластера. С другой стороны, важно иметь базовые знания, чтобы понимать, как отлаживать, отслеживать и настраивать спецификации кластера Kubernetes.

Шаги

Мы можем использовать записную книжку в Azure ML Studio.

Во-первых, из нашего локального хранилища мы загружаем и регистрируем нашу модель в AzureML.

Во-вторых, мы создаем кластер AKS, в котором будет размещаться наша веб-служба.

В нашем рабочем каталоге мы сохраняем сценарий входа, необходимый AzureML для загрузки модели и выполнения прогнозов в рабочей среде.

И, наконец, мы запускаем приведенный ниже скрипт, чтобы развернуть нашу модель со всеми необходимыми зависимостями.

Вот так и заработал наш веб-сервис! ✅

4. Другие варианты

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



Хотя это был простой обзор без рассмотрения реального сценария с техническими ограничениями, я все же надеюсь, что эта статья поможет пролить немного света на различные варианты.

Как насчет вас, развертываете ли вы свои модели в Azure одним из этих способов или по-другому?