Пошаговое развертывание из apt-репозитория

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

Совет

Сначала обязательно ознакомьтесь с архитектурой FindFace.

В этом разделе:

Установка apt-репозитория

Прежде всего установите apt-репозиторий FindFace следующим образом:

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

      О: 1

      Which product should be installed?
      
        1. [security]  FindFace Multi
        2. [server  ]  FindFace Server
        3. [video-worker]  FindFace Video Worker
        4. [nvidia-drivers]  NVIDIA CUDA drivers (installed automatically when you install gpu-variant of the products above)
      
      (default: security)
      product> 1
      
    2. В: Please choose installation type: (Пожалуйста, выберите тип установки:)

      О: 3

      Please choose installation type:
      
      -  1 [stand-alone ]  Single Server
      -  2 [multi-worker]  Single Server, Multiple video workers
      -  3 [repo        ]  Don't install anything, just set up the APT repository
      -  4 [custom      ]  Fully customized installation
      
      (default: stand-alone)
      type> 3
      
    3. В: APT repository doesn't include recognition models. Do you want to install them now?(y/n) (В apt-репозиторий не включены модели распознавания. Вы хотите установить их сейчас?)

      О: y (да) или n (нет) в зависимости от плана развертывания. В любом случае не забудьте установить необходимые модели нейронной сети на сервере с компонентом findface-extraction-api. Чтобы установить их позже, см. Установка моделей нейронных сетей.

      APT repository doesn't include recognition models. Do you want to install them now?(y/n)
      (default: yes)
      repo_data> y
      
    4. В: Select models to install (если вы ввели y на предыдущем шаге)

      О: По умолчанию установке подлежат все модели нейронных сетей. Вы можете оставить все как есть, введя done, или выбрать конкретные модели. Для этого снимите выделение со всех моделей, введя в командной строке -*, затем введите порядковые номера нужных моделей через пробел, например: 1 3 4 и т. д. Введите done для сохранения выбора и перехода к следующему шагу.

      Select models to install.
      Note that you will need to accordingly edit extraction-api and tntapi configuration files.
      At least one of recognition models has to be enabled.
      
      -  1 [v] ./findface-data-age.v2-cpu_3.0.0_all.deb
      ...
      ...
      - 68 [v] ./findface-data-quality.v1-gpu_3.0.0_all.deb
      
      
      Enter keyword to select matching choices or -keyword to clear selection.
      Enter "done" to save your selection and proceed to another step.
      findface-data.models> done
      

    После этого apt-репозиторий FindFace будет автоматически установлен.

Установка необходимого стороннего ПО

Для работы FindFace необходимо стороннее программное обеспечение PostgreSQL, Pgbouncer, NATS, etcd и memcached. Выполните следующие действия:

  1. Установите пакеты с указанным сторонним ПО следующим образом:

    sudo apt update
    sudo apt install -y postgresql-10 nats-server etcd memcached pgbouncer
    
  2. Откройте файл конфигурации /etc/memcached.conf. Установите максимальный размер памяти в мегабайтах, используемый для хранения элементов memcached: -m 1024. Установите максимальный размер элемента: -I 16m. Если один или оба этих параметра отсутствуют, добавьте их в файл.

    sudo vi /etc/memcached.conf
    
    -m 1024
    -I 16m
    
  3. Предоставьте надежный пароль пользователю ntech (9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3 в примере ниже). Внесите учетные данные в список пользователей pgbouncer.

    echo '"ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"' | sudo tee -a /etc/pgbouncer/userlist.txt
    
  4. Настройте pgbouncer. В /etc/pgbouncer/pgbouncer.ini вставьте следующее содержимое вместо существующего, как показано в примере ниже.

    sudo vi /etc/pgbouncer/pgbouncer.ini
    
    [databases]
    ffsecurity = dbname=ffsecurity host=localhost port=5432 user=ntech
    ffsecurity_session = dbname=ffsecurity host=localhost port=5432 user=ntech pool_mode=session pool_size=10
    [pgbouncer]
    pidfile = /var/run/postgresql/pgbouncer.pid
    listen_addr = 127.0.0.1
    listen_port = 5439
    unix_socket_dir = /var/run/postgresql
    auth_type = plain
    auth_file = /etc/pgbouncer/userlist.txt
    pool_mode = transaction
    server_reset_query = DISCARD ALL
    max_client_conn = 16384
    default_pool_size = 70
    syslog = 1
    log_connections = 0
    log_disconnections = 0
    stats_period = 300
    
  5. Добавьте сервисы стороннего ПО в автозагрузку Ubuntu и перезапустите их:

    sudo systemctl enable postgresql@10-main.service nats-server etcd.service memcached.service pgbouncer.service
    sudo systemctl restart postgresql@10-main.service nats-server etcd.service memcached.service pgbouncer.service
    

Развертывание сервера лицензий

Важно

См. Лицензирование, чтобы узнать о политике лицензирования NtechLab.

Для обеспечения лицензирования FindFace разверните findface-ntls, сервер лицензий в составе ядра FindFace.

Важно

Система на базе FindFace может включать в себя только один экземпляр findface-ntls.

sudo apt update
sudo apt install -y findface-ntls
sudo systemctl enable findface-ntls.service && sudo systemctl start findface-ntls.service

Развертывание основной базы данных

Основная база данных FindFace построена на PostgreSQL. Для того чтобы развернуть основную базу данных, выполните следующие действия:

  1. Откройте список пользователей pgbouncer /etc/pgbouncer/userlist.txt. Скопируйте пароль пользователя ntech (9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3 в примере ниже).

    sudo cat /etc/pgbouncer/userlist.txt
    
    "ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"
    
  2. В консоли PostgreSQL создайте пользователя ntech под скопированным паролем, а также базы данных ffsecurity и ffcounter PostgreSQL.

    sudo -u postgres psql
    
    postgres=# CREATE ROLE ntech WITH LOGIN PASSWORD '9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3';
    
    postgres=# CREATE DATABASE ffsecurity WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0;
    
    postgres=# CREATE DATABASE ffcounter WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='C.UTF-8' LC_CTYPE='C.UTF-8' TEMPLATE template0;
    

    Совет

    Для выхода из консоли PostgreSQL введите \q и нажмите Enter.

  3. Разрешите авторизацию в PostgreSQL по UID клиента сокета. Перезапустите PostgreSQL.

    echo 'local all ntech peer' | sudo tee -a /etc/postgresql/10/main/pg_hba.conf
    
    sudo systemctl restart postgresql@10-main.service
    

Развертывание ядра FindFace

Для развертывания ядра FindFace выполните следующие действия:

Совет

Вы можете найти описание компонентов ядра FindFace в разделе Архитектура.

  1. Для FindFace на GPU установите драйверы NVIDIA.

    Важно

    Обязательно перезагрузите сервер после завершения установки драйверов NVIDIA. В противном случае при последующей установке GPU-компонентов произойдет сбой.

  2. Установите компоненты ядра FindFace:

    На CPU:

    sudo apt update
    sudo apt install -y findface-tarantool-server findface-extraction-api findface-sf-api findface-upload findface-video-manager findface-video-worker-cpu
    

    На GPU:

    sudo apt update
    sudo apt install -y findface-tarantool-server findface-extraction-api-gpu findface-sf-api findface-upload findface-video-manager findface-video-worker-gpu
    

    Примечание

    Если на физическом сервере установлено несколько видеокарт, см. Использование нескольких видеокарт.

    Важно

    Обязательно установите модели нейронных сетей на серверах с findface-extraction-api позднее.

  3. В файле конфигурации /etc/findface-extraction-api.ini измените нейронную сеть для распознавания лиц на mango_320.

    На CPU:

    sudo vi /etc/findface-extraction-api.ini
    
    extractors:
        ...
      models:
        ...
        face_emben: face/mango_320.cpu.fnk
        ...
    

    На GPU:

    sudo vi /etc/findface-extraction-api.ini
    
    extractors:
        ...
      models:
        ...
        face_emben: face/mango_320.gpu.fnk
        ...
    
  4. В файле конфигурации /etc/findface-sf-api.ini включите параметр allow-return-facen.

    sudo vi /etc/findface-sf-api.ini
    
    ...
    limits:
      ...
      allow-return-facen: true
    ...
    
  5. Откройте файл конфигурации /etc/findface-video-worker-cpu.ini (/etc/findface-video-worker-gpu.ini). Задайте следующие параметры:

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

    • В параметре capacity укажите максимальное количество видеопотоков, которое может быть обработано findface-video-worker.

    sudo vi /etc/findface-video-worker-cpu.ini
    sudo vi /etc/findface-video-worker-gpu.ini
    
    mgr-static=127.0.0.1:18811
    
    capacity=10
    
    [streamer]
    #------------------------------
    ## streamer/shots webserver port, 0=disabled
    ## type:number env:CFG_STREAMER_PORT longopt:--streamer-port
    port = 18999
    
    ## streamer url - how to access this worker on streamer_port
    ## type:string env:CFG_STREAMER_URL longopt:--streamer-url
    url = 127.0.0.1:18999
    
  6. Добавьте сервисы ядра FindFace в автозагрузку Ubuntu и запустите их.

    На CPU:

    sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu
    sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu
    

    На GPU:

    sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-gpu
    sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-gpu
    

Развертывание прикладного модуля FindFace и базы данных векторов признаков

Для развертывания прикладного модуля FindFace, выполните следующие действия:

  1. Установите компоненты findface-security, findface-security-ui и findface-counter. Добавьте сервис findface-counter в автозагрузку Ubuntu и запустите его.

    sudo apt update
    sudo apt install -y findface-security findface-security-ui findface-counter
    sudo systemctl enable findface-counter && sudo systemctl start findface-counter
    
  2. Создайте структуру базы данных векторов признаков на основе Tarantool, выполнив следующую команду.

    sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
    
  3. Откройте файл конфигурации /etc/tarantool/instances.available/FindFace.lua. Проверьте, содержит ли файл команду dofile и определение spaces, как показано в примере ниже. При необходимости измените файл.

    sudo vi /etc/tarantool/instances.available/FindFace.lua
    
    dofile("/etc/findface-security/tnt_schema.lua")
    
    
    -- host:port to bind, HTTP API
    FindFace = require("FindFace")
    FindFace.start("127.0.0.1", 8101, {
    license_ntls_server="127.0.0.1:3133",
    replication = replication_master,
    spaces = spaces
    })
    

    Важно

    IP-адрес и номер порта, указанные в секции shards файла конфигурации /etc/findface-sf-api.ini, должны быть идентичны указанным в секции FindFace.start.

    sudo vi /etc/tarantool/instances.available/FindFace.lua
    
    ...
    
    FindFace.start("127.0.0.1", 8101...)
    
    sudo vi /etc/findface-sf-api.ini
    
    storage-api:
      ...
      shards:
      - master: http://127.0.0.1:8101/v2/
      ...
    

    Важно

    Если вы внесли изменения в файл конфигурации /etc/findface-sf-api.ini, обязательно перезапустите сервис findface-sf-api:

    sudo systemctl restart findface-sf-api.service
    
  4. Добавьте сервис findface-tarantool-server в автозагрузку Ubuntu и запустите его.

    sudo systemctl enable tarantool@FindFace.service && sudo systemctl start tarantool@FindFace.service
    
  5. Откройте файл конфигурации /etc/findface-security/config.py. Задайте следующие параметры:

    Совет

    Просмотреть исходную версию файла /etc/findface-security/config.py вы можете здесь.

    • EXTERNAL_ADDRESS: (опционально) IP-адрес или URL, который используется для доступа в веб-интерфейс FindFace. Если этот параметр не указан вручную, система автоматически определяет его как внешний IP-адрес сервера.

      Примечание

      Для доступа в FindFace вы можете использовать оба IP-адреса: как автоопределенный, так и указанный вручную в EXTERNAL_ADDRESS.

    • VIDEO_DETECTOR_TOKEN: придумайте токен и укажите его в данном параметре, чтобы авторизовать модуль видеодетекции объектов.

      Совет

      Рекомендуется сгенерировать токен, выполнив следующую команду:

      pwgen -sncy 50 1|tr "'" "."
      
    • VIDEO_MANAGER_ADDRESS: IP-адрес сервера findface-video-manager.

    • NTLS_HTTP_URL: IP-адрес сервера findface-ntls.

    • ROUTER_URL: IP-адрес сервера findface-security, который будет получать обнаруженные на видео объекты от экземпляров findface-video-worker. Адрес указывается внутренний или внешний, в зависимости от сети, в которой findface-video-worker взаимодействует с findface-security. Измените порт по умолчанию с учетом настроек переадресации с HTTP на HTTPS или вообще не указывайте его, оставив только IP-адрес.

    • SF_API_ADDRESS: IP-адрес сервера findface-sf-api.

    • DATABASES (раздел): заполните его следующим образом: 'PORT': 5439, 'USER': 'ntech', 'PASSWORD': ‘<пароль из /etc/pgbouncer/userlist.txt>’ (см. Установка необходимого стороннего ПО).

    Совет

    Если необходимо обеспечить безопасность данных, включите SSL-шифрование.

  6. Используя приведенную ниже команду, сгенерируйте ключ подписи для шифрования сессии (используется в Django) и задайте его в параметре SECRET_KEY.

    pwgen -sncy 50 1|tr "'" "."
    
  7. Перенесите схему базы данных из FindFace в PostgreSQL, создайте предустановленные пользовательские роли и первого администратора (т. н. Супер Администратора).

    Важно

    Супер Администратор не может лишиться прав администратора даже при смене роли.

    sudo findface-security migrate
    sudo findface-security create_groups
    sudo findface-security create_default_user
    
  8. Запустите сервисы.

    sudo systemctl enable findface-security
    sudo systemctl start findface-security
    
  9. Отключите сервер nginx, активный по умолчанию, и добавьте сервер findface-security в список включенных серверов. Перезапустите nginx.

    sudo rm /etc/nginx/sites-enabled/default
    
    sudo ln -s /etc/nginx/sites-available/ffsecurity-nginx.conf /etc/nginx/sites-enabled/
    
    sudo nginx -s reload
    
  10. Обеспечение лицензирования:

    Важно

    Для того чтобы войти в первый раз в систему, используйте учетную запись Cуперадминистратора admin:admin, созданную по умолчанию.

Примечание

Для создания других пользователей или смены пароля Суперадминистратора см. раздел Управление ролями и пользователями.

Важно

Для того чтобы сохранить совместимость FindFace со средой установки, настоятельно рекомендуется отключить автоматическое обновление Ubuntu. В этом случае вы сможете обновлять ОС вручную, контролируя процесс обновления отдельных пакетов.

Для отключения автоматического обновления Ubuntu выполните следующие команды:

sudo apt-get remove unattended-upgrades
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily.service
sudo systemctl daemon-reload

Важно

Сервисы FindFace логируют большой объем данных, что в конечном итоге может привести к чрезмерной загрузке диска. Чтобы этого не произошло, рекомендуется отключить сервис rsyslog из-за его неоптимальной схемы ротации логов и вместо него использовать правильно настроенный сервис systemd-journal. См. пошаговые инструкции в разделе Логи сервисов.