Развертывание REST API с зависимостями - PullRequest
0 голосов
/ 23 мая 2018

Я хочу развернуть обученную модель машинного обучения в качестве REST API.API возьмет файл и сначала разложит его на функции.Проблема в том, что этот шаг зависит от других библиотек (например, FFTW ).Затем API запросит модель с функциями из предыдущего шага.

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

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

1 Ответ

0 голосов
/ 01 июня 2018

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

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

Масштабируемость на рычаге докера может быть достигнута путем развертывания в облачных провайдерах и оркестровки докеров с помощью AWS ECS илиKubernetes.

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

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

Если этап предварительной обработки реализован в виде сценария Python - мы можем развернуть его со всеми deps из requirements.txt в отдельных контейнерах.То же самое верно и для модели - она ​​имеет встроенные модели Tensorflow и Spark.В противном случае легко адаптировать существующий механизм для удовлетворения ваших требований (другой язык / инструментарий)

Затем, предполагая, что у вас уже есть экземпляр hydro-serving, вы загружаете свои шаги с помощью hs upload --host $HOST --port $PORT и составляете конвейер приложения.с вашими моделями.Вы можете получить доступ к своему приложению через HTTP API, GRPC API или Kafka. * Было бы здорово, если бы вы указали, какие файлы вы пытаетесь отправить в REST API.Возможно, вам нужно будет как-то их кодировать, чтобы отправить их через REST API.С другой стороны, вы можете просто отправить их как есть через GRPC API.

Раскрытие информации: я являюсь разработчиком hydro-Обслуживание

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