Как ограничить тензорный_модель_сервер для обработки одного запроса за раз?Обработка нескольких запросов приводит к сбою - PullRequest
0 голосов
/ 27 сентября 2018

Как мне ограничить тензор потока_моделей_серверов для обработки одного запроса за раз?Обработка нескольких запросов приводит к сбою из-за использования процессора и оперативной памяти.В идеале я хочу, чтобы другие запросы были поставлены в очередь и обработаны 1 на 1.

В настоящее время я пытался передать аргумент grpc.max_concurrent_streams = 1 как часть --grpc_channel_arguments в tenorsflow_model_server, но это не похожеработать.

Я рассмотрел вопрос об использовании очереди процессов, такой как Redis Queue / Celery, но это не идеально, так как я вызываю логический вывод из Tensorflow через API, и мне не нужно постоянно пинговать API доузнать статус задачи, в идеале я хочу, чтобы она блокировалась, пока я не получу ответ.Также я почти уверен, что именно для этого и должен использоваться сельдерей.

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

Помогите!

Спасибо

1 Ответ

0 голосов
/ 08 октября 2018

У меня нет хорошего ответа, но пару вещей, которые вы могли бы попробовать :

  1. Попробуйте установить --tensorflow_session_parallelism так, чтобы он равнялся количеству тензорных потоковпотоки, так что один запрос захватывает все потоки сеанса тензорного потока и не позволяет другим запросам использовать какие-либо потоки.

  2. Включить пакетирование с max_batch_size = 1 и num_batch_threads = 1, чтодать вам сериализованные партии размером 1 каждая - это вырожденная форма «пакетирования», которая даст вам необходимый контроль доступа.

...