Запуск 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 — требует развертывания LUNA Streams.
- Запуск FaceStream в режиме агента LUNA PLATFORM — подключается к уже развёрнутому LUNA Video Manager.
Запуск 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:
Запуск 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