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

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

Важно

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

  1. Разрешите доступ к лицензионному серверу findface-ntls с любого IP-адреса. Для этого откройте файл конфигурации /opt/findface-multi/configs/findface-ntls/findface-ntls.yaml на сервере с findface-ntls и установите listen = 0.0.0.0:3133. Перезапустите контейнер findface-multi-findface-ntls-1.

    sudo vi /opt/findface-multi/configs/findface-ntls/findface-ntls.yaml
    
    listen: 0.0.0.0:3133
    
    sudo docker container restart findface-multi-findface-ntls-1
    
  2. Разрешите доступ к сервису findface-video-manager с любого IP-адреса. Для этого откройте файл конфигурации /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml на сервере с findface-video-manager и установите listen: 0.0.0.0:18810 и rpc:listen: 0.0.0.0:18811. Перезапустите контейнер findface-multi-findface-video-manager-1.

    sudo vi /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml
    
    listen: 0.0.0.0:18810
    ...
    rpc:
      listen: 0.0.0.0:18811
    
    sudo docker container restart findface-multi-findface-video-manager-1
    
  3. На сервере FindFace Multi откройте файл конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py и убедитесь, что параметр ROUTER_URL содержит внешний IP-адрес сервера FindFace Multi, а не localhost. Экземпляры findface-video-worker на удаленных серверах будут использовать данный адрес для отправки объектов.

    sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
    
    ...
    
    'ROUTER_URL': 'http://192.168.0.12',
    
    ...
    

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

Совет

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

  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? (Какой продукт следует установить?)

      О: 3

      1. [multi   ]  FindFace Multi
      2. [server  ]  FindFace Server
      3. [video-worker]  FindFace Video Worker
      
      (default: multi)
      product> 3
      
    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
      
    3. В: Found X interface(s). Which one should we announce as our inter-service communication address? (Было найдено X сетевых интерфейсов. Какой интерфейс следует использовать в качестве адреса для межсервисной коммуникации?)

      О: Выберите интерфейс по умолчанию 2 для подключения к серверу FindFace Multi. Мы не рекомендуем использовать localhost.

      Found 1 interface(s). Which one should we announce as our external address?
      
      -  1 [lo      ]  127.0.0.1
      -  2 [ens3    ]  192.168.112.254
      
      (default: 192.168.112.254)
      inter_ip.advertised> 2
      
    4. В: Please enter FF.Multi or FF.Server IP address: (Пожалуйста, введите адрес сервера FindFace Multi или FindFace Enterprise Server)

      О: Укажите IP-адрес сервера FindFace Multi.

      Please enter FF.Multi or FF.Server IP address:
      server_addr> 192.168.112.25
      

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

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

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

    sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml
    
    models:
      cache_dir: /var/cache/findface/models_cache
      detectors:
        face:
          fnk_path: /usr/share/findface-data/models/detector/face.jasmine_fast.003.cpu.fnk
          min_size: 60
        body:
          fnk_path: /usr/share/findface-data/models/detector/body.jasmine_fast.018.cpu.fnk
          min_size: 60
        car:
          fnk_path: /usr/share/findface-data/models/detector/car.jasmine_fast.005.cpu.fnk
          min_size: 60
      normalizers:
        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
        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
        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
      extractors:
        face_quality:
          fnk_path: /usr/share/findface-data/models/faceattr/quality_fast.v1.cpu.fnk
          normalizer: face_norm_quality
        body_quality:
          fnk_path: /usr/share/findface-data/models/pedattr/pedattr.quality.v0.cpu.fnk
          normalizer: body_norm_quality
        car_quality:
          fnk_path: /usr/share/findface-data/models/carattr/carattr.quality.v0.cpu.fnk
          normalizer: car_norm_quality
      objects:
        face:
          normalizer: face_norm
          quality: face_quality
          track_features: ''
        body:
          normalizer: body_norm
          quality: body_quality
          track_features: ''
        car:
          normalizer: car_norm
          quality: car_quality
          track_features: ''
    

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

    sudo docker container restart findface-multi-findface-video-worker-1
    

Важно

Если вы решили установить findface-ntls и/или findface-video-manager на серверах, отличных от серверов с findface-multi-legacy, укажите их IP-адреса в файле конфигурации /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml после установки.

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

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

ntls_addr: 127.0.0.1:3133

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

mgr:
  static: 127.0.0.1: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-multi/docker-compose.yaml.

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

    sudo vi /opt/findface-multi/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-9.230407.1
        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-9.230407.1
        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-9.230407.1
      ...
      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 не должны ссылаться на один и тот же CFG_STREAMER_PORT. Убедитесь, что вы указали уникальный CFG_STREAMER_PORT для каждого экземпляра findface-video-worker.

  3. Выполните пересборку контейнеров FindFace Multi из директории /opt/findface-multi.

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