Обслуживание Tensorflow: пакетные запросы получают более высокую задержку

#tensorflow #batching #tensorflow-serving

#tensorflow #пакетирование #обслуживание tensorflow

Вопрос:

Я экспериментирую с развертыванием обслуживания TF на GKE и пытаюсь создать высокодоступную онлайн-систему прогнозирования. Я пытался оптимизировать задержку, объединяя несколько запросов вместе. Однако задержка, похоже, страдает, а не улучшается.

  • Модель представляет собой CNN, входной вектор длиной около 50.
  • Обслуживание TF выполняется в кластере Kubernetes с 6 стандартными узлами
  • Я пробовал пакеты размером 5 и 10. Я не использовал реализацию пакетной обработки из TF Serving, я просто отправил запрос с массивом shape (batch_size, input_size) вместо (1, input_size)

Моя интуиция заключалась в том, что, хотя пакетная обработка приносит наибольшую пользу при использовании с графическими процессорами для использования их пропускной способности, использование ее с процессорами не должно замедлять ее. Замедление показано на диаграммах ниже — req / s — это скорее прогнозы / с, т.Е. 20 будут разделены на 4 или 2 запроса к серверу.

Я понимаю, как это неравномерно распределяет рабочую нагрузку по кластеру для меньшего количества запросов, но даже при просмотре 60 или 120 задержка просто выше.

Есть идеи, почему это так?

диаграмма с размером пакета 1

диаграмма с размером пакета 5

диаграмма с размером пакета 10

Комментарии:

1. Насколько велики данные, которые вы отправили с вашим пакетом? Я видел несколько патологических случаев, когда при отправке данных узкое место со скоростью 80 МБ / с, возможно, это может быть узким местом

2. Хм, это далеко не такой размер — весь пакет представляет собой всего лишь массив целых чисел 10 * 50.

3. Если вы запускаете его на процессоре, пакетная обработка не должна быть медленнее, но и не быстрее.

4. Я не говорю, что вы не используете пакетную реализацию, а загружаете (batch, inp). Если он рассматривает это как один вход, возможно, это значительно увеличивает количество параметров, которые у вас есть в вашей модели, потому что теперь вы обрабатываете каждый образец в пакете по-разному. Это стало бы причиной значительного замедления.

5. Если это время задержки. Возможно, это увеличивается из-за пакетной обработки, потому что вам нужно дождаться создания целого пакета, прежде чем вы сможете отправить его на обработку.