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

Запуск FaceStream#

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

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

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

  • Режим LUNA Streams — FaceStream получает потоки из сервиса LUNA Streams (используется по умолчанию).
  • Режим агента LUNA PLATFORM — FaceStream регистрируется как агент в уже развёрнутом сервисе LUNA Video Manager и получает потоки через его API.

Выбор режима регулируется параметром pull_streams_service в конфигурационном файле. При запуске с помощью Docker Compose этот параметр автоматически изменяется с помощью флага --mode. Подробнее о режимах работы см. в разделе "Сервисы для управления потоками" Руководства администратора.

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

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

Выберите режим запуска и выполните шаги в указанном порядке:

Запуск FaceStream с LUNA Streams#

Данный раздел описывает запуск FaceStream с LUNA Streams.

Примечание. Выполняйте данные действия, только если собираетесь запускать FaceStream с LUNA Streams. Если собираетесь запускать FaceStream в роли агента LUNA PLATFORM, перейдите в раздел "Запуск FaceStream в режиме агента LUNA PLATFORM".

Инициализация настроек LUNA Streams в Configurator#

Выполните следующую команду для инициализации настроек LUNA Streams в LUNA 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.8.0 \
-c "python3 -m streams_configs.migrate head --config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator"

Инициализация настроек FaceStream в Configurator#

Выполните следующую команду для инициализации настроек FaceStream в LUNA Configurator:

docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--entrypoint=/bin/bash \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/facestream_configs:v.5.2.29 \
-c "python3 -m configs.migrate head --config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator"

Настройка дамп-файла#

Примечание. Пропустите данный раздел, если нужно запустить FaceStream в стандартной конфигурации.

Отредактируйте дамп-файл для задания пользовательских настроек:

vi /var/lib/fs/fs-current/extras/conf/configurator_configs/face_stream_config.json

Загрузка дамп-файла#

Выполните следующую команду для загрузки дамп-файла в Configurator:

docker run \
--rm \
--network=host \
-v /var/lib/fs/fs-current/extras/conf/configs/storages_config.conf:/srv/storages_config.conf \
-v /var/lib/fs/fs-current/extras/conf/configurator_configs/face_stream_config.json:/srv/face_stream_config.json \
dockerhub.visionlabs.ru/luna/storages:v.0.234.0 \
bash -c "luna_prepare load_dump \
    --dump-file=/srv/face_stream_config.json \
    --config=/srv/storages_config.conf"

Здесь:

  • luna_prepare load_dump — команда "load_dump", позволяющая загрузить дамп-файл в БД Configurator
  • -v /var/lib/fs/fs-current/extras/conf/configurator_configs/face_stream_config.json:/srv/face_stream_config.json \ — команда монтирования дамп-файла face_stream_config.json
  • --dump-file=/srv/face_stream_config.json — именованный аргумент, содержащий адрес дамп-файла внутри контейнера
  • -v /var/lib/fs/fs-current/extras/conf/configs/storages_config.conf:/srv/storages_config.conf — команда монтирования конфигурационного файла Storages
  • --config=/srv/storages_config.conf — именованный аргумент, содержащий адрес конфигурационного файла для использования сервисом Storages

Создание хранилища данных мониторинга в ClickHouse#

Примечание. Данный раздел актуален только при использовании ClickHouse для хранения данных мониторинга. Пропустите этот раздел, если используется InfluxDB. Дополнительную информацию см. в разделе "Мониторинг" в руководстве администратора.

Для корректной записи данных мониторингa FaceStream в ClickHouse необходимо предварительно создать таблицу fs_requests.

Для этого выполните команду:

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.8.0 \
-c "python3 -m monitoring.migrate -x luna-config=http://localhost:5070/1 -x partition=day -x monitoring-ttl=30 upgrade head"

В команде выше приведены дополнительные параметры:

  • partition=day — задаёт период партиционирования данных (по дням).
  • monitoring-ttl=30 — задаёт время хранения данных (30 дней).

Важно! Без выполнения этой команды таблица fs_requests не будет создана, и данные мониторинга записываться не будут.

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

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

docker run -v /etc/localtime:/etc/localtime:ro \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-streams:v.1.8.0 \
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.8.0

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

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

В приведенных ниже командах запуска используются параметры монтирования конфигурационных файлов faceengine.conf, runtime.conf и trackengine.conf:

  • -v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \ — параметр позволяет использовать настройки FaceEngine из конфигурационного файла "faceengine.conf".
  • -v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \ — параметр позволяет использовать настройки среды выполнения из конфигурационного файла "runtime.conf".
  • -v /var/lib/fs/fs-current/extras/conf/configs/trackengine.conf:/srv/facestream/data/trackengine.conf \ — параметр позволяет использовать настройки TrackEngine из конфигурационного файла "trackengine.conf".

Важно! Параметры могут быть заданы как через сервис Configurator (см. раздел "Настройки, задаваемые в сервисе LUNA Configurator" руководства администратора), так и в конфигурационных файлах одновременно. В случае совпадения параметров приоритет имеет значение, указанное в сервисе Configurator.

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

Команда запуска контейнера с использованием 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 /var/lib/fs/fs-current/extras/conf/configs/trackengine.conf:/srv/facestream/data/trackengine.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.29

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

Для проверки корректности запуска можно выполнить 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 /var/lib/fs/fs-current/extras/conf/configs/trackengine.conf:/srv/facestream/data/trackengine.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.29

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

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

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

Запуск FaceStream в режиме агента LUNA PLATFORM#

Примечание. Выполняйте данные действия, только если собираетесь запускать FaceStream в роли агента LUNA PLATFORM. Если собираетесь запускать FaceStream с LUNA Streams, перейдите в раздел "Запуск FaceStream с LUNA Streams".

Данный раздел описывает запуск FaceStream в режиме агента LUNA PLATFORM, при котором FaceStream подключается к уже развёрнутому сервису LUNA Video Manager.

Создание аккаунта в LUNA PLATFORM#

Для запуска FaceStream в режиме агента LUNA PLATFORM необходимо создать аккаунт в LUNA PLATFORM с необходимыми разрешениями. Идентификатор этого аккаунта передаётся в FaceStream через переменную окружения ACCOUNT_ID. От имени данного аккаунта агент будет регистрироваться в LUNA Video Manager, а также создаваться потоки.

FaceStream поддерживает два варианта режима агента, которые отличаются способом авторизации:

  • Внутренний агент (параметр internal_agent: true в секции lunavideomanager, используется по умолчанию) — FaceStream авторизуется во внутренних сервисах LUNA PLATFORM с использованием ACCOUNT_ID. Токен не требуется. Используется, когда FaceStream развёрнут в той же инфраструктуре, что и LUNA PLATFORM.

  • Внешний агент (internal_agent: false) — FaceStream авторизуется в LUNA PLATFORM как внешний клиент с использованием токена. Требует дополнительного создания токена с необходимыми разрешениями (операция POST /tokens в LUNA PLATFORM API) и его указания в параметре lunavideomanager.token дамп-файла. Используется, когда FaceStream развёрнут отдельно, вне инфраструктуры LUNA PLATFORM.

Для создания аккаунта выполните запрос к LUNA PLATFORM API (операция POST /accounts). Подробнее — в API-справочнике LUNA PLATFORM.

Инициализация настроек FaceStream в Configurator#

Выполните следующую команду для инициализации настроек FaceStream в LUNA Configurator:

docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--entrypoint=/bin/bash \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/facestream_configs:v.5.2.29 \
-c "python3 -m configs.migrate head --config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator"

Создание хранилища данных мониторинга в ClickHouse#

Примечание. Данный раздел актуален только при использовании ClickHouse для хранения данных мониторинга. Пропустите этот раздел, если используется InfluxDB. Дополнительную информацию см. в разделе "Мониторинг" в руководстве администратора.

Для корректной записи данных мониторингa FaceStream в ClickHouse необходимо предварительно создать таблицу fs_requests.

Для этого выполните команду:

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.8.0 \
-c "python3 -m monitoring.migrate -x luna-config=http://localhost:5070/1 -x partition=day -x monitoring-ttl=30 upgrade head"

В команде выше приведены дополнительные параметры:

  • partition=day — задаёт период партиционирования данных (по дням).
  • monitoring-ttl=30 — задаёт время хранения данных (30 дней).

Важно! Без выполнения этой команды таблица fs_requests не будет создана, и данные мониторинга записываться не будут.

Настройка режима работы#

Для ручного запуска FaceStream в режиме агента LUNA PLATFORM необходимо изменить значение параметра streams_pulling.pull_streams_service в дамп-файле face_stream_config.json:

{
    "streams_pulling": {
        "pull_streams_service": "lunavideomanager"
    }
}

Допустимые значения:

  • lunastreams — режим LUNA Streams (по умолчанию);
  • lunavideomanager — режим работы в роли агента LUNA PLATFORM.

Подробнее о режимах работы см. в разделе "Сервисы для управления потоками" Руководства администратора.

Загрузка дамп-файла#

Выполните следующую команду для загрузки дамп-файла в Configurator:

docker run \
--rm \
--network=host \
-v /var/lib/fs/fs-current/extras/conf/configs/storages_config.conf:/srv/storages_config.conf \
-v /var/lib/fs/fs-current/extras/conf/configurator_configs/face_stream_config.json:/srv/face_stream_config.json \
dockerhub.visionlabs.ru/luna/storages:v.0.234.0 \
bash -c "luna_prepare load_dump \
    --dump-file=/srv/face_stream_config.json \
    --config=/srv/storages_config.conf"

Переменные окружения для режима агента LUNA PLATFORM#

При запуске FaceStream в режиме агента LUNA PLATFORM (с параметром pull_streams_service: lunavideomanager) необходимо передать переменную окружения ACCOUNT_ID:

  • ACCOUNT_ID — идентификатор аккаунта в LUNA PLATFORM, созданного на предыдущем шаге.

Пример передачи переменной:

--env=ACCOUNT_ID=<ACCOUNT_ID> \

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

В приведенных ниже командах запуска используются параметры монтирования конфигурационных файлов faceengine.conf, runtime.conf и trackengine.conf:

  • -v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \ — параметр позволяет использовать настройки FaceEngine из конфигурационного файла "faceengine.conf".
  • -v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \ — параметр позволяет использовать настройки среды выполнения из конфигурационного файла "runtime.conf".
  • -v /var/lib/fs/fs-current/extras/conf/configs/trackengine.conf:/srv/facestream/data/trackengine.conf \ — параметр позволяет использовать настройки TrackEngine из конфигурационного файла "trackengine.conf".

Важно! Параметры могут быть заданы как через сервис Configurator (см. раздел "Настройки, задаваемые в сервисе LUNA Configurator" руководства администратора), так и в конфигурационных файлах одновременно. В случае совпадения параметров приоритет имеет значение, указанное в сервисе Configurator.

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

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

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

docker run \
--env=ACCOUNT_ID=<ACCOUNT_ID> \
--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 /var/lib/fs/fs-current/extras/conf/configs/trackengine.conf:/srv/facestream/data/trackengine.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.29

Замените <ACCOUNT_ID> на идентификатор вашего аккаунта LUNA PLATFORM.

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

Для проверки корректности запуска можно выполнить 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=ACCOUNT_ID=<ACCOUNT_ID> \
--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 /var/lib/fs/fs-current/extras/conf/configs/trackengine.conf:/srv/facestream/data/trackengine.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.29

Замените <ACCOUNT_ID> на идентификатор вашего аккаунта LUNA PLATFORM.

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

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

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

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

Скрипт Docker Compose автоматизирует развёртывание FaceStream и необходимых сервисов в зависимости от выбранного режима работы:

С LUNA Streams (режим по умолчанию) скрипт: - инициализирует настройки LUNA Streams в Configurator; - инициализирует настройки FaceStream в Configurator; - загружает дамп-файл с настройками в Configurator; - создаёт и инициализирует БД LUNA Streams; - запускает LUNA Streams и FaceStream.

При работе в роли агента LUNA PLATFORM (с флагом --mode video-manager) скрипт: - инициализирует настройки FaceStream в Configurator; - загружает дамп-файл с настройками в Configurator; - запускает FaceStream в режиме агента, подключаясь к уже развёрнутому сервису LUNA Video Manager.

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

Важно. Скрипт не предназначен для использования в целях масштабирования FaceStream:

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

Дополнительные возможности:

  • Поддерживается использование GPU для вычислений FaceStream.
  • Не обеспечивается возможность использования внешней базы данных для LUNA Streams, уже установленной на сервере.
  • Не выполняются миграции из предыдущих версий FaceStream и обновления предыдущих сборок.

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

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

https://docs.docker.com

Запуск FaceStream с LUNA Streams#

Данный раздел описывает запуск FaceStream с помощью Docker Compose с LUNA Streams.

Команда запуска 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

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

docker ps

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

Запуск FaceStream в режиме агента LUNA PLATFORM#

Примечание. Выполняйте данные действия, только если собираетесь запускать FaceStream в роли агента LUNA PLATFORM. Если собираетесь запускать FaceStream с LUNA Streams, перейдите в раздел "Запуск FaceStream с LUNA Streams".

Данный раздел описывает запуск FaceStream в режиме агента LUNA PLATFORM, при котором FaceStream подключается к уже развёрнутому сервису LUNA Video Manager.

Команда запуска 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 --mode video-manager --account-id <ACCOUNT_ID>

Примечание. Флаг --mode автоматически изменяет настройку streams_pulling.pull_streams_service в конфигурационном файле. Если флаг не указан, используется режим LUNA Streams. Ручное редактирование дамп-файла при использовании Docker Compose не требуется.

Важно! Флаг --account-id является обязательным. Если он не указан, скрипт использует рутовый аккаунт LUNA PLATFORM по умолчанию. Рекомендуется всегда передавать идентификатор аккаунта, созданного с необходимыми разрешениями (см. раздел "Создание аккаунта в LUNA PLATFORM").

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

docker ps