Доступ к моделям машинного обучения через REST API

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

Я сохранил свою модель в формате HDF5. пример "model.h5" Для справки: https://machinelearningmaster.com/save-load-keras-deep-learning-models/

Мы также можем преобразовать его в файл PMML, но файл PMML еще не поддерживает CNN.

Мы можем использовать библиотеку flask для преобразования модели в спокойный веб-сервис, например: "https://www.linode.com/docs/applications/big-data/how-to-move-machine-learning-model-to-production/"

Но Я бы предпочел java.

Я предпочитаю делать микросервис с помощью Spring Boot. Но я не получил пошаговой статьи о том, как это сделать.

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

Любая помощь будет оценена по достоинству.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 226
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Поскольку вы обучили модель с помощью Keras, я предлагаю вам преобразовать модель в замороженную модель tensorflow (файл pb). Вы можете использовать этот библиотека для преобразования модели h5 формата keras в модель tensorflowpb.

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

Вот Почта, показывающий, как развернуть модель keras в tensorflow-serving. После развертывания int tensorflow-serving вы можете поместить его в контейнер с помощью nvidia-docker, а затем использовать службу с помощью любого приложения javaspring-boot.

Можете ли вы также посоветовать мне, как использовать эту службу с помощью java? Любая помощь с примером или ссылкой на пример будет хороша.

Nikhil 06.08.2018 13:19

Я бы рекомендовал попробовать BentoML или взглянуть на его архитектуру.

BentoML - это платформа с открытым исходным кодом для обслуживания высокопроизводительной модели машинного обучения. Это позволяет очень легко создать сервер REST API для демонстрации вашей модели машинного обучения через REST API. И он не зависит от фреймворка, прекрасно работает с Keras и многими другими фреймворками машинного обучения.

Обычно мы наблюдаем 10-50-кратное повышение общей производительности при переходе с простой фляги или реализации Java по сравнению с использованием среды BentoML. Ключевой метод оптимизации, используемый BentoML, - это адаптивное микропакетирование, которое группирует запросы онлайн-прогнозирования в небольшие пакеты перед подачей в модель, что в значительной степени увеличивает пропускную способность сервера модели API (Бумага для стрижки подробно описывает этот подход). Он обеспечивает производительность, аналогичную TF-серверу, при этом сохраняется среда выполнения Python для пользовательского кода, который выполняет предварительную или постобработку на своем сервере модели.

Еще одна причина рекомендовать BentoML заключается в том, что он специально разработан для обслуживания моделей машинного обучения, поэтому вам не придется заниматься разработкой веб-сервера нижнего уровня, в отличие от использования flask, Java Spring и т. д. И в нем есть все Встроенные передовые практики DevOps, предоставляющие основные функции прямо из коробки, такие как конечная точка метрик Prometheus, конечная точка проверки работоспособности, сбор журналов и определение Swagger API.

Отказ от ответственности: я являюсь автором проекта BentoML

Я предлагаю использовать ONNX для развертывания моделей глубокого обучения в производстве.

Сначала преобразуйте вашу модель в формат ONNX, так как вы использовали Keras для обучения своей модели, вы можете использовать библиотеку керас-оннкс.

Затем вы можете использовать AI-обслуживание, который обслуживает модель ONNX с конечными точками HTTP REST и gRPC. Существует пример ноутбук, показывающий, как развернуть модель MNIST ONNX с использованием AI-Serving.

Другие вопросы по теме