Режим пакетной обработки в Caffe — без увеличения производительности

Следуя по эта тема Я переопределил свой код обработки изображений для одновременной отправки 10 изображений (то есть теперь у меня свойство num входного двоичного объекта установлено на 100 вместо 10).

Однако время, необходимое для обработки этой партии, в 10 раз больше, чем изначально. Что означает, что я не получил никакого увеличения производительности.

Это разумно или я сделал что-то не так?

Я запускаю Caffe в режиме процессора. К сожалению, режим GPU для меня не подходит.

2

Решение

Обновление: теперь Caffe изначально поддерживает параллельную обработку нескольких изображений при использовании нескольких графических процессоров. Хотя это кажется относительно простым для реализации на основе текущей реализации параллелизма графического процессора, в настоящее время нет аналогичной поддержки параллельной обработки на нескольких процессорах.

Учитывая, что основной проблемой при реализации параллелизма является синхронизация, необходимая вам во время обучения. Если вы просто хотите обрабатывать изображения параллельно (в отличие от обучения модели), то вы можете загрузить несколько копий одной и той же сети в память (будь то через python). с многопроцессорной обработкой или c ++ с многопоточностью) и обрабатывать каждое изображение в другой сети. Это было бы просто и довольно эффективно, особенно если вы загружаете сети один раз, а затем просто обрабатываете большое количество изображений. Тем не менее, графические процессоры намного быстрее 🙂


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

IIRC есть несколько попыток заставить Caffe обрабатывать образы параллельно, но большинство фокусируется на реализации GPU (CUDNN, CUDA Streams и т. Д.), С небольшими попытками добавить параллелизм к коду CPU (многопоточный режим OpenBLAS или просто запустить на нескольких потоках). ). Из тех, что я считаю, только опция CUDNN в настоящее время является частью стабильной версии Caffe, но, очевидно, требует GPU. Вы можете попытаться просмотреть один из запросов на выборку по этому вопросу на странице github в Caffe и посмотреть, работает ли он для вас, но учтите, что это может вызвать проблему совместимости с вашей текущей версией.

Это одна из таких версий, которую я использовал в прошлом, хотя она больше не поддерживается: https://github.com/BVLC/caffe/pull/439

Я также заметил в последнем комментарии вышеупомянутой проблемы, что есть некоторая скорость до кода ЦП в этом запросе на извлечение, хотя я никогда сам не пробовал: https://github.com/BVLC/caffe/pull/2610

4

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


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