Как сохранить TensorFlow открытым между выводами на сервере

Мы пытаемся использовать TensorFlow (TF) на сервере для вывода на изображение.

Android-приложение отправляет изображение jpeg на мою машину, php api выполняет мой скрипт android (python) и возвращает результаты, это занимает около 6 секунд, но мы понимаем, что загрузка TF занимает много времени, но короткое время сделайте вывод, например, один запрос занимает 10% ресурсов, другой — 10%, поэтому он имеет 20% только для двух выводов одновременно и двух моделей TF.

Мы хотим загрузить только один экземпляр TF в фоновом режиме:

  1. Устройство отправляет JPEG и передает его в TF.
  2. B устройство отправляет JPEG, и передать его в TF.
  3. TF берет первое A и второе B и делает вывод в последовательности.
  4. возвращать оценки.

На тот же момент времени сервер загружает только 1 экземпляр TF.

Что мы делаем:

  1. Устройство отправляет jpeg, загружает экземпляр TF, делает вывод и передает его в TF.
  2. B устройство отправляет JPEG, загружает экземпляр TF, делает вывод и передает его в TF.
  3. На тот же момент времени сервер загружен n экземпляров , 2 в этом случае, TensorFlow, а не только один.

Звонили TensorFlow в php с
api.php

shell_exec("python3 myinferece.py image=image_path")

и вывод TF с помощью:
inference.py

with tf.Session(graph=graph) as sess:
scores = sess.run(our_params)

Окончательный код развернут в aws.

0

Решение

Для выполнения задачи поддержания работы TensorFlow и принятия нескольких запросов на вывод вам понадобится некоторая форма межпроцессного взаимодействия.

Например, вы можете заставить программу TF Python ожидать новые входные данные через канал, в то время как PHP-программа отправляет эти значения в канал каждый раз, когда поступает новый запрос.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]