Миграция на другую модель биометрического образца

Совет

Не стесняйтесь обращаться к нашим специалистам по вопросам миграции по адресу support@ntechlab.com.

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

Для миграции на другую модель нейронной сети выполните следующие действия:

  1. Создайте резервную копию биометрической базы данных на основе Tarantool в любой выбранной директории, например, /etc/findface_dump.

    mkdir -p /etc/findface_dump
    cd /etc/findface_dump
    sudo findface-storage-api-dump -config /etc/findface-sf-api.ini
    
  2. Остановите сервис findface-sf-api.

    sudo systemctl stop findface-sf-api.service
    
  3. Создайте новые шарды, в которых будут хранится заново сгенерированные биометрические образцы.

    1. Откройте директорию /etc/tarantool/instances.available/ и подсчитайте количество шардов по количеству файлов конфигурации shard-*.lua.

      Примечание

      В примере ниже четыре шарда.

      cd /etc/tarantool/instances.available/
      
      ls -l
      
      shard-001.lua
      shard-002.lua
      shard-003.lua
      shard-004.lua
      
    2. Создайте новые шарды в том же количестве, скопировав файлы конфигурации shard-*.lua.

      Примечание

      Для удобства в качестве второй цифры в новых именах используется 1: shard-01*.lua.

      sudo cp shard-001.lua shard-011.lua
      sudo cp shard-002.lua shard-012.lua
      sudo cp shard-003.lua shard-013.lua
      sudo cp shard-004.lua shard-014.lua
      
    3. В файле конфигурации каждого шарда измените следующие строки в зависимости от его имени (в нашем примере shard-011, shard-012 и т. д.):

      Прежнее значение Новое значение
      listen = „127.0.0.1:32001“ Listen = „127.0.0.1:32011“
      vinyl_dir = „/opt/ntech/var/lib/tarantool/shard-001“ vinyl_dir = „/opt/ntech/var/lib/tarantool/shard-011“
      work_dir = „/opt/ntech/var/lib/tarantool/shard-001“ work_dir = „/opt/ntech/var/lib/tarantool/shard-011“
      memtx_dir = „/opt/ntech/var/lib/tarantool/shard-001/snapshots“ memtx_dir = „/opt/ntech/var/lib/tarantool/shard-011/snapshots“
      wal_dir = „/opt/ntech/var/lib/tarantool/shard-001/xlogs“ wal_dir = „/opt/ntech/var/lib/tarantool/shard-011/xlogs“
      FindFace.start(«127.0.0.1», 8101, { FindFace.start(«127.0.0.1», 8111, {
    4. Создайте символические ссылки на новые шарды.

      cd /etc/tarantool/instances.enabled/
      
      sudo ln -s /etc/tarantool/instances.available/shard-01*.lua /etc/tarantool/instances.enabled/
      
    5. Создайте директории, в которых будут храниться файлы новых шардов. Назначьте права на созданные директории.

      cd /opt/ntech/var/lib/tarantool/
      
      mkdir -p shard-01{1..4}/{index,snapshots,xlogs}
      
      chown tarantool:tarantool shard-01* shard-01*/*
      
  4. Откройте файл конфигурации findface-extraction-api и замените в нем модель нейронной сети на новую (ifruit_320.cpu.fnk в примере).

    sudo vi /etc/findface-extraction-api.ini
    
    face: face/elderberry_576.r2.cpu.fnk -> face: face/ifruit_320.cpu.fnk
    

    Перезапустите сервис findface-extraction-api.

    sudo systemctl restart findface-extraction-api.service
    
  5. Запустите новые шарды.

    for i in {11..14}; do sudo systemctl start tarantool@shard-0$i; done
    
  6. На основании приведенного ниже примера создайте файл конфигурации с настройками миграции <migration.ini>.

    extraction-api:
      timeouts:
        connect: 5s
        response_header: 30s
        overall: 35s
        idle_connection: 0s
      extraction-api: http://127.0.0.1:18666
    storage-api-from: # current location of the gallery
      timeouts:
        connect: 5s
        response_header: 30s
        overall: 35s
        idle_connection: 10s
      max-idle-conns-per-host: 20
      shards:
        - master: http://127.0.0.1:8101/v2/
          slave: ""
        - master: http://127.0.0.1:8102/v2/
          slave: ""
        - master: http://127.0.0.1:8103/v2/
          slave: ""
        - master: http://127.0.0.1:8104/v2/
          slave: ""
    storage-api-to:
      timeouts:
        connect: 5s
        response_header: 30s
        overall: 35s
        idle_connection: 10s
      max-idle-conns-per-host: 20
      shards:
        - master: http://127.0.0.1:8111/v2/
          slave: ""
        - master: http://127.0.0.1:8112/v2/
          slave: ""
        - master: http://127.0.0.1:8113/v2/
          slave: ""
        - master: http://127.0.0.1:8114/v2/
          slave: ""
    workers_num: 3
    faces_limit: 100
    extraction_batch_size: 8
    normalized_storage:
      type: webdav
      enabled: True
      webdav:
        upload-url: http://127.0.0.1:3333/uploads/
      s3:
        endpoint: ""
        bucket-name: ""
        access-key: ""
        secret-access-key: ""
        secure: ""
        region: ""
        public-url: ""
        operation-timeout: 30
    

    В разделе storage-api-from укажите шарды, с которых осуществляется миграция.

    storage-api-from: # current location of the gallery
      ...
      shards:
        - master: http://127.0.0.1:8101/v2/
          slave: ""
        - master: http://127.0.0.1:8102/v2/
          slave: ""
        - master: http://127.0.0.1:8103/v2/
          slave: ""
         - master: http://127.0.0.1:8104/v2/
      ...
    

    В разделе storage-api-to укажите новые шарды, в которых будут храниться данные после миграции.

    storage-api-to:
      ...
      shards:
        - master: http://127.0.0.1:8111/v2/
          slave: ""
        - master: http://127.0.0.1:8112/v2/
          slave: ""
        - master: http://127.0.0.1:8113/v2/
          slave: ""
        - master: http://127.0.0.1:8114/v2/
          slave: ""
      ...
    
  7. Запустите утилиту findface-sf-api-migrate с опцией -config и укажите файл конфигурации <migration.ini>.

    findface-sf-api-migrate -config migration.ini
    

    Примечание

    Если в системе много событий и досье, процесс миграции может занять значительное количество времени.

  8. После завершения миграции остановите шарды и отключите их автоматический запуск в ОС (не удаляйте их).

    for i in {01..04}; do sudo systemctl stop tarantool@shard-0$i.service ; done
    
    for i in {01..04}; do sudo systemctl disable tarantool@shard-0$i.service ; done
    
  9. Откройте файл конфигурации findface-sf-api и измените порты шардов в зависимости от новых настроек. Перезапустите сервис findface-sf-api.

    sudo vi /etc/findface-sf-api.ini
    
    shards:
      - master: http://127.0.0.1:8111/v2/
        slave: ""
      - master: http://127.0.0.1:8112/v2/
        slave: ""
      - master: http://127.0.0.1:8113/v2/
        slave: ""
      - master: http://127.0.0.1:8114/v2/
        slave: ""
    
    sudo systemctl start findface-sf-api.service
    
  10. Импортируйте структуру базы данных из файла tnt_schema.lua.

    sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
    
  11. Перенесите схему базы данных из FindFace Security в PostgreSQL, заново создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора.

    sudo findface-security migrate
    sudo findface-security create_groups
    sudo findface-security create_default_user
    
  12. Перезагрузите сервисы.

    sudo systemctl restart findface-security.service
    sudo systemctl restart findface-extraction-api findface-video-worker* findface-video-manager findface-sf-api