У меня есть небольшой веб-сервер, который получает входные данные в терминах предложений и нуждается в возврате предсказания модели, используя Tensorflow Serving. Он работает отлично и хорошо использует наш единственный графический процессор, но теперь я хотел бы включить пакетную обработку, чтобы Tensorflow Serving немного подождала, чтобы группировать входящие предложения, прежде чем обрабатывать их вместе в одной партии на графическом процессоре.
Я использую предопределенную структуру сервера с предустановленной структурой пакетной обработки, используя начальную версию службы Tensorflow. Я могу включить пакетную обработку с использованием флага --batching
и установить batch_timeout_micros = 10000
и max_batch_size = 1000
. Ведение журнала подтверждает, что пакетная обработка включена и что используется графический процессор.
Однако при отправке запросов на обслуживающий сервер пакетная обработка имеет минимальный эффект. Отправка 50 запросов в то же время почти линейно масштабируется с точки зрения использования времени с отправкой 5 запросов. Интересно, что функция predict()
сервера запускается один раз для каждого запроса (см. здесь), что говорит мне о том, что дозация не выполняется правильно обработано.
Я что-то упустил? Как проверить, что не так с пакетом?
Обратите внимание, что это отличается от Как выполнить пакетную обработку в службе Tensorflow?, поскольку в этом вопросе рассматривается только то, как отправлять несколько запросов от одного клиента, но не как включить Tensorflow Обслуживание пакетной обработки за кадром для нескольких отдельных запросов.