Мы пытаемся использовать TensorFlow (TF) на сервере для вывода на изображение.
Android-приложение отправляет изображение jpeg на мою машину, php api выполняет мой скрипт android (python) и возвращает результаты, это занимает около 6 секунд, но мы понимаем, что загрузка TF занимает много времени, но короткое время сделайте вывод, например, один запрос занимает 10% ресурсов, другой — 10%, поэтому он имеет 20% только для двух выводов одновременно и двух моделей TF.
Мы хотим загрузить только один экземпляр TF в фоновом режиме:
На тот же момент времени сервер загружает только 1 экземпляр TF.
Что мы делаем:
Звонили 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.
Для выполнения задачи поддержания работы TensorFlow и принятия нескольких запросов на вывод вам понадобится некоторая форма межпроцессного взаимодействия.
Например, вы можете заставить программу TF Python ожидать новые входные данные через канал, в то время как PHP-программа отправляет эти значения в канал каждый раз, когда поступает новый запрос.
Предоставление полного примера для каждого типа межпроцессного взаимодействия (каналы, сокеты) выходит за рамки этого вопроса, но этого должно быть достаточно, чтобы начать работу.
Других решений пока нет …