#python #tensorflow #tensorflow-serving #tensorflow-estimator
#python #tensorflow #обслуживание tensorflow #tensorflow-estimator
Вопрос:
Если у меня есть модель tensorflow, использующая пользовательский оценщик, как мне сохранить модель, чтобы я мог развернуть ее для производства.
Модель, которую я использую, похожа на эту, и мне было интересно, как сохранить модель после ее обучения. Пытались использовать Savedmodel и восстанавливать с помощью контрольных точек, но безуспешно с обоими (не удалось адаптировать его для этого примера)
Ответ №1:
Один из способов сделать это — через gRPC. У TF есть не такая простая документация:https://www.tensorflow.org/tfx/serving/serving_basic Самое сложное — это фактически сохранить вашу модель, после чего разместить ее через docker с довольно большой документацией. Наконец, вы можете сделать вывод на ее основе, используя gRPC-клиент, т. е. https://github.com/epigramai/tfserving-python-predict-client
Для этого вам сначала нужно сохранить вашу модель. Что-то вроде этого, где вам нужно будет немного настроить его для вашего примера:
def save_serving_model(self,estimator):
feature_placeholder = {'sentence': tf.placeholder('string', [1], name='sentence_placeholder')}
# The build_raw_serving_input_receiver_fn doesn't serialize inputs so avoids confusion with bytes and strings. You can simply pass a string.
serving_input_fn = tf.estimator.export.build_raw_serving_input_receiver_fn(feature_placeholder)
# Save the model
estimator.export_savedmodel("./TEST_Dir", serving_input_fn)
Это позволит сохранить модель в TEST_Dir
.
В качестве быстрого теста вы можете сделать:
saved_model_cli run --dir /path/to/mode/ --tag_set serve --signature_def predict --input_exprs="sentence=['This API is a little tricky']"
Следующим шагом является размещение этой модели или ее «обслуживание». Я делаю это с помощью docker, то есть команды типа
docker run -p 8500:8500
--mount type=bind,source=/tmp/mnist,target=/models/mnist
-e MODEL_NAME=mnist -t tensorflow/serving amp;
Наконец, вы можете использовать клиент predict (через gRPC) для передачи предложения на ваш сервер и возврата результата. github
Ссылка, которую я добавил выше, содержит два сообщения в блоге об этом.