Подавайте модель машинного обучения, используя подписку GraphQL.

Обзор

В предыдущих статьях я использовал FastAPI + WebSocket + React для обслуживания моделей машинного обучения. По мере того, как модели машинного обучения становятся все более сложными, время, необходимое для подготовки прогнозов, также увеличивается. Использование WebSocket предоставляет серверу асинхронный метод для обновления клиента прогнозом после завершения оценки.



YOLO с использованием FastAPI WebSocket и React
Обзорalpha2phi.medium.com





Подписка GraphQL — это функция, которая позволяет серверу отправлять данные своим клиентам, когда происходит определенное событие, и обычно реализуется с помощью WebSocket.

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

Для модели машинного обучения я буду использовать модель Photo2Cartoon от PaddleGAN.

Фронтенд-приложение делает снимок вашего лица и отправляет изображение на конечную точку GraphQL для обработки. Как только обработка завершена, обработанное изображение отправляется обратно во внешнее приложение.

Для новичков в GraphQL прочитайте этот учебник, чтобы узнать больше.

Бэкенд — FastAPI + Ариадна

Схема

В отличие от REST API, для GraphQL обычно существует только 1 конечная точка, для которой необходимо определить схему для запросов, мутаций и подписок.

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

Мутация

Для мутации он получает сообщение, содержащее идентификатор клиента и содержимое.

  • Входящее сообщение сохраняется в асинхронной очереди.
  • Сообщение об успехе возвращается немедленно, так как обработка будет выполняться асинхронно.
  • Входящее сообщение представляет собой строку изображения в кодировке base64.

Подписка

Для подписки,

  • он прослушивает входящие сообщения от Python asyncio queue.
  • когда сообщение приходит и соответствует идентификатору клиента, оно обрабатывается, и сообщение процесса отправляется обратно клиенту в виде строки изображения в кодировке base64.

Фронтенд — React + клиент Apollo

Фронтенд-приложение разработано с использованием React.

  • Когда приложение запускается, оно регистрируется в серверной части GraphQL и подписывается на конечную точку для получения новых входящих сообщений.
  • Он делает фотографии с помощью веб-камеры.
  • Захваченное изображение отправляется в конечную точку GraphQL.
  • Когда приходит новое сообщение, оно отображает изображение.

А ниже просмотрщик изображений по подписке.

Вы также можете прочитать эту статью, чтобы узнать, как работает эта модель.



Резюме

Асинхронное обслуживание модели машинного обучения с использованием GraphQL требует дополнительных усилий при разработке. В зависимости от ваших потребностей, изучите, подходит ли он для ваших вариантов использования. Вы также можете проверить управляемые службы GraphQL, например. AWS AppSync, если вы уже используете поставщиков облачных услуг, таких как AWS.

Код, который я использовал, можно найти в этом репозитории.

Также ознакомьтесь с этими статьями!



Если вы еще не являетесь участником Medium и хотите им стать, нажмите здесь. (Часть вашей абонентской платы будет использована для поддержки alpha2phi.)