Установка
Подготовка окружения
Скачивание дистрибутива
Скачайте и распакуйте дистрибутив BAF на машину, где планируется выполнить установку. Для этого можно воспользоваться командой:
$ curl --output baf.zip ссылка на дистрибутив
В curl-запросе укажите ссылку на дистрибутив BAF (zip-файл). Ссылка на папку, в которой размещен дистрибутив и сопроводительная документация в формате pdf, будет указана в электронном письме.
Далее переместите файл лицензии face_sdk.lic (файл прикреплен к электронному письму) в папку setup.
Комплект установки BAF:
- ./cli.sh - точка входа для запуска команд.
- ./cfg - папка с файлами конфигурации.
Дальнейшие команды выполняются в системной консоли из директории setup.
Установка ПО
Для установки Docker, Kubernetes и Helm в Ubuntu можно воспользоваться скриптом, поставляемым вместе с дистрибутивом (требуется подключение к Интернету).
$ ./cli.sh package install
Загрузка образов
Загрузите в локальный registry продуктовые образы из архива:
$ ./cli.sh generic load-images
Загрузите в локальный registry инфраструктурные образы из архива:
$ ./cli.sh smc load-images
Конфигурация BAF
Базовая конфигурация
Ввод переменных окружения
Откройте следующие файлы конфигурации, используя текстовый редактор, установите значения переменных и сохраните изменения в файлах.
Файл конфигурации | Переменные |
./cfg/smc.settings.cfg |
|
./cfg/license-server.settings.cfg |
|
./cfg/platform.secrets.json |
|
./cfg/platform.values.yaml |
|
./cfg/baf.values.yaml |
|
./cfg/baf.secrets.json |
|
./cfg/lrs.secrets.json |
|
./cfg/stunner.secrets.json |
|
Настройка Docker для использования GPU (опционально)
Конфигурация Docker
Для установки nvidia-container-runtime в качестве низкоуровневой среды выполнения по умолчанию, добавьте следующие строки в файл конфигурации, который находится по адресу /etc/docker/daemon.json:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
Применение конфигурации
Перезапустите docker-service, выполнив следующую команду:
$ sudo systemctl restart docker
Проверьте, что docker-service успешно работает:
$ sudo systemctl status docker
Расширенная конфигурация
Настройка GPU
Для включения GPU в BAF необходимо отредактировать файл ./cfg/image-api.values.yaml. Для этого пропишите в переменные processing.services.face-detector-template-extractor.configs.capturer.params.use_cuda
и processing.services.face-detector-template-extractor.configs.recognizer.params.use_cuda
значение 1:
Пропишите значение 1 в переменную processing.services.face-detector-template-extractor.resources.limits.gpu
:
Установка и настройка кластера
Если у вас уже есть развернутый кластер, перейдите к пункту "Запуск развертывания"
Запустите команды для создания и настройки кластера:
$ ./cli.sh smc install
$ ./cli.sh platform db-create-mountpoint
$ ./cli.sh platform install-secrets
Эти команды выполняют следующие действия:
- Создание точки монтирования базы данных
- Инициализация кластера
- Установка секретов
Если вы используете GPU, то дополнительно запустите скрипт по установке nvidia-plugin
в кластер:
$ ./cli.sh smc nvidia install
Проверка работоспособности кластера
После инициализации главного узла убедитесь, что все узлы готовы к работе и имеют статус Ready. Для проверки выполните следующую команду:
$ kubectl get nodes
В результате в терминале будет отображен следующий вывод:
NAME STATUS ROLES AGE VERSION
master-node Ready control-plane,master 11d v1.23.8
Для проверки всех элементов кластера запустите следующую команду:
$ kubectl get all --all-namespaces
Настройка лицензирования
Пользователю доступны 3 варианта активации лицензии: активация пробного периода, онлайн и офлайн активация лицензии.
Установка и запуск сервера лицензий
Перед установкой откройте файл license-server.settings.cfg и задайте IP адрес машины, на которой будет установлен сервер лицензий, в переменной license_server_address
.
Запустите команду для установки и запуска сервера лицензий. Если license_server_address
не аналогичен адресу хоста машины, где происходит развертывание, он будет установлен через sshpass:
$ ./cli.sh license-server install
Проверьте, что сервер лицензий находится в статусе Running, выполнив следующую команду:
$ ./cli.sh license-server status
Пример вывода в консоль:
floatingserver.service - Floating License Server
Loaded: loaded (/etc/systemd/system/floatingserver.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-12-20 12:25:54 +05; 1min 48s ago
Убедитесь, что сервер лицензий доступен. Для этого перейдите по адресу http://<license_server_address>:8090
в вашем браузере, на странице должна отобразиться форма входа.
Активация пробного периода
Важно:
- требуется подключение к сети Интернет;
- не допускается запуск на виртуальной машине.
Активация пробного периода происходит при первом запуске BAF.
Онлайн активация лицензии
Перед активацией убедитесь, что в key
(файл ./cfg/license-server.settings.cfg) записан лицензионный ключ.
Запустите команду активации лицензии:
$ ./cli.sh license-server activate
Пример вывода в консоль при успешной активации лицензии:
[2022-12-20 12:25:53+05:00] INF Activating license key...
[2022-12-20 12:25:54+05:00] INF License activated successfully!
Офлайн активация лицензии
Перед активацией убедитесь, что в поле license_key
(в файле ./cfg/license-server.settings.cfg) записан лицензионный ключ.
Для офлайн активации установите “1” в поле enable_offline_activation
в файле license-server.settings.cfg.
Запустите команду для генерации офлайн запроса на лицензию:
$ ./cli.sh license-server generate-offline
В результате выполнения команды в директории setup должен появиться файл request-offline.dat.
Отправьте сгенерированный файл запроса request-offline.license на почту baf-request@3divi.com. В ответном письме будет отправлен файл лицензии.
Поместите полученный лицензионный файл в папку setup.
Откройте файл конфигурации license-server.settings.cfg и заполните значение переменной license_offline_activation_file
именем файла лицензии и его расширением, если присутствует, через точку.
Запустите команду для активации полученной лицензии:
$ ./cli.sh license-server activate
Пример вывода в консоль при успешной активации лицензии:
[2022-09-08 01:30:36+05:00] INF Offline activating license key...
[2022-09-08 01:30:36+05:00] INF License activated successfully!
Активация подсистемы распознавания документов (DVS)
Если вы не планируете использовать BAF для работы с документами, пропустите этот пункт.
Для активации подсистемы переместите файл лицензии License.json (файл прикреплен к электронному письму) в папку setup/modules/dvs/.
Развертывание BAF
Запуск развертывания
Установка подсистемы распознавания лиц (OMNI Platform)
Запустите установку первого модуля OMNI Platform:
$ ./cli.sh image-api install
Запустите установку второго модуля OMNI Platform:
$ ./cli.sh platform install
Чтобы продолжить установку, откройте файл /etc/hosts и добавьте в конец файла следующие строки:
<external_ip_address> : <platform_domain>
<external_ip_address> : <baf_domain>
Установка подсистемы для работы с документами (DVS) (опционально)
Если вы НЕ планируете работать с документами, пропустите этот шаг.
Запустите установку DVS:
$ ./cli.sh dvs install
Инициализируйте базу данных в DVS с помощью команды (перед использованием этой команды рекомендуется подождать не менее 10 секунд):
$ ./cli.sh dvs init-db
При успешной инициализации появится следующее сообщение:
INSERT 0 2
INSERT 0 2
Далее необходимо получить токены из развернутой подсистемы:
$ ./cli.sh dvs get-token
В результате вы получите два токена, которые необходимо прописать в файл конфигурации ./cfg/baf.secrets.json в раздел dvs-token. Также в файле ./cfg/baf.values.yaml укажите baf.dvs.url в виде http://<external_ip_address>:5100
.
(BETA) Установка подсистемы для расчёта liveness reflection (LRS) (опционально)
Если вы планируете работать с документами, пропустите этот шаг.
В сценарии «Регистрация по селфи» LRS предоставляет возможность сохранять попытки видео (бета-версия) и обнаруживать атаку с внедрением видеопотока (не реализовано в этой версии).
Создайте директорию для хранения данных объектного хранилища с помощью команды:
$ ./cli.sh lrs minio-create-mountpoint
Запустите команду для генерации токенов LRS:
$ ./cli.sh lrs generate-token
Пример вывода в консоль:
sha256:2473ba0ebf5ef66cd68b252bba7b46ae9f7cc3657b5acd3979beb7fbc5d8807f
Fernet key: ......
Access token: ......
В результате вы получите два токена, которые необходимо прописать в файл конфигурации ./cfg/lrs.secrets.json в раздел lrs-tokens.
Запустите команду для установки секретов LRS:
$ ./cli.sh lrs install-secrets
Запустите команду для установки LRS:
$ ./cli.sh lrs install
Установка подсистемы stunner для проксирования запросов через TURN сервер на LRS (опционально)
Подсистема stunner необходима для успешного установления соединения между браузерами клиентов и сервером LRS для записи видео с последующим расчётом живости. Пропустите этот шаг, если планируете работать с документами.
Запустите команду для установки секретов stunner:
$ ./cli.sh stunner install-secrets
Запустите команду для установки stunner:
$ ./cli.sh stunner install
Запустите команду для получения портов по которым доступен TURN сервер извне:
$ ./cli.sh stunner get-ports
Пример вывода команды:
tcp-gateway: 31021
udp-gateway: 30796
Для проверки работоспособности stunner-а воспользуйтесь следующей командой:
kubectl get pods,svc -n stunner
Если все поды имеют статус Running, и запущенно 3 сервиса, значит stunner успешно работает.
Установка BAF
Получите токен от платформы OMNI:
$ ./cli.sh platform get-token - http://<platform_domain> <platform_user_email>
В результате вы получите токен, который необходимо прописать в файл конфигурации ./cfg/baf.secrets.json в раздел platform-token.
Далее инициализируйте секреты BAF для кластера:
$ ./cli.sh baf install-secrets
Запустите установку BAF:
$ ./cli.sh baf install
Для отслеживания процесса развертывания откройте ещё одну вкладку терминала и введите следующую команду:
$ watch 'kubectl get pods'
Наличие у всех pods статуса Running означает, что BAF запущен.
Настройка DNS
Для доступа к BAF DNS сервер вашей сети должен содержать запись о том, что домен доступен по адресу <external_ip_address>
.
Для тестирования можно указать IP-адрес и домен в файле /etc/hosts
на Linux или C:\Windows\System32\drivers\etc\hosts
на Windows. Для этого добавьте в конец данного файла новую строку вида <external_ip_address> <host>
, подставив значения соответствующих переменных, и сохраните файл.
Обратите внимание, для редактирования файла hosts необходимо обладать правами администратора.
Масштабирование
В случае, когда нагрузка возрастает, для стабилизации работы BAF предусмотрено масштабирование следующих сервисов в ручном режиме:
- platform-processing-dep - сервис аккумулирует результаты работы сервисов-обработчиков (age-estimator-dep, emotion-estimator-dep, gender-estimator-dep,face-detector-face-fitter-dep, mask-estimator-dep)
- image-api-face-detector-liveness-estimator-dep - сервис используется для детекции лиц и оценки принадлежности лица на изображении реальному человеку
- image-api-age-estimator - сервис используется для оценки возраста человека по изображению лица
- image-api-gender-estimator - сервис используется для оценки пола человека по изображению лица
- image-api-mask-estimator - cервис позволяет определить наличие/отсутствие медицинской маски на лице человека
- image-api-emotion-estimator - сервис используется для оценки эмоций человека по изображению лица
Для масштабирования сервиса необходимо выполнить следующую команду:
$ kubectl scale deployment <SERVICE_NAME> --replicas <COUNT>
где <SERVICE_NAME>
- наименование сервиса (например, gateway-dep), а <COUNT>
- количество экземпляров сервиса.
При использовании GPU ускорения сервис image-api-face-detector-template-extractor-dep поддерживает только один экземпляр, а значит для его масштабирования необходимо иметь N доступных видеоускорителей в кластере. При отсутствии нескольких GPU, можно увеличить утилизацию, изменив параметр processing.services.face-detector-template-extractor.workers
в файле ./cfg/image-api.values.yaml.
Для поддержания нагрузки в A запросов/сек, направленной на обработку изображений, на сервере с физическим количеством ядер ЦП равным B следует установить значение реплик каждого из указанных сервисов по формуле min(A, B).
Для сохранения параметров масштабирования откройте файлы ./cfg/platform.values.yaml и ./cfg/image-api.values.yaml, найдите поле replicas
в блоке сервиса и укажите новые значения реплик.
При следующих установках сервисы будут автоматически масштабироваться до указанных значений.