В коде C ++ моего текущего проекта я запускаю замороженный классификатор NN для каждого отдельного изображения (8×8 пикселей). Для каждого сэмпла вызов Session-> Run занимает около 0,02 секунды, что дорого для моего приложения, поскольку у меня может быть 64000 сэмплов, которые мне нужно запустить.
Когда я отправляю пакет из 1560 образцов, вызов Session-> Run занимает около 0,03 секунды.
Являются ли эти измерения времени нормальными для сеанса-> Выполнить вызов? С конца C ++, должен ли я посылать мои замороженные образцы моделей, а не отдельные образцы? С конца Python, есть ли уловки оптимизации, чтобы устранить это узкое место? Есть ли способ одновременно выполнять вызовы Session-Run в C ++?
Информация об окружающей среде
Операционная система: Linux
Установленная версия CUDA и cuDNN: N / A
Какие еще попытки решения вы пробовали?
РЕДАКТИРОВАТЬ
Кажется, что MatMul — узкое место — какие-нибудь предложения, как улучшить это?
Должен ли я использовать скрипт «optimize_for_inference.py» для моего замороженного графика?
Как вы можете измерить время в Python с высокой точностью?
График подачи образца 8х8 и получения результата в Python
Временная шкала для подачи партии 8×8 и получения результата в Python
Для справки, я сделал две вещи, которые значительно увеличили скорость моего приложения:
Пожалуйста, не стесняйтесь комментировать здесь, если у вас есть вопросы по поводу моего ответа.
Других решений пока нет …