Перейти к содержанию

Запуск FaceStream#

Существует два способа запуска FaceStream — ручной и автоматический с помощью скрипта Docker Compose.

Используйте гиперссылки ниже для перехода к инструкции по необходимому способу запуска:

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

Примечание. Выполняйте данные действия только если собираетесь запускать FaceStream вручную. Если собираетесь запускать FaceStream с помощью скрипта Docker Compose перейдите в раздел "Запуск FaceStream с помощью Docker Compose".

Загрузка настроек в 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 \
-v /tmp/logs/streams:/srv/logs \
--entrypoint=/bin/bash \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/streams-configs:v.1.1.12 \
-c "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/
  • Запустите скрипт для загрузки настроек FaceStream в сервис LUNA Configurator, указав установленную версию Python (команда ниже приводит пример запуска скрипта для Python версии 3.х):
python3 -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#

Создайте базу данных для 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.1.1.12 \
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 \
-v /tmp/logs/streams:/srv/logs \
--name=luna-streams \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-streams:v.1.1.12

Для проверки корректности запуска сервиса можно выполнить GET-запрос http://127.0.0.1:5160/version. В ответе должна вернуться версия LUNA Streams v.1.1.12.

Команды запуска контейнера 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 /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--env=PORT=34569 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.2.3

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

Для проверки корректности запуска можно выполнить GET-запрос http://127.0.0.1:34569/version. В ответе должна вернуться версия FaceStream.

Команда запуска контейнера с использованием 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 /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--env=PORT=34569 \
--gpus device=0 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.2.3

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

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

Для проверки корректности запуска можно выполнить GET-запрос http://127.0.0.1:34569/version. В ответе должна вернуться версия FaceStream.

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

Скрипт Docker Compose:

  • загружает настройки LUNA Streams и FaceStream в Configurator

  • создает и инициализирует БД LUNA Streams

  • запускает LUNA Streams и FaceStream

  • тестируется с использованием настроек LUNA Streams и FaceStream по умолчанию.

  • не предназначен для использования в целях масштабирования FaceStream:

    • Не используется для развертывания FaceStream на нескольких серверах.

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

  • поддерживает использование GPU для вычислений FaceStream.

  • не обеспечивает возможность использования внешней базы данных для LUNA Streams, уже установленной на сервере.

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

См. файл "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>.