Как мне сделать асинхронный вывод на OpenVino - PullRequest
0 голосов
/ 18 июня 2019

Я написал Python-сервер, который использует сеть OpenVino для запуска вывода входящих запросов.Чтобы ускорить процесс, я получаю запросы в нескольких потоках и хотел бы выполнять выводы одновременно.Кажется, что что бы я ни делал, время, которое я получаю, такое же, как у неконкурентных решений - что заставляет меня думать, что я что-то упустил.

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

def __init__(self, num_of_requests: int = 4):
   self._plugin = IEPlugin("CPU", plugin_dirs=None)
   model_path = './Det/'
   model_xml = os.path.join(model_path, "ssh_graph.xml")
   model_bin = os.path.join(model_path, "ssh_graph.bin")
   net = IENetwork(model=model_xml, weights=model_bin)
   self._input_blob = next(iter(net.inputs))

   # Load network to the plugin
   self._exec_net = self._plugin.load(network=net, num_requests=num_of_requests)
   del net

def _async_runner(detect, images_subset, idx):
    for img in images_subset:
        request_handle = self._exec_net.start_async(request_id=idx, inputs={self._input_blob: img})
        request_handle.wait()


def run_async(images):  # These are the images to infer
    det = Detector(num_of_requests=4)
    multiplier = int(len(images)/4)
    with ThreadPoolExecutor(4) as pool:
        futures = []
        for idx in range(0,3):
            images_subset = images[idx*multiplier:(idx+1)*multiplier-1]
            futures.append(pool.submit(_async_runner, det.detect, images_subset, idx))

Когда я выполняю 800 выводов в режиме синхронизации, я получаю среднее значение.время выполнения 290 мсек. Когда я работаю в асинхронном режиме, среднее время выполнения составляет 280 мсек.Это не существенные улучшения.Что я делаю не так?

1 Ответ

2 голосов
/ 26 июня 2019

Вы можете обратиться к примеру кода из C: \ Program Files (x86) \ IntelSWTools \ openvino_2019.1.144 \ inference_engine \ samples \ python_samples \ object_detection_demo_ssd_async \ object_detection_demo_ssd_async.py или к аналогичным примерам из каталога python_sync для проверки режима в качестве примера.адресуется.

...