Заинтересованы в таких темах или нуждаются в помощи?

Свяжитесь с нами - https://linktr.ee/pranaychandekar

См. Только раздел Демо (включен). Эта статья устарела, и компоненты после раздела Демо устарели. Основная ветка в репозитории GitHub обновлена ​​последней версией фреймворка - FastAPI. Ссылка на обновленный репозиторий доступна в разделе Введение. Поскольку проект помещен в контейнер, вы все равно можете разместить веб-службу, выполнив те же действия.

Вступление

Часто мы тратим много времени на обработку данных и настройку модели машинного обучения. Но допустим, мы успешно обучили модель машинного обучения. Что дальше? Затем мы хотели бы использовать эту модель для прогнозирования в производстве. Как?

Это можно сделать двумя способами:

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

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

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

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



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

Демо

Обычно мы реализуем, а затем делаем демонстрацию. Но я считаю, что нам нужно пройти демо, чтобы почувствовать. Затем мы можем углубиться в детали реализации. Итак, на данном этапе я бы порекомендовал вам попробовать собрать и запустить этот проект с помощью Docker Engine.

Чтобы начать демонстрацию, обратитесь к документации на домашней странице этого репозитория.

Реализация

Требования: Docker Engine и текстовый редактор.

Проект включает Dockerfile и построен с использованием Sanic Framework. Ниже приводится структура каталогов проекта:

Немного подробностей по каталогам:

  1. conf: этот каталог содержит два файла: i) app.conf - который содержит конфигурации службы, и ii) журнал. conf - который содержит конфигурации регистратора.
  2. docs: этот каталог содержит всю документацию, относящуюся к проекту.
  3. журналы: служба настроена на запись всех файлов журналов в этот каталог.
  4. ресурсы: этот каталог содержит все ресурсы, необходимые для нашей службы, такие как модель, данные и т. д.
  5. src: этот каталог содержит весь исходный код нашей веб-службы, который включает выборку конфигураций, анализ запроса, прогнозирование, подготовку ответа, запись журналов и т. д.
  6. test: Эта папка содержит тестовые примеры нашей веб-службы.

Для получения дополнительных сведений об отдельных файлах см. документацию по исходному коду внутри них.

Каждый раз, когда мы запускаем док-контейнер, он запускает сценарий start-server.sh, который внутри себя запускает train.py. (для обучения модели прогнозированию) и prediction.py (запускающий нашу веб-службу).

Примечание. Файл train.py необязательный. Вместо того, чтобы включать модель, которая была большой, я включил данные и обучающий сценарий, чтобы обучить модель запуску демонстрационного сервиса. Удалите строку вызова train.py в start-server.sh при создании собственной пользовательской веб-службы и включите свою модель в модель ресурсов.

prediction.py - это наш контроллер, в котором мы определяем все конечные точки и соответствующую логику.

Запуск приведенного выше сценария откроет два веб-API. Как мы уже убедились в демонстрации, интеграция sanic-openapi позволяет нам получать доступ к этим API непосредственно из браузера.

Файлы, которые необходимо изменить, чтобы использовать этот шаблон для размещения вашей пользовательской модели:

  1. app.conf: добавьте конфигурации в соответствии с потребностями вашей службы, такие как сведения о подключении к БД и т. Д.
  2. classifier.py: добавьте одноэлементный класс для загрузки вашей модели машинного обучения.
  3. prediction_service.py: вызовите экземпляр классификатора и выполните задачу прогнозирования. Подготовьте ответ для отправки.
  4. request_parser.py: добавьте логику для анализа вашего пользовательского запроса.
  5. test_prediction.py: добавьте тестовые примеры, соответствующие логике вашего сервиса.
  6. start-server.sh: удалите вторую строку, вызывающую train.py, и удалите ее из проект тоже. Чтобы разместить веб-службу, нам нужно только запустить prediction.py.
  7. Dockerfile: при необходимости обновите его.
  8. Обновите документацию по коду.

С этими минимальными изменениями мы теперь готовы разместить нашу службу пользовательских прогнозов.

Выводы

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

Чтобы было интересно, я бы порекомендовал интегрировать вашу пользовательскую модель, настроив проект. Поделитесь своим опытом и отзывами.

Заинтересованы в таких темах или нуждаются в помощи?

Свяжитесь с нами - https://linktr.ee/pranaychandekar

Цитаты

  1. Проект мл-предсказание-веб-сервис.
  2. Введение в API
  3. REST API
  4. Докер
  5. Модельное обучение