Использование GPU
Поскольку распознавание лиц требует использования значительных вычислительных ресурсов, была добавлена возможность ускорения модулей Face SDK с использованием GPU для выполнения алгоритмов глубокого обучения.
На данный момент GPU может быть использован для ускорения на следующих платформах:
- Windows x86 64-bit
- Linux x86 64-bit
- Android
- Jetson (JetPack 4.3/4.4)
В данном разделе представлена информация о том, для каких модулей Face SDK доступно ускорение, каким образом включить данную функцию, а также информация о скорости работы модулей с использованием CPU и GPU, возможные ошибки при использовании GPU и пути решения.
Desktop [beta]
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK (доступно использование только одного GPU):
- распознаватели (recognizers) (9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Идентификация лиц)
- детекторы (BLF, REFA, ULD) (см. Детекция лиц)
Для запуска моделей на GPU требуется отредактировать конфигурационный файл поддерживаемого распознавателя, изменив поле use_cuda с 0 на 1. 
Windows/Linux
- Системные требования: - Nvidia GPU Driver >= 410.48
- CUDA Toolkit 10.1
- cuDNN 7
- (Для Windows) Microsoft Visual C++ Redistributable for Visual Studio 2019
 
- Требования к оборудованию: - графический процессор (GPU) с поддержкой CUDA (NVIDIA GTX 1050 Ti и выше)
 
Также есть возможность применять предсобранные docker-контейнеры с поддержкой CUDA, например, nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 (некоторые виды лицензий при этом могут быть недоступны).
Ускорение происходит за счет одного из доступных GPU (по умолчанию – на GPU с индексом 0). Индекс GPU можно изменить следующим образом:  
- через параметр конфигурационного файла gpu_index
- через переменную окружения CUDA_VISIBLE_DEVICES(см. более подробную информацию о переменных окружения CUDA)
Jetson
- Системные требования:- JetPack 4.3 или 4.4*
 
* Тестирование производилось на модулях Jetson TX2 и Jetson NX.
Архив с требуемыми библиотеками – jetson_jetpack_4.3_4.4.tar.xz. По умолчанию в нем используется сборка для jetpack 4.4. Если вам требуется сборка для jetpack 4.3, переместите все файлы из директории lib/jetpack-4.3 в директорию lib.
Временные характеристики
В таблице ниже представлены замеры скорости построения шаблона с использованием CPU и GPU:
| Метод | GPU | CPU | 
| 9v1000 | 13 мс | 730 мс | 
| 9v300 | 7 мс | 260 мс | 
| 9v30 | 3 мс | 30 мс | 
Временные характеристики детекции лиц с использованием GPU см. в разделе Детекция лиц.
Примечание: при проведении замеров скорости использовалась видеокарта NVIDIA GeForce GTX 1080 Ti и процессор Intel Core i7.
Устранение неполадок
| Ошибка | Решение | 
| `libtensorflow.so.2: cannot open shared object file: No such file or directory` | Требуется задать переменную окружения `LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib`, где `path/to/lib` – путь к директории *lib* из дистрибутива Face SDK, либо переместить этот файл по пути `../lib` относительно запускаемого приложения (т.к. в `libfacerec.so` задан `run-time search path`). | 
| Медленная инициализация | Увеличьте размер JIT кэша: `export CUDA_CACHE_MAXSIZE=2147483647` (подробнее - [JIT Caching](https://developer.nvidia.com/blog/cuda-pro-tip-understand-fat-binaries-jit-caching/)) | 
Android [beta]
На данный момент ускорение с использованием GPU доступно для следующих модулей Face SDK:
- распознаватели (recognizers) (9v30, 9v300, 9v1000, 9v30mask, 9v300mask, 9v1000mask) (см. Идентификация лиц)
- детектор blf (см. Детекция лиц)
Использование GPU можно включить/отключить через флаг use_mobile_gpu в конфигурационных файлах объектов Capturer, Recognizer, VideoWorker (в конфигурационном файле объекта VideoWorker использование GPU активируется для детекторов). По умолчанию поддержка мобильных GPU включена (значение 1). Чтобы отключить использование GPU, измените значение флага use_mobile_gpu на 0.
Временные характеристики
В таблице ниже представлены замеры скорости модулей Face SDK с использованием CPU и GPU:
| Метод | CPU | GPU | 
| 9v1000 | 3660 мс | 610 мс | 
| 9v300 | 1960 мс | 280 мс | 
| 9v30 | 170 мс | 70 мс | 
Примечание: при проведении замеров скорости использовалось устройство Google Pixel 3.