Как развернуть модель Keras CNN на веб-сервисе?

1

В настоящее время я пытаюсь развернуть свернутую нейронную сеть Keras для веб-службы.

Я попытался преобразовать мою сохраненную keras модель hdf5 в модель tensorflow.js и развернуть ее, но это замедлило приложение на стороне клиента, поскольку модель относительно надежна и, следовательно, занимает большое пространство в клиентской памяти.

Таким образом, я пытаюсь выяснить способ развертывания модели в облаке и сделать прогнозы через запрос из веб-приложения с изображением, а затем получить ответ, который содержит тензор прогнозирования. Я знаю, что gcloud может иметь некоторые подобные способности или функции, но я не уверен, как начать.

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

  • 0
    Обычно мы используем Flask для создания API для такой модели. Допустим, у вас есть большая модель, которую нужно загрузить на другой сервер, создав простой API REST в колбе, клиентское приложение может сделать запрос с изображением, а затем API отправит ответ. Связанные с моделями вещи происходят в бэкэнде Flask.
Теги:
tensorflow
google-cloud-ml
keras
request

2 ответа

1

Если вы хотите, чтобы решение для развертывания вашей модели в Google Cloud использовалось для развертывания кликов, подумайте об использовании сервиса Cloud ML Engine Online Prediction. Сначала следуйте инструкциям в ответе @sdcbr, чтобы экспортировать SavedModel. Скопируйте модель в GCS, затем просто создайте модель и версию:

gcloud ml-engine models create "my_image_model"
gcloud ml-engine versions create "v1"\
    --model "my_image_model" --origin $DEPLOYMENT_SOURCE

Или, что еще проще, используйте Cloud Console, чтобы сделать это с помощью нескольких кликов!

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

  • 0
    Обратите внимание, что для моделей изображений мы представляем новое оборудование. Чтобы получить к нему доступ, отправьте электронное письмо [email protected].
  • 0
    Моя модель с файлом .pb и файлом связанных переменных сохранена в облачном хранилище Google и связана с моделью в движке ml. Как мне найти URL для запроса на публикацию или использовать модель для прогнозирования?
Показать ещё 1 комментарий
1

Вы можете экспортировать обученную модель Keras и обслуживать ее службой TensorFlow. TF Serving позволяет размещать модели и вызывать их через запросы gRPC или REST. Вы можете развернуть флеш-приложение с конечной точкой, которая принимает изображение, обертывает его как полезную нагрузку и вызывает вашу модель через модуль requests.

Ваш код для экспорта модели в качестве обслуживаемого будет выглядеть так:

import tensorflow as tf

# The export path contains the name and the version of the model
model = keras.models.load_model('./mymodel.h5')

# Feth the Keras session and save the model
with keras.backend.get_session() as sess:
    tf.saved_model.simple_save(
        sess,
        export_dir,
        inputs={'images': model.input},
        outputs={t.name:t for t in model.outputs})

Это сохранит файлы, необходимые для обслуживания TF. Из этого каталога вы можете разместить модель следующим образом:

tensorflow_model_server --model_base_path=$(pwd) --rest_api_port=9000 --model_name=MyModel

Тогда ваш запрос будет выглядеть так:

requests.post('http://ip:9000/v1/models/MyModel:predict', json=payload)

Где payload - это словарь, содержащий ваш образ запроса.

  • 1
    Вы должны использовать tf.saved_model.simple_save ():
  • 0
    Хорошо, я не знал об этом, я проверю это и обновлю свой ответ. Благодарю.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню