Развертывание FindFace Video Worker на удаленных серверах

Вы можете установить экземпляры findface-video-worker отдельно от основного сервера FindFace Multi при создании многосерверной среды.

Важно

Прежде чем приступить к установке сервиса findface-video-worker на удаленных серверах, выполните следующие действия:

На сервере FindFace Multi откройте файл конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py. Измените значение параметра ROUTER_URL, по умолчанию заданное как http://findface-multi-ui. В параметре ROUTER_URL укажите внешний IP-адрес сервера FindFace Multi. Экземпляры findface-video-worker на удаленных серверах будут использовать данный адрес для отправки объектов.

sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py

...

'ROUTER_URL': 'http://192.168.112.253',

...

Для отдельной установки сервиса findface-video-worker выполните следующие действия:

Совет

Перед тем как приступить к развертыванию, обязательно ознакомьтесь с системными требованиями, а также подготовьте сервер на Ubuntu или Debian.

  1. Загрузите файл инсталлятора findface-*.run.

  2. Поместите файл .run в любой каталог на сервере установки (например, /home/username).

  3. Из данного каталога сделайте файл .run исполняемым.

    Примечание

    Вместо findface-* укажите актуальное имя файла.

    chmod +x findface-*.run
    
  4. Запустите файл .run.

    sudo ./findface-*.run
    

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

    1. В: Which product should be installed? (Какой продукт следует установить?)

      О: 2

      Which product should be installed?
      
      -  1 [multi   ]  FindFace Multi
      -  2 [video-worker]  FindFace Video Worker
      
      (default: multi)
      product> 2
      
    2. В: Which variant of Video Worker should be installed? (Какой вариант Video Worker следует установить?)

      О: Укажите вариант findface-video-worker, CPU или GPU.

      Which variant of Video Worker should be installed?
      
      -  1 [cpu]  CPU-based implementation, slower but doesn't require GPU
      -  2 [gpu]  CUDA-based implementation of video detector, requires NVIDIA GPU
      
      (default: cpu)
      findface-video-worker.variant> 1
      
    3. В: Directory to install into: (Директория установки:)

      О: Укажите директорию установки FindFace Video Worker. По умолчанию установка выполняется в /opt/findface-server. Нажмите Enter для подтверждения. В противном случае укажите нужную директорию и нажмите Enter.

      Directory to install into:
      (default: /opt/findface-server)
      dest_dir>
      
    4. В: Please enter domain name or IP address to access License and Video Manager services: (Введите доменное имя или IP-адрес, по которому доступны сервисы лицензирования и Video Manager:)

      О: Укажите доменное имя или IP-адрес, по которому доступны сервисы findface-ntls и findface-video-manager.

      Please enter domain name or IP address to access License and Video Manager services:
      server_addr> 192.168.112.253
      
    5. В: Found X interface(s). Which one should we announce as our external address? (Было найдено X сетевых интерфейсов. Какой интерфейс следует использовать в качестве внешнего IP-адреса?)

      О: Выберите интерфейс, который вы собираетесь использовать в качестве внешнего IP-адреса.

      Found 4 interface(s). Which one should we announce as our external address?
      
      -  1 [lo      ]  127.0.0.1
      -  2 [ens3    ]  192.168.112.254
      -  3 [docker0 ]  10.44.132.1
      -  4 [br-60d3cac2fd81]  10.44.0.1
      
      (default: 192.168.112.254)
      ext_ip.advertised> 2
      

    После этого процесс установки будет автоматически запущен.

  5. Выполните процедуры после установки.

    Внесите изменения в файл findface-video-worker.yaml – заполните значения всех необходимых параметров. Убедитесь, что в секции models указаны detectors, normalizers и extractors, а в секции objects – соответствующие значения. Ниже приведен пример того, как должна выглядеть секция. Ее содержимое может отличаться в зависимости от выбранных объектов распознавания.

    sudo vi /opt/findface-server/configs/findface-video-worker/findface-video-worker.yaml
    
    models:
      cache_dir: /var/cache/findface/models_cache
      detectors:
        car:
          fnk_path: /usr/share/findface-data/models/detector/car.gustav_normal.007.cpu.fnk
          min_size: 60
        body:
          fnk_path: /usr/share/findface-data/models/detector/bodydet.gustav_normal.022.cpu.fnk
          min_size: 60
        face:
          fnk_path: /usr/share/findface-data/models/detector/facedet.jasmine_fast.004.cpu.fnk
          min_size: 60
      normalizers:
        car_norm:
          fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
        car_norm_quality:
          fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
        body_norm:
          fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
        body_norm_quality:
          fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
        face_norm:
          fnk_path: /usr/share/findface-data/models/facenorm/crop2x.v2_maxsize400.cpu.fnk
        face_norm_quality:
          fnk_path: /usr/share/findface-data/models/facenorm/crop1x.v2_maxsize400.cpu.fnk
      extractors:
        car_quality:
          fnk_path: /usr/share/findface-data/models/carattr/carattr.license_plate_quality.v4.cpu.fnk
          normalizer: car_norm_quality
        body_quality:
          fnk_path: /usr/share/findface-data/models/pedattr/pedattr.quality.v0.cpu.fnk
          normalizer: body_norm_quality
        face_quality:
          fnk_path: /usr/share/findface-data/models/faceattr/faceattr.quality.v5.cpu.fnk
          normalizer: face_norm_quality
      objects:
        car:
          normalizer: car_norm
          quality: car_quality
          track_features: ''
        body:
          normalizer: body_norm
          quality: body_quality
          track_features: ''
        face:
          normalizer: face_norm
          quality: face_quality
          track_features: ''
    

    Перезапустите контейнер findface-server-findface-video-worker-1.

    sudo docker restart findface-server-findface-video-worker-1
    

Примечание

Если findface-ntls и/или findface-video-manager установлены на двух различных серверах, укажите их IP-адреса после установки в файле конфигурации /opt/findface-server/configs/findface-video-worker/findface-video-worker.yaml. Предположим, findface-ntls установлен на центральном сервере 192.168.112.253, а findface-video-manager установлен на дополнительном сервере 192.168.112.252, тогда отредактируйте соответствующим образом файл /opt/findface-server/configs/findface-video-worker/findface-video-worker.yaml.

sudo vi /opt/findface-server/configs/findface-video-worker/findface-video-worker.yaml

В параметре ntls_addr укажите IP-адрес сервера findface-ntls.

ntls_addr: 192.168.112.253:3133

В параметре mgrstatic укажите IP-адрес сервера findface-video-manager, который будет обеспечивать findface-video-worker настройками и списком видеопотоков для обработки.

static: 192.168.112.252:18811

Совет

Чтобы установить экземпляр findface-video-worker на другом сервере, используйте автоматическое развертывание из файла с параметрами установки. В этом случае вам не придется повторно отвечать на вопросы инсталлятора. Точный путь к файлу с параметрами установки отображается сразу после последнего вопроса инсталлятора, перед началом активной фазы установки:

[I 2023-02-09 11:13:37,187 main:142] Your answers were saved to /tmp/findface-installer-p01n9sn3.json

Для запуска автоматического развертывания из файла /tmp/<findface-installer-*>.json, выполните следующую команду:

sudo ./<findface-*>.run -f /tmp/<findface-installer-*>.json

Если ваш экземпляр findface-video-worker развернут в среде с несколькими GPU, то вам придется вручную настроить файл /opt/findface-server/docker-compose.yaml.

  1. В файле /opt/findface-server/docker-compose.yaml в секции services укажите конфигурацию findface-video-worker для каждого запущенного экземпляра findface-video-worker. В параметре environment укажите правильный идентификатор GPU для CUDA_VISIBLE_DEVICES. Придерживайтесь приведенного ниже примера:

    sudo vi /opt/findface-server/docker-compose.yaml
    
    services:
      ...
      findface-video-worker:
        command: [--config=/etc/findface-video-worker.yaml]
        environment: [CUDA_VISIBLE_DEVICES=0]
        image: docker.int.ntl/ntech/universe/video-worker-gpu:ffserver-12.241211.2
        logging: {driver: journald}
        network_mode: host
        restart: always
        runtime: nvidia
        volumes: ['./configs/findface-video-worker/findface-video-worker.yaml:/etc/findface-video-worker.yaml:ro',
          './models:/usr/share/findface-data/models:ro', './cache/findface-video-worker/models:/var/cache/findface/models_cache',
          './cache/findface-video-worker/recorder:/var/cache/findface/video-worker-recorder']
      findface-video-worker-1:
        command: [--config=/etc/findface-video-worker-1.yaml]
        environment: [CUDA_VISIBLE_DEVICES=1]
        image: docker.int.ntl/ntech/universe/video-worker-gpu:ffserver-12.241211.2
        logging: {driver: journald}
        network_mode: host
        restart: always
        runtime: nvidia
        volumes: ['./configs/findface-video-worker/findface-video-worker-1.yaml:/etc/findface-video-worker-1.yaml:ro',
          './models:/usr/share/findface-data/models:ro', './cache/findface-video-worker/models:/var/cache/findface/models_cache',
          './cache/findface-video-worker/recorder:/var/cache/findface/video-worker-recorder']
    
  2. В этой же секции укажите переменные окружения для каждого экземпляра findface-video-worker. Придерживайтесь приведенного ниже примера:

    findface-video-worker:
      image: docker.int.ntl/ntech/universe/video-worker-gpu:ffserver-12.241211.2
      ...
      environment:
        - CFG_MGR_STATIC=vm:18811
        - CFG_NTLS_ADDR=ntls:3133
        - CFG_STREAMER_PORT=9999
        - CFG_STREAMER_URL=127.0.0.1:9999
        - CFG_STREAMER_TRACKS=true
        #- CFG_RESOLUTIONS=1920x1080
    

    Чтобы получить справку по переменным окружения, выполните следующую команду, учитывая вариант findface-video-worker: findface-video-worker-cpu или findface-video-worker-gpu.

    docker exec -it findface-server-findface-video-worker-1 ./findface-video-worker-cpu --help
    

    Важно

    Для корректной работы несколько экземпляров findface-video-worker не должны ссылаться на один и тот же CFG_STREAMER_PORT. Убедитесь, что вы указали уникальный CFG_STREAMER_PORT для каждого экземпляра findface-video-worker.

    Важно

    Для параметра CFG_STREAMER_URL укажите IP адрес сервера, на котором развернут findface-video-worker. Данный параметр отвечает за работу Видеостены.

  3. Выполните перезапуск всех контейнеров.

    cd /opt/findface-server
    
    sudo docker-compose down
    sudo docker-compose up -d