Использование GPU
Распознавание лиц требует использования значительных вычислительных ресурсов, поэтому мы добавили возможность ускорения модулей Face SDK с использованием GPU для выполнения алгоритмов глубокого обучения.
На данный момент GPU может быть использован для ускорения на следующих платформах:
- Windows x86 64-bit
- Linux x86 64-bit
- Android
- NVIDIA Jetson (JetPack 4.3/4.4)
В данном разделе вы узнаете:
- Для каких модулей Face SDK доступно ускорение.
- Как включить ускорение.
- Результаты тестирования работы модулей с использованием CPU и GPU.
- Возможные ошибки при использовании GPU и пути решения.
Desktop
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK (доступно использование только одного GPU):
- Методы (11v1000, 10v30, 10v100, 10v1000, 9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Распознавание лиц).
- Детекторы (BLF, REFA, ULD) (см. Детекция лиц).
- Большая часть Processing Block API.
Для запуска моделей на GPU отредактируйте файл конфигурации объекта Recognizer, изменив значение поля use_cuda
с 0
на 1
.
Windows/Linux
Общие требования:
Системные требования:
Windows
- Nvidia GPU Driver >= 441.22
- Microsoft Visual C++ Redistributable for Visual Studio 2019
Linux
- Nvidia GPU Driver >= 440.33
Требования к оборудованию:
- Графический процессор (GPU) с поддержкой CUDA (NVIDIA GTX 1050 Ti и выше)
Для CUDA 11
Системные требования:
Windows:
Linux:
Требования к оборудованию:
- Графический процессор (GPU) с поддержкой CUDA (от NVIDIA GTX 1050 Ti до RTX 3090 включительно)
Для CUDA 10
Системные требования:
Windows:
Linux:
Требования к оборудованию:
- Графический процессор (GPU) с поддержкой CUDA (NVIDIA GTX 1050 Ti и выше, но ниже 30xx серий)
Другие:
- Отредактируйте файл конфигурации объекта, добавив поле
use_legacy
со значением1
. - Для API процессинг-блоков добавте ключ
"use_legacy"
со значениемtrue
для Context-контейнера блока обработчика
- Отредактируйте файл конфигурации объекта, добавив поле
Также реализована возможность применять предсобранные docker-контейнеры с поддержкой CUDA, например, nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 (некоторые виды лицензий при этом могут быть недоступны).
Ускорение происходит за счет одного из доступных GPU (по умолчанию – на GPU с индексом 0
). Индекс GPU можно изменить следующим образом:
- Через параметр
gpu_index
в файле конфигурации объекта Recognizer. - Через переменную окружения
CUDA_VISIBLE_DEVICES
(Более подробно о переменных окружения CUDA смотрите по ссылке).
NVIDIA Jetson
- Системные требования:
- JetPack 4.3 или 4.4*
* Тестирование производилось на модулях Jetson TX2 и Jetson NX.
Компонент jetson_jetpack_4.3_4.4
можно выбрать в инсталлере Face SDK. По умолчанию в нем используется сборка для jetpack 4.4. Если вам требуется сборка для jetpack 4.3, переместите все файлы из директории lib/jetpack-4.3 в директорию lib.
Результаты тестирования
В таблице ниже представлены замеры скорости построения шаблона с использованием CPU и GPU:
Method | GPU | CPU |
12v1000 | 47 мс | 442 мс |
9v300 | 10 мс | 292 мс |
12v100 | 8 мс | 49 мс |
12v50 | 6 мс | 21 мс |
12v30 | 5 мс | 12 мс |
Примечание. при проведении замеров скорости использовалась видеокарта NVIDIA GTX 1070 и процессор Intel Core i5-9400 4.0GHz.
Устранение ошибок
Ошибка | Решение |
Assertion failed (Cannot open shared object file libtensorflow.so.2) | Убедитесь, что файл библиотеки libtensorflow.so.2 находится в одной директории с используемой библиотекой libfacerec.so |
Assertion failed (Cannot open shared object file tensorflow.dll) | Убедитесь, что файл библиотеки tensorflow.dll находится в одной директории с используемой библиотекой facerec.dll |
Медленная инициализация | Увеличьте размер JIT кэша: export CUDA_CACHE_MAXSIZE=2147483647 (подробнее - JIT Caching ) |
Android
На данный момент ускорение с использованием GPU на Android доступно для следующих модулей Face SDK:
- Методы (9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. раздел Распознавание лиц)
- Детектор blf (см. раздел Детекция лиц)
Использование GPU можно включить/отключить через флаг use_mobile_gpu
в файлах конфигурации объектов Capturer
, Recognizer
,VideoWorker
(в файле конфигурации объекта VideoWorker
использование GPU активируется для детекторов). По умолчанию поддержка мобильных GPU включена (значение 1
). Чтобы отключить использование GPU, измените значение флага use_mobile_gpu
на 0
.
Результаты тестирования
В таблице ниже представлены замеры скорости построения шаблона с использованием CPU и GPU:
Метод | CPU | GPU |
9v1000 | 3660 мс | 610 мс |
9v300 | 1960 мс | 280 мс |
9v30 | 170 мс | 70 мс |
Примечание. при проведении замеров скорости использовалось устройство Google Pixel 3.