Сохранение пользовательской обученной модели tf.estimator для обслуживания тензорного потока - PullRequest
0 голосов
/ 22 марта 2019

Если у меня есть модель тензорного потока, использующая пользовательский оценщик, как бы я сохранил модель, чтобы развернуть ее для производства.

https://colab.research.google.com/github/google-research/bert/blob/master/predicting_movie_reviews_with_bert_on_tf_hub.ipynb#scrollTo=JIhejfpyJ8Bx

Модель, которую я использую, похожа на эту, и ей было интересно, как сохранить модель после ее обучения. Попытался использовать Savedmodel и восстановить с помощью контрольных точек, но у них не получилось (не удалось адаптировать его для этого примера)

1 Ответ

0 голосов
/ 02 апреля 2019

Один из способов сделать это - через gRPC. У TF есть не очень простая документация: https://www.tensorflow.org/tfx/serving/serving_basic Самым сложным является сохранение вашей модели, после чего ее размещение через докер имеет довольно много документации. Наконец, вы можете сделать вывод об этом с помощью клиента 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 run -p 8500:8500 \
--mount type=bind,source=/tmp/mnist,target=/models/mnist \
-e MODEL_NAME=mnist -t tensorflow/serving &

Наконец, вы можете использовать клиент прогнозирования (через gRPC), чтобы передать предложение на ваш сервер и вернуть результат. Ссылка github, которую я добавил выше, содержит два сообщения в блоге об этом.

...