Обслуживание Tensorflow: когда его использовать, а не просто выводить внутри службы Flask?

Я работаю с моделью, обученной с использованием API обнаружения объектов. Вот как я это сделал:

  • Создайте службу Tensorflow на порту 9000, как описано в базовом руководстве

  • Создайте код Python, вызывающий этот сервис, используя предикат_pb2 из tenorsflow_serving.apis, подобный этому

  • Вызовите этот код на сервере Flask, чтобы сделать службу доступной по HTTP

Тем не менее, я мог бы сделать вещи намного проще следующим образом:

Как видите, я мог бы пропустить использование сервировки Tensorflow.

Итак, есть ли веская причина использовать сервировку Tensorflow в моем случае? Если нет, то в каких случаях я должен его использовать?

2 ответа

Я полагаю, что большинство причин, по которым вы бы предпочли Tensorflow Serving over Flask, связаны с производительностью:

  • Tensorflow Serving использует gRPC и Protobuf, в то время как обычный веб-сервис Flask использует REST и JSON. JSON опирается на HTTP 1.1, а gRPC использует HTTP/2 ( есть важные различия). Кроме того, Protobuf - это двоичный формат, используемый для сериализации данных, и он более эффективен, чем JSON.
  • TensorFlow Serving может выполнять пакетные запросы к одной и той же модели, которая более целесообразно использует аппаратное обеспечение (например, графические процессоры).
  • TensorFlow Serving может управлять версиями модели

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

Flask используется для обработки запросов / ответов, тогда как обслуживание Tensorflow специально разработано для обслуживания гибких моделей ML в производстве.

Давайте рассмотрим несколько сценариев, в которых вы хотите:

  • Одновременное обслуживание нескольких моделей для нескольких продуктов (отношения "многие ко многим").
  • Посмотрите, какая модель оказывает влияние на ваш продукт (A/B-тестирование).
  • Обновление весов моделей при производстве, что так же просто, как сохранение новой модели в папке.
  • Иметь производительность, равную коду, написанному на C/C++.

И вы всегда можете использовать все эти преимущества БЕСПЛАТНО, отправляя запросы в TF Serving с помощью Flask.

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