В настоящее время я пытаюсь развернуть свернутую нейронную сеть Keras для веб-службы.
Я попытался преобразовать мою сохраненную keras модель hdf5 в модель tensorflow.js и развернуть ее, но это замедлило приложение на стороне клиента, поскольку модель относительно надежна и, следовательно, занимает большое пространство в клиентской памяти.
Таким образом, я пытаюсь выяснить способ развертывания модели в облаке и сделать прогнозы через запрос из веб-приложения с изображением, а затем получить ответ, который содержит тензор прогнозирования. Я знаю, что gcloud может иметь некоторые подобные способности или функции, но я не уверен, как начать.
По сути, я спрашиваю, есть ли какая-либо служба, которая позволит мне развернуть предварительно подготовленную и сохраненную сверточную модель нейронной сети, на которую я могу отправить изображения в запрос, и использовать модель для возврата предсказанного тензора?
Если вы хотите, чтобы решение для развертывания вашей модели в 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, которая включает аутентификацию и авторизацию, автомасштабирование (включая масштаб до нуля), а также протоколирование и мониторинг, без необходимости писать или поддерживать строку кода.
Вы можете экспортировать обученную модель 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
- это словарь, содержащий ваш образ запроса.