Я кодировал обе версии сценариев прямой классификации Caffe для Python и C ++, чтобы проверить производительность вывода Caffe. Модель уже обучена. И результаты довольно схожи, утилиты GPU недостаточно полны.
Мои настройки:
1. Карта: Titan XP, 12 ГБ
2. Модель: InceptionV3
3. Размер изображения: 3 * 299 * 299
Когда batch_size установлен в 40, использование GRAM может достигать 10 ГБ, но использование утилит графического процессора может достигать 77% ~ 79%, как для Python, так и для C ++. Таким образом, производительность составляет около 258 кадров / с.
В моих сценариях я загрузил изображение, предварительно обработал его, загрузил в слой ввода и затем повторил операцию net_.forward (). Насколько я понимаю, это не вызовет операций копирования копии Mem, поэтому в идеале следует максимально использовать утилиты GPU. Но я могу достичь только не более 80%.
в Учебник по классификации C ++, Я нашел ниже фразу:
Используйте несколько классификационных потоков, чтобы гарантировать, что графический процессор всегда полностью используется и не ожидает блокировки ЦП ввода-вывода.
Поэтому я попытался использовать многопоточный скомпилированный OpenBLAS, и в бэкэнде ЦП фактически больше ЦП задействовано для пересылки, но не использовалось для бэкэнда графического процессора. Под бэкэндом графического процессора загрузка ЦП будет фиксированной примерно до 100%.
Затем я даже попытался уменьшить batch_size до 20 и запустить два процесса классификации в двух терминалах. В результате использование GRAM увеличивается до 11 ГБ, но использование графического процессора уменьшается до 64% ~ 66%. Наконец, производительность снижается примерно до 200 кадров / с.
Кто-нибудь сталкивался с этой проблемой? Я действительно смущен.
Любое мнение приветствуется.
Спасибо,
Как я уже заметил, использование GPU уменьшается с
1) низкий экспресс-режим PCI resnet-152 (x16) -90%> resnet-152 (x8) -80%> resnet-152 (x4) -70%
2) большая модель — VGG-100% (х16); ResNet-50 (x16) -95 ~ 100%; ResNet-152 (x16) — 90%
Кроме того, если я отключаю cuDNN, Util GPU всегда на 100%.
Поэтому я думаю, что есть некоторая проблема, связанная с cuDNN, но я не знаю больше о проблеме.
NVCaffe несколько лучше, и MXNet может использовать GPU 100% (resnet-152; x4).
Других решений пока нет …