Перейти к основному содержимому
Версия: 1.14.2

2. Инструкция по развертыванию

2.1 Подготовка: загрузка образов и создание Kubernetes кластера​

2.1.1 Подготовка​

Скачайте и распакуйте дистрибутив платформы на машину, где планируется выполнить установку. Для этого можно воспользоваться командой:

curl --output platform.zip ссылка на дистрибутив

В curl-запросе необходимо указать ссылку на дистрибутив платформы (zip-файл). Ссылка на папку, в которой размещен дистрибутив и сопроводительная документация в формате pdf, будет указана в электронном письме.

Далее переместите файл лицензии face_sdk.lic (файл прикреплен к электронному письму) в папку setup.

Комплект установки OMNI Platform:

  • ./cli.sh - точка входа для запуска команд.
  • ./cfg - папка с конфигурационными файлами платформы.

Дальнейшие команды выполняются в системной консоли из директории setup.

2.1.2 Загрузка образов​

Загрузите в локальный registry продуктовые образы из архива:

./cli.sh generic load-images

Загрузите в локальный registry инфраструктурные образы из архива:

./cli.sh smc load-images

Загрузка образов может занять около пяти минут.

2.1.3 Конфигурация​

2.1.3.1 Базовая конфигурация​

Ввод переменных окружения​

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

примечание

Значения, указываемые через точку в yaml файлах, отражают вложенность.

Файл конфигурацииПеременные
./cfg/smc.settings.cfg
  • apiserver_advertise_address - адрес для kube-apiserver, обычно используется внутренний IP-адрес машины.
  • external_ip_address - адрес для ingess-controller, необходимо указать внешний IP-адрес машины.
./cfg/license-server.settings.cfg
  • license_key - лицензионный ключ. Как правило, ключ отправляется в сопроводительном письме с дистрибутивом. При отсутствии ключа обратитесь к вашему менеджеру по продажам. Для пробного периода ключ не требуется.
  • license_server_address - адрес лицензионного сервера.
./cfg/platform.secrets.json
  • license-secret - установите лицензионный ключ и адрес лицензионного сервера вместо license_server_address.
  • docker-registry - установите значения, если используется внешний docker-registry.
  • rabbit-secret - имя пользователя и пароль для доступа к брокеру сообщений, используется для внутреннего взаимодействия сервисов OMNI Platform. Задайте произвольное имя, состоящее из латинских букв, без пробелов и пароль, состоящий из латинских букв и цифр, без пробелов.
  • postgres-root-credentials - имя пользователя и пароль для root пользователя в базе данных.
  • platform-service-key - секретный ключ, необходимый для внутреннего взаимодействия сервисов OMNI Platform.
  • platform-user-secret - учетные данные (адрес электронной почты и пароль), которые будут использоваться для доступа в OMNI Platform. При первом развертывании пользователи будут созданы автоматически. Указываемый адрес электронной почты должен состоять из цифр, латинских букв и символов.
  • platform-email-secret - параметры SMTP-сервера. Чтобы отключить отправку писем, оставьте данные поля пустыми.
./cfg/platform.values.yaml
  • backend.query_limit - ограничение количества возвращаемых элементов в API запросах для получения сущностей системы. Увеличение данного лимита не рекомендуется, т.к. время выполнения API запроса может увеличиться в несколько раз. Также, обратите внимание, что увеличение лимитов приведет к ухудшению работы системы.
  • backend.index_update_period - значение в секундах, описывающее через какое время добавленный профиль появится в поисковом индексе. По умолчанию установлено значение 60 секунд. Если требуется увеличить скорость обновления поискового индекса, следует уменьшить значение.
  • backend.enable_profile_autogeneration - Автосоздание профилей для приходящих активностей с OMNI Agent. Необходимо учитывать, что при включении данной опции будет увеличенный расход ресурсов лицензии (размер базы данных). Для включения функции установить значение 1.
  • processing.use_cuda - отвечает за использование видеокарты в сервисе обработки. 0 - отключить, 1 - включить.
  • ingress.rules.gateway.host - доменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes.
  • postgres.enable - выключите, если используете свой сервер базы данных. Примечание: необходимо поменять значения для postgres-root-credentials в файле ./cfg/platform.secrets.json и значения для postgres.host и postgres.port в текущем файле.

Настройка 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

2.1.3.2 Расширенная конфигурация​

Изменение конфигурации элементов системы​

предупреждение

Значения для каждого из параметров указаны по умолчанию. Изменять значения параметров рекомендуется только в случае явной необходимости.

Файл ./cfg/platform.values.yaml:

  • backend.activity_ttl - Время хранения активностей в базе данных. Значение задается в секундах. Например, 2592000 секунд (30 дней)
  • backend.sample_ttl - Время хранения сэмплов в базе данных. Значение задается в секундах. Например, 2592000 секунд (30 дней)

Изменение метода распознавания лиц​

OMNI Platform использует методы распознавания лиц из набора библиотек Face SDK. Под методом имеется в виду версия модели распознавания лиц. По умолчанию в OMNI Platform установлен метод 12v1000. Для более быстрой работы вы можете переключиться на метод 12v100, однако при этом снизится точность распознавания.
Смена метода во время установки платформы​

На этапе заполнения файлов конфигурации откройте файл ./cfg/platform.values.yaml и замените метод в полях generic.recognizer, backend.default_template_version, processing.recognizer_methods. Далее откройте файл ./cfg/image-api.values.yaml и замените метод в полях face-detector-template-extractor.configs.recognizer.name и verify-matcher.configs.recognizer.name.

Смена метода на работающей платформе​
  1. Остановите платформу
./cli.sh platform uninstall
  1. Остановите сервисы image-api
./cli.sh image-api uninstall
  1. Удалите базу данных платформы
./cli.sh platform db-reset
  1. Откройте файл ./cfg/platform.values.yaml и замените метод в полях generic.recognizer, backend.default_template_version, processing.recognizer_methods. Далее откройте файл ./cfg/image-api.values.yaml и замените метод в полях face-detector-template-extractor.configs.recognizer.name и verify-matcher.configs.recognizer.name.

  2. Запустите установку сервисов image-api

./cli.sh image-api install
  1. Запустите платформу
./cli.sh platform install
примечание

На данный момент отсутствует возможность переключить метод для платформы с уже созданной базой данных. Если вы все же решили поменять метод распознавания, в таком случае базу данных нужно будет создать заново.

Настройка порога score​

Параметр score показывает степень схожести лиц от 0 (0%) до 1 (100%). Высокая степень схожести означает, что два биометрических шаблона принадлежат одному и тому же человеку. Пороговое значение по умолчанию - 0.85.

Изменить порог score на OMNI Platform можно через API-запрос updateWorkspaceConfig, где в качестве аргументов указываются два пороговых значения: activityScoreThreshold (Требуемый score для привязки активности к профилю) и notificationScoreThreshold (Требуемый score для создания оповещений для профиля) (См. подробнее в п. 2.11.4 руководства по интеграции).

подсказка

Убедитесь, что пороги score, указанные для OMNI Agent и OMNI Platform совпадают. В противном случае, часть активностей, сформированных из переданных процессов OMNI Agent, не будет привязана к соответствующему профилю, а значит и оповещения для таких активностей приходить не будут.

Например:

  • score, указанный на стороне OMNI Agent = 0.7
  • score, указанный на OMNI Platform = 0.85

В этом случае активности, сформированные из процессов OMNI Agent со значением score в диапазоне [0.7, 0.85), не будут прикреплены к соответствующему профилю, оповещения по ним также не появятся.

Для настройки порога score для OMNI Agent см. раздел 5.5 в руководстве пользователя OMNI Agent.

Настройка liveness​

В OMNI Platform реализовано три liveness-модуля:

  • liveness-anti-spoofing
  • quality-liveness-anti-spoofing
  • face-detector-liveness-estimator

Модули liveness-anti-spoofing и face-detector-liveness-estimator отличаются друг от друга алгоритмами оценки liveness. В модуле quality-liveness-anti-spoofing дополнительно перед расчетом liveness выполняется оценка качества изображения, при этом порог качества (threshold) (значение по умолчанию - 30) позволяет исключить из пайплайна обработки изображения с недостаточным качеством.

Для переключения модуля liveness установите интересующий модуль в файле конфигурации ./cfg/image-api.values.yaml в поле processing.services.face-detector-liveness-estimator.modul.

2.1.4 Установка и настройка кластера​

примечание

Если у вас уже есть развернутый кластер, перейдите к пункту 2.3.1

Запустите команды для создания и настройки кластера.

./cli.sh platform db-create-mountpoint
./cli.sh smc install
./cli.sh platform install-secrets

Эти команды выполняют следующие действия:

  • Создание точки монтирования базы данных
  • Инициализация кластера
  • Установка секретов
примечание

Для использования GPU в кластере установите NVIDIA device plugin командой:

./cli.sh smc nvidia install

2.1.5 Проверка работоспособности кластера​

После инициализации главного узла убедитесь, что все узлы готовы к работе и имеют статус Ready. Для проверки выполните следующую команду:

kubectl get nodes

В результате в терминале будет отображен следующий вывод:

NAME          STATUS      ROLES                   AGE     VERSION
master-node Ready control-plane,master 11d v1.23.8

Для проверки всех элементов кластера запустите следующую команду:

kubectl get all --all-namespaces

2.2 Настройка лицензирования​

2.2.1 Активация пробного периода​

Важно:

  • требуется подключение к сети Интернет;
  • не допускается запуск OMNI Platform на виртуальной машине.

Активация пробного периода происходит при первом запуске OMNI Platform.

2.2.2 Установка сервера лицензий​

Перед установкой откройте файл license-server.settings.cfg и задайте IP адрес машины, на которой будет установлен сервер лицензий, в переменной license_server_address. Запустите команду для установки и запуска сервера лицензий. Если license_server_address не равен адресу хоста машины, где происходит развертывание, он будет установлен через sshpass.

./cli.sh license-server install

Запустите сервер лицензий командой:

./cli.sh license-server start

Проверьте, что сервер лицензий находится в статусе 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 в вашем браузере, на странице должна отобразиться форма входа.

2.2.3 Онлайн активация лицензии​

Перед активацией убедитесь, что в 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!

2.2.4 Офлайн активация лицензии​

Перед активацией убедитесь, что в поле 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.dat на почту support-platform@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!

2.2.5 Проверка статуса лицензии после активации​

Выполните команду для получения статуса лицензии:

./cli.sh license-server status-license

Пример вывода в консоль:

Activation Status: OK
License key: YOUR-LICENSE-KEY
Days Left To Expiration: 100
примечание

Сравните результат вывода команды с данными вашей лицензии. Days Left To Expiration=14 означает, что автоматически активировалась триальная лицензия. В этом случае повторите шаги по активации.

2.3 Развертывание платформы​

2.3.1 Запуск развертывания​

Для распознавания лиц OMNI Platform использует сервисы Image API, которые необходимо установить перед установкой платформы с помощью команды:

./cli.sh image-api install

Запустите установку платформы:

./cli.sh platform install

Для отслеживания процесса развертывания откройте еще одну вкладку терминала и введите следующую команду:

watch 'kubectl get pods'

Наличие у всех pods статуса Running означает, что платформа запущена.

примечание

После запуска проверьте статус лицензии. Если полученные данные не соответствуют действительности, вставьте ключ лицензии в поля license_key (в файле ./cfg/license-server.settings.cfg) и license-secret.key (в файле ./cfg/platform.secrets.json) и выполните все действия из пункта 7.5.

2.3.2 Настройка DNS​

Для обеспечения доступа к платформе DNS сервер вашей сети должен содержать запись о том, что домен доступен по адресу <external_ip_address>. Для целей тестирования можно указать IP-адрес и домен в файле /etc/hosts на Linux или C:\Windows\System32\drivers\etc\hosts на Windows. Для этого добавьте в конец данного файла новую строку вида <external_ip_address> <host>, подставив значения соответствующих переменных и сохраните файл. Обратите внимание, для редактирования файла hosts необходимо обладать правами администратора.

Для использования платформы с той же машины, где выполнено развертывание, можно воспользоваться скриптом. Он добавит необходимую запись в файл /etc/hosts.

./cli.sh generic add-dns - <external_ip_address> <domain>

2.3.3 Описание элементов развернутой системы​

Для получения статуса сервисов платформы выполните команду:

kubectl get pods

В консоль будет выведен список сервисов, их статус, количество перезапусков и время с момента создания сервиса. Пример вывода:

NAME                                                        READY          STATUS         RESTARTS         AGE
image-api-age-estimator-dep-c66c8f575-zb84s 1/1 Running 0 24h
image-api-body-detector-dep-5588d96ddc-lnrrx 1/1 Running 0 24h
image-api-emotion-estimator-dep-b6c947ff-mz7cw 1/1 Running 0 24h
image-api-face-detector-face-fitter-dep- 1/1 Running 0 24h
image-api-face-detector-liveness-estimator-dep- 2/2 Running 0 24h
image-api-face-detector-template-extractor-dep- 1/1 Running 0 24h
image-api-gender-estimator-dep-7948d8cf85-4hk2q 1/1 Running 0 24h
image-api-mask-estimator-dep-5ccfcc8cb9-sjnqz 1/1 Running 0 24h
image-api-quality-assessment-estimator-dep- 1/1 Running 0 24h
image-api-verify-matcher-dep-6b8f5b4d6f-jjqr4 1/1 Running 0 24h
platform-activity-matcher-dep-8697574c9b-xvh5z 2/2 Running 0 24h
platform-agent-sync-dep-899c9ddc8-7qcvj 1/1 Running 0 24h
platform-backend-dep-685675d648-ngcrj 1/1 Running 0 24h
platform-event-service-dep-5fcd66f999-24jjg 1/1 Running 0 24h
platform-gateway-dep-f4cd7db78-h86jz 1/1 Running 0 24h
platform-licensing-dep-84d78745d6-2flk2 1/1 Running 0 24h
platform-matcher-dep-6495447f45-5hdsp 1/1 Running 0 24h
platform-memcached-dep-64d9d7f6f7-b5bpd 1/1 Running 0 24h
platform-postgres-dep-67c5b75b84-fm8wr 1/1 Running 0 23h
platform-processing-dep-7fdf8699b5-682sn 1/1 Running 0 24h
platform-quality-dep-76995ff9c7-kwsz7 1/1 Running 0 24h
platform-rabbit-dep-69cd659f8c-sbnk2 1/1 Running 0 24h
platform-redis-dep-694df659f-9vhrh 1/1 Running 0 24h

Ниже приведено краткое описание сервисов:

  • platform-activity-matcher-dep - сервис используется для поиска людей по активностям;
  • image-api-age-estimator-dep - сервис используется для оценки возраста человека по изображению лица;
  • platform-agent-sync-dep - сервис отвечает за синхронизацию данных о профилях с OMNI Agent;
  • platform-backend-dep - основной контейнер платформы, отвечает за работу большей части API;
  • image-api-body-detector-dep - сервис предназначен для детекции силуэтов на изображении;
  • platform-rabbit-dep - сервис RabbitMQ, используется для работы асинхронной очереди задач;
  • platform-cache-dep - сервис Memcached, используется для кэширования данных;
  • platform-postgres-dep - экземпляр СУБД PostgreSQL, хранит всю информацию платформы;
  • image-api-emotion-estimator-dep - сервис используется для оценки эмоций человека по изображению лица;
  • image-api-face-detector-face-fitter-dep - сервис используется для детекции лиц и определения антропометрических точек лица и углов поворота головы;
  • image-api-face-detector-liveness-estimator-dep - сервис используется для детекции лиц и оценки принадлежности лица на изображении реальному человеку;
  • image-api-face-detector-template-extractor-dep - сервис предназначен для детекции лиц и извлечения биометрического шаблона лица;
  • platform-gateway-dep - cервис nginx, отвечает за доступ к платформе и за работу веб-интерфейса платформы;
  • image-api-gender-estimator-dep - сервис используется для оценки пола человека по изображению лица;
  • platform-licensing-dep - сервис, ограничивающий работу платформы согласно параметрам лицензии;
  • image-api-mask-estimator-dep - сервис позволяет определить наличие/отсутствие медицинской маски на лице человека;
  • platform-matcher-dep - сервис используется для поиска людей по профилям;
  • platform-processing-dep - сервис аккумулирует результаты работы сервисов-обработчиков (age-estimator-dep, emotion-estimator-dep, gender-estimator-dep,face-detector-face-fitter-dep, mask-estimator-dep
  • image-api-quality-assessment-estimator-dep - сервис предназначен для оценки качества изображения лица;
  • platform-quality-dep - сервис отвечает за расчет качества изображения (является устаревшим, используется для обратной совместимости);
  • platform-redis-dep - сервис Redis, используется для работы WebSockets;
  • image-api-verify-matcher-dep - сервис отвечает за сравнение двух лиц с изображений.
  • platform-event-service-dep - сервис используется для обработки событий, приходящих с OMNI Agent.

2.3.4 Масштабирование​

В случае, когда нагрузка возрастает, для стабилизации работы платформы предусмотрено масштабирование следующих сервисов в ручном режиме:

  • platform-processing-dep
  • image-api-face-detector-liveness-estimator-dep
  • image-api-age-estimator
  • image-api-gender-estimator
  • image-api-mask-estimator
  • image-api-emotion-estimator
  • image-api-face-detector-template-extractor-dep

Для масштабирования сервиса необходимо выполнить следующую команду:

kubectl scale deployment <SERVICE_NAME> --replicas <COUNT>

где <SERVICE_NAME> - наименование сервиса (например, gateway-dep), а <COUNT> - количество экземпляров сервиса.

примечание

При использовании GPU ускорения сервис platform-processing-dep поддерживает только один экземпляр, а значит для его масштабирования необходимо иметь N доступных видеоускорителей в кластере. При отсутствии нескольких GPU, можно увеличить утилизацию, изменив параметр processing.workers в файле ./cfg/platform.values.yaml.

Для поддержания нагрузки в A запросов/сек, направленной на обработку изображений, на сервере с физическим количеством ядер ЦП равным B следует установить значение реплик каждого из указанных сервисов по формуле min(A, B).

Для сохранения параметров масштабирования откройте файлы ./cfg/platform.values.yaml и ./cfg/image-api.values.yaml, найдите поле replicas в блоке сервиса и укажите новые значения реплик.

При следующих установках платформы и image-api сервисы будут автоматически масштабироваться до указанных значений.

подсказка

При увеличении запросов поиска по изображению увеличьте число реплик сервиса image-api-face-detector-template-extractor-dep. Также можно увеличить количество потоков, которые используются для вычисления биометрического шаблона (Более подробно см. в пункте 7.6).

При увеличении запросов на детекцию, создание профилей и создание сэмплов увеличьте число реплик сервисов:

  • platform-processing-dep
  • image-api-face-detector-liveness-estimator-dep
  • image-api-age-estimator
  • image-api-gender-estimator
  • image-api-mask-estimator
  • image-api-emotion-estimator