Руководство по установке

Глоссарий

Термин Значение термина
Биометрический образец Изображения, содержащие лицо или тело и соответствующие стандарту VisionLabs. Используется при работе с LUNA PLATFORM.
Биометрический шаблон Набор уникальных свойств, получаемых в LUNA PLATFORM из биометрического образца.
Детекция Сущность FaceStream, содержащая координаты лица или тела и оценочное значение объекта, по которому определяется лучший кадр.
Лучший кадр Лучший кадр выбирается из всех кадров одного трека. Основными условиями выбора лучшего кадра являются приемлемое качество изображения и наличие на нём лица или тела с наилучшим ракурсом. Условия выбора лучшего кадра задаются в настройках FaceStream.
Портрет Изображение лица или тела, трансформированное под определенный формат. Портрет имеет два типа - “warp” (изображение трансформируется в формат биометрического образца), “gost” (из исходного кадра вырезается детекция с учетом отступов).
Ракурс Степень поворота головы (в градусах) по каждой из трех осей вращения (наклон вверх/вниз относительно горизонтальной оси; наклон влево/вправо относительно вертикальной оси; поворот относительно вертикальной оси).
Событие Сущность LUNA PLATFORM, которая содержит информацию (город, пользовательские данные, номер трека и т.д.) об одном лице и/или теле. Данная информация передается в LUNA PLATFORM приложением FaceStream. Полный перечень передаваемой информации см. в документации OpenAPI LUNA PLATFORM.
Трек Информация о положении объекта (лица) одного человека на последовательности кадров. Если объект покидает зону кадра, то трек прерывается не сразу. Некоторое время он ожидает возвращения объекта в кадр. Если объект вернулся, то трек продолжается.
Трекинг Функция отслеживания объекта (лица) на последовательности кадров.


Введение

Данный документ описывает:

Перед запуском необходимо ознакомиться с общей информацией и последовательностью действий.

Лицензирование FaceStream регулируется особенным параметром лицензионного ключа LUNA PLATFORM 5, определяющим количество потоков для работы LUNA Streams. Таким образом, для работы FaceStream необходима лицензия LUNA PLATFORM 5.

Если FaceStream запускается без заранее запущенных сервисов LP, то необходимо запросить новую лицензию LUNA PLATFORM 5 с параметром, определяющим количество потоков для работы LUNA Streams, и пройти полный процесс активации.

Если FaceStream запускается с заранее запущенными сервисами LP то нужно убедиться, что лицензионный ключ содержит параметр, определяющий количество потоков для работы LUNA Streams. Если LUNA Licenses запущена на другом сервере, то также нужно будет указать адрес этого сервера в настройках LUNA Streams в сервисе LUNA Configurator.

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

У каждого сервиса LUNA PLATFORM и FaceStream есть собственный образ. Образы Docker являются основой для контейнеров. Каждый контейнер включает в себя библиотеки, необходимые для функционирования сервисов, и параметры, используемых во время работы контейнера.

Docker Compose используется для автоматического развертывания контейнеров. Скрипт Docker Compose из данного дистрибутива используется для развертывания LUNA Streams и FaceStream на одном сервере.

Считается, что запуск выполняется на сервере с операционной системой CentOS, где FaceStream не был установлен.

Для запуска FaceStream необходимы образы Docker контейнеров LP и FaceStream. Для загрузки образов Docker на сервер требуется интернет-соединение или контейнеры должны быть заранее загружены на любом другом устройстве и перенесены на сервер. Требуется вручную задать логин и пароль для скачивания образов Docker.

Администратор должен вручную настроить Firewall и SELinux на сервере. В данном документе не описывается их настройка.

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

https://docs.docker.com

В данном документе приведены примеры разворачивания FaceStream в минимальной рабочей конфигурации для использования в демонстрационных целях. Данная конфигурация не является достаточной для реальной эксплуатации системы в продуктивном контуре.

Все описываемые команды необходимо исполнять в оболочке Bash (когда команды запускаются напрямую на сервере) или Putty (в случае удаленного подключения к серверу). Описываемые команды тестировались только с помощью этих средств. Использование других оболочек или эмуляторов может привести к ошибкам при выполнении команд.

Подробную информацию по общей работе и настройках приложения см. в руководстве администратора FaceStream.


Аппаратные требования

Минимальные аппаратные требования

Дальнейшие минимальные требования приведены для использования одного экземпляра FaceStream.

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

На аппаратные требования влияют несколько факторов:

Следует подбирать аппаратное обеспечение на основе вышеперечисленных факторов.

FaceStream также может работать в режиме ускорения вычислений за счет:

Использования ресурсов видеокарты

Вычисления с использованием видеокарты поддерживаются только для детектора FaceDetV3. См. параметр “defaultDetectorType” в настройках FaceEngine (“faceengine.conf”).

Требуется минимум 6Гб оперативной или выделенной видеопамяти. Рекомендуется 8 Гб VRAM или более.

Поддерживаются архитектуры Pascal, Volta, Turing. Требуются Compute Capability 6.1 или выше и CUDA версии 11.4.

Рекомендуемый драйвер NVIDIA - 470.103.01.

В данный момент для одного экземпляра FaceStream поддерживается только одна видеокарта.

Использования AVX2 инструкций

Требуется CPU с поддержкой AVX2. Система автоматически определяет наличие инструкций и запускается в оптимальном режиме.


Программные требования

Запуск контейнеров FaceStream и LUNA Streams был протестирован на:

В контейнере FaceStream используется для запуска следующая ОС:

Для запуска контейнеров должен быть установлен Docker. Для загрузки настроек в сервис LUNA Configurator требуется наличие Python версии 2.x или 3.x.


Общая информация

Рекомендуется внимательно изучить данный документ. Документ даёт общее представление о том, из каких компонентов состоит FaceStream и какие задачи они решают.

Развертывание следует выполнять в порядке, указанном в данном документе.


Все процедуры в данном руководстве описаны для CentOS. Если требуется развернуть Docker контейнеры на любой другой ОС, следует обратиться к документации по Docker Compose:

https://docs.docker.com/compose/install/


Для работы FaceStream требуются компоненты LUNA PLATFORM, дополнительные базы данных и сервис LUNA Streams. Основная информация об этом ПО содержится в данном документе.

LUNA Streams не является компонентом LUNA PLATFORM.

Следующие компоненты LUNA PLATFORM используются по умолчанию с FaceStream.

Следующие версии баз данных рекомендованы к использованию с LUNA Streams:

Установка и конфигурация Oracle не описывается в данном руководстве. Далее в документе будут приводиться примеры запуска с использованием PostgreSQL.

Balancers и другие программы могут использоваться при масштабировании системы для обеспечения отказоустойчивости. Их конфигурация не описывается в данном руководстве.


Последовательность действий перед запуском

Перед запуском FaceStream необходимо выполнить ряд действий, описанных в разделе “Подготовка к запуску”.

Часть действий является обязательной, а часть действий зависит от того, запущены ли сервисы LUNA PLATFORM и активирована ли лицензия.

Последовательность действий без запущенной LP

Если на момент начала запуска FaceStream сервисы LUNA PLATFORM не запущены и не активирована лицензия, то перед ручным или автоматическим запуском нужно выполнить следующие действия:

После выполненных действий можно приступить к ручному или автоматическому запуску LUNA Streams и FaceStream.

Последовательность действий при запущенной LP

Если на момент начала запуска FaceStream сервисы LUNA PLATFORM запущены и активирована лицензия LUNA PLATFORM, то перед ручным или автоматическим запуском нужно убедиться, что в лицензии указан параметр, определяющий количество потоков для обработки сервисом LUNA Streams и указать адрес сервера с запущенным сервисом LUNA Licenses в сервисе LUNA Configurator (см. раздел “Активация ключа при запущенной LP”).

После выполненных действий можно приступить к ручному или автоматическому запуску LUNA Streams и FaceStream.


Подготовка к запуску

Перед запуском FaceStream необходимо выполнить ряд дополнительных действий.


Распаковка архива

Рекомендуется переместить архив в предварительно созданную директорию для FaceStream и распаковать архив в этой директории.

Указанные команды следует выполнять под пользователем root.

Создайте директорию для FaceStream.

mkdir -p /var/lib/fs

Переместите архив в созданную директорию. Предполагается, что архив сохранён на сервере в директории “/root”.

mv /root/facestream_docker_v.5.1.13.zip /var/lib/fs/

Перейдите в директорию.

cd /var/lib/fs/

Установите утилиту unzip, если она ещё не установлена.

yum install unzip

Распакуйте архив.

unzip facestream_docker_v.5.1.13.zip

Перед запуском FaceStream потребуется выполнить его настройку.

В распакованном архиве находятся конфигурационные файлы, которые необходимы для запуска FaceStream. Описание параметров из данных файлов приведены далее в документе.

Создание символической ссылки

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

ln -s facestream_docker_v.5.1.13 fs-current


Включение записи логов в файл для FaceStream

Примечание. Используйте нижеописанные действия только если необходимо сохранять логи в файл. По умолчанию логи выводятся в консоль. Для просмотра логов из консоли используйте команду docker logs <container_name>.

При необходимости можно записывать логи FaceStream в отдельные файлы. Для этого необходимо предварительно создать директорию для сохранения логов.

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

mkdir -p /var/lib/fs/fs-current/logs/

Директорию для хранения логов можно изменить при желании.

Для включения записи логов необходимо включить логирование в файл в настройках FaceStream. Для этого нужно выставить значение параметра “mode” на “l2f” (выводить логи только в файл) или “l2b” (выводить логи и файл и в консоль).

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

-v /var/lib/fs/fs-current/logs/:/srv/logs/ \

Данные из указанной директории добавляются в Docker контейнер, когда он запущен. Все данные из указанной директории Docker контейнера сохраняются в данную директорию.

Для записи логов сервисов LUNA необходимо выполнить аналогичные действия.

По умолчанию в логах FaceStream выводятся только предупреждения системы. С помощью настройки параметра “severity” можно включить вывод ошибок (см. описание параметра в руководстве администратора).


Установка Docker

Docker требуется для запуска контейнера FaceStream.

Установка Docker описана в официальной документации:

https://docs.docker.com/engine/install/centos/.

Если на сервере уже установлен Docker последней версии, то выполнять повторную установку не требуется.

Ниже перечислены команды для быстрой установки:

При возникновении проблем с установкой обратитесь к официальной документации Docker.

Установите зависимости.

yum install -y yum-utils device-mapper-persistent-data lvm2

Добавьте репозиторий.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Установите Docker.

yum -y install docker-ce docker-ce-cli containerd.io

Запустите Docker.

systemctl start docker
systemctl enable docker

Проверьте, запущен ли Docker.

systemctl status docker


Установка Docker Compose

Примечание. Выполняйте установку Docker Compose только если собираетесь использовать скрипт автоматического запуска FaceStream.

Установите Docker Compose.

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Для получения более подробной информации обратитесь к официальной документации:

https://docs.docker.com/compose/install/


Установка зависимостей для GPU

Пропустите данный раздел если не собираетесь использовать FaceStream с GPU.

Для использования GPU с Docker контейнерами необходимо установить NVIDIA Container Toolkit.

Пример установки приведен ниже.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
yum install -y nvidia-container-toolkit
systemctl restart docker

Проверьте работу NVIDIA Container toolkit, запустив базовый контейнер CUDA (он не входит в дистрибутив FaceStream, его необходимо загрузить из Интернета):

docker run --rm --gpus all nvidia/cuda:11.4-base nvidia-smi

Для дополнительной информации см. следующую документацию:

https://github.com/NVIDIA/nvidia-docker#centos-7x8x-docker-ce-rhel-7x8x-docker-ce-amazon-linux-12.

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

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

Действия для запуска FaceStream с GPU через Docker Compose

Для запуска FaceStream с GPU через Docker Compose необходимо, кроме вышеописанных действий, добавить секцию deploy в поле handlers в файл docker-compose.yml.

vi /var/lib/fs/fs-current/example-docker/docker-compose.yml
  facestream:
    image: ${DOCKER_REGISTRY_TEST}:${DOCKER_REGISTRY_PORT}/facestream:${FACESTREAM_TAG}
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            count: all
            capabilities: [gpu]
    restart: always
    environment:
      CONFIGURATOR_HOST: ${HOST_CONFIGURATOR}
      CONFIGURATOR_PORT: 5070

driver - в данном поле указывается драйвер для зарезервированного устройства(устройств);

count - в данном поле задается количество графических процессоров, которые должны быть зарезервированы (при условии, что хост содержит такое количество графических процессоров);

capabilities - данное поле выражает как общие, так и специфические возможности драйвера. Его необходимо задать, иначе будет возвращена ошибка при развертывании сервиса.

Для дополнительной информации см. следующую документацию:

https://docs.docker.com/compose/gpu-support/#enabling-gpu-access-to-service-containers.


Вход в registry

При запуске контейнеров необходимо указать ссылку на образ, необходимый для запуска контейнера. Этот образ загружается из VisionLabs registry. Перед этим необходима авторизация.

Введите логин <username>.

docker login dockerhub.visionlabs.ru --username <username>

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

Получить логин и пароль можно из VisionLabs.

В команде docker login можно вводить логин и пароль одновременно, однако это не гарантирует безопасность, т.к. пароль можно будет увидеть в истории команд.


Активация лицензионного ключа


Активация ключа при запущенной LP

Если сервисы LUNA PLATFORM уже запущены и лицензия с параметром, регулирующим количество потоков для работы LUNA Streams, уже активирована, то необходимо убедиться в том, что текущий ключ LUNA PLATFORM содержит данный параметр. Информация может быть предоставлена специалистами VisionLabs.

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

Если LUNA Streams запускается на сервере, отличном от того, на котором запущен LUNA Licenses, то необходимо выполнить действия, описанные в разделе "Указание адреса сервиса LUNA Licenses.


Активация ключа без запущенной LP

Если сервисы LUNA PLATFORM не запущены или запуск осуществляется с помощью Docker Compose, то подразумевается, что лицензия ещё не была активирована и необходимо запросить новую лицензию LUNA PLATFORM 5 с параметром, регулирующим количество потоков для работы LUNA Streams, и пройти полный процесс лицензирования LUNA PLATFORM 5.

Для лицензирования LP и используется сервис HASP. Без лицензии невозможно запускать и использовать сервисы LUNA и создавать потоки для FaceStream.

Существует ключ HASP, который позволяет пользователям работать в LUNA PLATFORM и создавать потоки в FaceStream. Он использует библиотеку haspvlib_x86_64_30147.so.

Библиотеки находятся в директории “/var/hasplm/”.

Лицензионные ключи предоставляются компанией VisionLabs по запросу отдельно от поставки. Количество одновременно обрабатываемых потоков указано в лицензионном ключе LUNA PLATFORM.

Для использования LUNA PLATFORM и FaceStream в Docker контейнерах требуется сетевая лицензия.

Лицензионный ключ создается с помощью отпечатка системы. Этот отпечаток создается на базе информации об аппаратных характеристиках сервера. Таким образом, полученный лицензионный ключ будет работать только на том же сервере, с которого был получен отпечаток системы.
Существует вероятность, что потребуется новый лицензионный ключ при внесении каких-либо изменений на сервере лицензии.

Последовательность действий:

Вкладка Sentinel Keys пользовательского интерфейса ( <server_host_address>:1947) отображает активированные ключи.

LP использует утилиту HASP определённой версии. Если на сервере установлена более старая версия утилиты, её следует удалить перед установкой новой версии. См. раздел “Удаление утилиты LP HASP”.

Установка утилиты HASP

Откройте директорию HASP.

cd /var/lib/fs/fs-current/extras/hasp/

Установите утилиту HASP на сервер.

yum -y install /var/lib/fs/fs-current/extras/hasp/aksusbd-*.rpm

Запустите утилиту HASP.

systemctl daemon-reload
systemctl start aksusbd
systemctl enable aksusbd
systemctl status aksusbd

Конфигурация утилиты HASP

Осуществить конфигурацию утилиты HASP можно с помощью файла “/etc/hasplm/hasplm.ini”.

Примечание! Не выполняйте это действие, если INI файл для утилиты HASP уже сконфигурирован.

Удалите старый файл настроек, если необходимо.

rm -rf /etc/hasplm/hasplm.ini

Скопируйте INI файл с конфигурациями. Параметры не описаны в данном документе.

cp /var/lib/fs/fs-current/extras/hasp/hasplm.ini /etc/hasplm/

Добавление библиотеки LP

Скопируйте библиотеку LP (x32 and x64). Она требуется для использования лицензионного ключа LP.

cp /var/lib/fs/fs-current/extras/hasp/haspvlib_30147.so /var/hasplm/
cp /var/lib/fs/fs-current/extras/hasp/haspvlib_x86_64_30147.so /var/hasplm/

Удалите библиотеки LP старой версий если они есть:

rm -f /var/hasplm/haspvlib_x86_64_111186.so /var/hasplm/haspvlib_111186.so

Перезапустите утилиту

systemctl restart aksusbd

Создание отпечатка системы для LUNA PLATFORM

Откройте директорию HASP.

cd /var/lib/fs/fs-current/extras/hasp/licenseassist

Запустите скрипт.

./LicenseAssist fingerprint > fingerprint_30147.c2v

Отпечаток системы сохраняется в файл “fingerprint_30147.c2v”.

Отправьте файл в VisionLabs. Ваш лицензионный ключ будет создан с использованием данного отпечатка.

Добавление файла с лицензией вручную с помощью пользовательского интерфейса

Лицензионный файл добавляется вручную
Лицензионный файл добавляется вручную

Задание адреса лицензированного сервера

Укажите IP адрес сервера с лицензией в конфигурационном файле в следующей директории:

/var/lib/fs/fs-current/extras/hasp_redirect/

Поменяйте адрес сервера HASP в следующих документах:

vi /var/lib/fs/fs-current/extras/hasp_redirect/hasp_30147.ini

Поменяйте адрес сервера в файле “hasp_30147.ini”.

serveraddr = <HASP_server_address>

Файл “hasp_30147.ini” используется сервисом Licenses при запуске его контейнера. Требуется перезапустить уже запущенный контейнер при изменении сервера.

HASP_server_address - IP адрес сервера с вашим ключом HASP. Необходимо использовать IP адрес, а не имя сервера.

Удаление утилиты LP HASP

Данное действие требуется выполнить для удаления утилиты.

Остановите и отключите утилиту.

systemctl stop aksusbd
systemctl disable aksusbd
systemctl daemon-reload
yum -y remove aksusbd haspd


Запуск сервисов LP

Примечание. Перед запуском сервисов LP убедитесь, что лицензия активирована (см. раздел "Активация ключа без запущенной LP").

Запуск сервисов LUNA PLATFORM необходим в случае, если не запущены следующие дополнительные компоненты:

Если вышеперечисленные компоненты уже запущены, пропустите данный раздел.


Запуск контейнера InfluxDB OSS 2

InfluxDB 2.0.8-alpine требуется для мониторинга сервисов LP (дополнительную информацию см. в разделе “Мониторинг” в руководстве администратора LUNA PLATFORM 5).

Примечание! Если у вас уже установлен InfluxDB 2.0.8-alpine, пропустите этот шаг.

Используйте команду docker run со следующими параметрами:

docker run \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_BUCKET=luna_monitoring \
-e DOCKER_INFLUXDB_INIT_USERNAME=luna \
-e DOCKER_INFLUXDB_INIT_PASSWORD=password \
-e DOCKER_INFLUXDB_INIT_ORG=luna \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=kofqt4Pfqjn6o0RBtMDQqVoJLgHoxxDUmmhiAZ7JS6VmEnrqZXQhxDhad8AX9tmiJH6CjM7Y1U8p5eSEocGzIA== \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/fs/fs-current/example-docker/influx:/var/lib/influxdb2 \
--restart=always \
--detach=true \
--network=host \
--name influxdb \
dockerhub.visionlabs.ru/luna/influxdb:2.0.8-alpine


Запуск контейнера PostgreSQL

Если БД PostgreSQL уже установлена, пропустите этот шаг.

Используйте следующую команду для запуска PostgreSQL.

docker run \
--env=POSTGRES_USER=luna \
--env=POSTGRES_PASSWORD=luna \
--shm-size=1g \
-v /var/lib/fs/fs-current/example-docker/postgresql/entrypoint-initdb.d/:/docker-entrypoint-initdb.d/ \
-v /var/lib/fs/fs-current/example-docker/postgresql/data/:/var/lib/postgresql/data/ \
-v /etc/localtime:/etc/localtime:ro \
--name=postgres \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/postgis-vlmatch:12

-v /var/lib/luna/current/example-docker/postgresql/data/:/var/lib/postgresql/data/ - эта команда позволяет монтировать директорию “data” в контейнер PostgreSQL. Директория на сервере и директория в контейнере будут синхронизированы. Данные PostgreSQL из контейнера будут сохраняться в эту директорию.

--network=host - при необходимости изменить порт для PostgreSQL, следует изменить эту строку на -p 5440:5432. Здесь первый порт 5440 - локальный, а 5432 - порт в контейнере.


Создание БД LUNA Configurator

Создайте базу данных для LUNA Configurator в контейнере Postgres:

docker exec -i postgres psql -U luna -c "CREATE DATABASE luna_configurator;"

Дайте возможность пользователю авторизоваться в БД:

docker exec -i postgres psql -U luna -c "GRANT ALL PRIVILEGES ON DATABASE luna_configurator TO luna;"

Инициализация БД Configurator

Используйте команду docker run со следующими параметрами для создания таблиц базы данных Configurator.

docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/fs/fs-current/extras/conf/configurator_configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
-v /var/lib/fs/fs-current/extras/conf/configurator_configs/platform_settings.json:/srv/luna_configurator/used_dumps/platform_settings.json \
--network=host \
--rm \
--entrypoint bash \
dockerhub.visionlabs.ru/luna/luna-configurator:v.2.0.72 \
-c "python3 ./base_scripts/db_create.py; cd /srv/luna_configurator/configs/configs/; python3 -m configs.migrate --config /srv/luna_configurator/configs/config.conf head; cd /srv; python3 ./base_scripts/db_create.py --dump-file /srv/luna_configurator/used_dumps/platform_settings.json"

/var/lib/fs/fs-current/extras/conf/configurator_configs/platform_settings.json - позволяет задавать путь к файлу с конфигурациями LP.

./base_scripts/db_create.py; - создает структуру базы данных.

python3 -m configs.migrate head; - выполняет миграции настроек в базе данных Configurator и устанавливает ревизию для миграции.

--dump-file /srv/luna_configurator/used_dumps/platform_settings.json - обновляет настройки в базе данных Configurator значениями из предоставленного файла.


Запуск контейнера LUNA Configurator

Используйте следующую команду для запуска LUNA Configurator.

docker run \
--env=PORT=5070 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/fs/fs-current/extras/conf/configurator_configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
--name=luna-configurator \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-configurator:v.2.0.72 


Запуск контейнера LUNA Licenses

Убедитесь в том, что задали адрес сервера с лицензиями в файле “hasp_30147.ini”. См. раздел “Задание адреса лицензированного сервера”.

Добавьте право доступа для пользователя “luna” в директорию “hasp_redirect”.

chown -R 1001:0 /var/lib/fs/fs-current/extras/hasp_redirect/

Используйте следующую команду для запуска сервиса:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5120 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/fs/fs-current/extras/hasp_redirect/hasp_30147.ini:/home/luna/.hasplm/hasp_30147.ini \
--name=luna-licenses \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-licenses:v.0.3.79

Указание адреса сервиса LUNA Licenses

Примечание. Выполняйте нижеперечисленные действия только если запускаете LUNA Streams не на сервере с LUNA Licenses. В противном случае данный шаг можно пропустить.

Перейдите в пользовательский интерфейс сервиса LUNA Configurator и выберите “luna-streams” в выпадающем списке “Service name”.

В секции “LUNA_LICENSES_ADDRESS” укажите адрес сервера, где запущена сервис LUNA Licenses.


Ручной запуск FaceStream

Перед ручным запуском FaceStream обязательно должны быть выполнены следующие действия:


Загрузка настроек в LUNA Configurator

Основные настройки LUNA Streams и FaceStream быть заданы в сервисе Configurator после его запуска. Исключением являются настройки FaceEngine, которые задаются в конфигурационном файле “faceengine.conf” и передаются во время запуска контейнера FaceStream.

При необходимости можно использовать вместо настроек сервиса Configurator конфигурационные файлы и передавать их во время запуска контейнера (для дополнительной информации см. раздел “Использование FaceStream с конфигурационными файлами” руководства администратора).

Настройки FaceStream и LUNA Streams загружаются в Configurator по-разному.


Загрузка настроек LUNA Streams

Для загрузки настроек LUNA Streams в сервис Configurator, необходимо использовать механизм миграции конфигураций.


docker run \
-v /etc/localtime:/etc/localtime:ro \
--rm \
--entrypoint='' \
--network=host \
dockerhub.visionlabs.ru/luna/streams-configs:v.0.5.5 \
python3 -m streams_configs.migrate head --config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator

--config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator - флаг указания адреса БД luna_configurator


Загрузка настроек FaceStream

Настройки FaceStream расположены в специальном файле “facestream_dump.json”. Для загрузки этих настроек в сервис LUNA Configurator, необходимо использовать скрипт “load_dump.py”.

Для использования скрипта “load_dump.py” требуется наличие Python версии 2.x или 3.x. Если установлена версия 2.x, то скрипт нужно запускать с помощью команды python. Если же установлена версия 3.х, то скрипт нужно запускать с помощью команды python3.

cd /var/lib/fs/fs-current/example-docker/luna_configurator/dumps/
python -m load_dump --dump-file=facestream_dump.json --luna-config=http://127.0.0.1:5070/1

Все необходимые параметры будут автоматически добавлены в сервис LUNA Configurator.


Подготовка БД LUNA Streams

Для запуска FaceStream необходимо запустить сервис LUNA Streams, создав и инициализировав для него БД. Данный сервис не входит в поставку LUNA PLATFORM 5, поэтому должен быть запущен отдельно.

Создание БД LUNA Streams в контейнере PostgreSQL

Примечание. Выполняйте нижеописанные команды только если ранее не выполнялся запуск контейнера PostgreSQL, описанный в разделе “Запуск контейнера PostgreSQL”. При выполнении команды запуска контейнера PostgreSQL автоматически создается база данных LUNA Streams.

Создайте базу данных для LUNA Streams:

docker exec -i postgres psql -U luna -c "CREATE DATABASE luna_streams;"

Дайте возможность пользователю авторизоваться в БД:

docker exec -i postgres psql -U luna -c "GRANT ALL PRIVILEGES ON DATABASE luna_streams TO luna;"

Активируйте PostGIS:

docker exec -i postgres psql -U luna luna_streams -c "CREATE EXTENSION postgis;"

Инициализация БД LUNA Streams

Инициализируйте данные в БД LUNA Streams:

docker run -v /etc/localtime:/etc/localtime:ro \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-streams:v.0.5.5 \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1


Команда запуска контейнера LUNA Streams

Запуск контейнера осуществляется следующей командой:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5160 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
--name=luna-streams \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-streams:v.0.5.5


Команды запуска контейнера FaceStream

Команда запуска контейнера с использованием CPU

Запуск контейнера осуществляется следующим образом:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \
-v /etc/localtime:/etc/localtime:ro \
--env=PORT=34569 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.1.13

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

Список потоков доступен по адресу http://127.0.0.1:34569/api/1/streams/. Просмотр потока в браузере доступен по адресу http://127.0.0.1:34569/api/1/streams/preview/<stream_id>.

Команда запуска контейнера с использованием GPU

Примечание. Используйте данную команду только если собираетесь использовать FaceStream с GPU.

Перед запуском FaceStream в режиме GPU необходимо установить дополнительные зависимости (см. раздел “Установка зависимостей для GPU”).

Перед запуском контейнера FaceStream с GPU требуется включить использование GPU для вычислений в настройках FaceStream с помощью параметра “enable_gpu_processing” (см. раздел “Настройки FaceStream” в руководстве администратора).

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \
-v /etc/localtime:/etc/localtime:ro \
--env=PORT=34569 \
--gpus device=0 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.1.13

--gpus device=0 - параметр указывает используемое устройство GPU и позволяет использовать GPU. Один GPU используется для одного экземпляра FaceStream. Использование множества GPU для одного экземпляра невозможно.

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

Список потоков доступен по адресу http://127.0.0.1:34569/api/1/streams/. Просмотр потока в браузере доступен по адресу http://127.0.0.1:34569/api/1/streams/preview/<stream_id>.

Ключи запуска

Ключи запуска задаются с помощью переменных окружения:

–env= - этот параметр задает переменные окружения, требуемые для запуска контейнера. Указываются следующие основные значения:

Для тегов “STREAMS_NAME”, “STREAMS_ID”, “GROUPS_NAME” и “GROUPS_ID” можно задать несколько значений. Пример синтаксиса: –env=STREAMS_ID=“037f3196-c874-4eca-9d7c-91fd8dfc9593 4caf7cf7-dd0d-4ad5-a35e-b263e742e28a”

–device= - данный параметр необходим для указания адреса USB устройства. Адрес должен быть указан в источнике потока при его создании. Пример: --device=/dev/video0.

См. принцип работы FaceStream с LUNA Configurator в разделе “Использование FaceStream с LUNA Configurator” руководства администратора.

Расшифровка параметров запуска контейнера

docker run - команда для запуска выбранного образа в качестве нового контейнера.

-v - параметр volume позволяет загружать содержимое серверной папки в объем контейнера. Таким образом содержимое синхронизируется.

-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \ - этот параметр позволяет использовать настройки FaceEngine из конфигурационного файла “faceengine.conf”.

--network=host - этот параметр указывает, что отсутствует симуляция сети и используется серверная сеть. При необходимости изменить порт для сторонних контейнеров следует заменить эту строку на -p 5440:5432. Здесь первый порт 5440 - это локальный порт, а 5432 - это порт, используемый в контейнере.

/etc/localtime:/etc/localtime:ro - задает текущий часовой пояс, используемый системой контейнера.

--name=facestream - этот параметр задает имя запускаемого контейнера. Имя должно быть уникальным. Если уже существует контейнер с таким же именем, произойдет ошибка.

--restart=always - этот параметр определяет политику перезагрузки. Daemon всегда перезагружает контейнер вне зависимости от кода завершения.

--detach=true - запуск контейнера в фоновом режиме.


Запуск FaceStream с помощью Docker Compose

Перед автоматическим запуском FaceStream обязательно должны быть выполнены следующие действия:

Примечания о скрипте Docker Compose. Скрипт:

См. файл “docker-compose.yml” и другие файлы в директории “example-docker” для получения дополнительной информации.

Можно написать собственный скрипт, который разворачивает и конфигурирует все необходимые сервисы LP и FaceStream. Данный документ не включает информацию о создании скриптов и не обучает использованию Docker. Обратитесь к документации Docker для получения подробной информации о Docker и Docker Compose:

https://docs.docker.com


Команда запуска FaceStream с помощью Docker Compose

Откройте директорию Docker Compose:

cd /var/lib/fs/fs-current/example-docker

Убедитесь в том, что контейнер FS не запущен до выполнения скрипта. Попытка запустить контейнер с таким же именем, как существующий контейнер, приведет к ошибке. Если контейнер запущен, необходимо остановить его с помощью команды docker container rm -f <container_name>. Чтобы остановить все контейнеры, используйте docker container rm -f $(docker container ls -aq).

Для запуска FaceStream с GPU с помощью Docker Compose необходимо выполнить действия, описанные в разделе “Установка зависимостей для GPU”.

Запуск FaceStream через Docker Compose:

Необходимо выполнить вход в VisionLabs registry (см. раздел “Вход в registry”)

./start_facestream.sh --configurator_address=127.0.0.1

--configurator_address=127.0.0.1 - адрес сервиса Configurator

Проверьте статус всех запущенных Docker контейнеров.

docker ps

Список потоков доступен по адресу http://127.0.0.1:34569/api/1/streams/. Просмотр потока в браузере доступен по адресу http://127.0.0.1:34569/api/1/streams/preview/<stream_id>.


Команды Docker

Показать контейнеры

Чтобы показать список запущенных Docker контейнеров, используйте команду:

docker ps

Чтобы показать все имеющиеся Docker контейнеры, используйте команду:

docker ps -a 

Копировать файлы в контейнер

Можно переносить файлы в контейнер. Используйте команду docker cp для копирования файла в контейнер.

docker cp <file_location> <container_name>:<folder_inside_container>

Вход в контейнер

Можно входить в отдельные контейнеры с помощью следующей команды:

docker exec -it <container_name> bash

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

exit

Имена образов

Можно увидеть все имена образов с помощью команды

docker images

Просмотр логов контейнера

Просмотреть логи контейнера можно с помощью следующей команды:

docker logs <container_name>

Удаление образа

Если требуется удаление образа:

docker rmi -f 61860d036d8c

Удаление всех существующих образов:

docker rmi -f $(docker images -q)

Остановка контейнера

Контейнер можно остановить с помощью следующей команды:

docker stop <container_name>

Остановка всех контейнеры:

docker stop $(docker ps -a -q)

Удаление контейнера

Если необходимо удалить контейнер:

docker container rm -f 23f555be8f3a

Удаление всех контейнеров:

docker container rm -f $(docker container ls -aq)