Ускорение времени логического вывода TF Serve

У меня есть модель, которая принимает 2 трехмерных тензора и выводит четырехмерный тензор. Protobuf-версия этой модели весит около 750 МБ. Исполняемый файл вывода C++ создается/запускается на компьютере с Windows 10 и использует ЦП.

  1. У меня есть рабочий код C++, который использует tensorflow.dll для загрузки модели каждый раз и выполнения прямого прохода. (например, то, что упоминается в этом сообщении). Время выполнения для этого составляет от 55 до 70 секунд, и основным компонентом этого является время загрузки модели и построения графика (около ~ 25 секунд).

  2. Чтобы ускорить выполнение, перешли к обслуживанию модели с помощью докера TF Serve (например, это). Теперь общее время выполнения сокращается до 20-40 секунд. Время, необходимое для прохода вперед, составляет около 8 секунд.

Есть ли способ ускорить это (подход сервер-клиент) еще больше? Скажем, используя больше ядер процессора?

Я понимаю, что квантование параметров модели до f16 или int ускорит время выполнения. Есть ли другие идеи?

Это наблюдаемое время работы для моделей аналогичного размера на ЦП? Скажем, BERT (маленький и/или большой)?

Спасибо!


person Ashwin Kannan    schedule 03.09.2020    source источник