Миграция на другую модель биометрического образца
Совет
Не стесняйтесь обращаться к нашим специалистам по вопросам миграции по адресу support@ntechlab.com.
В процессе эксплуатации системы (например, при обновлении до последней версии продукта) вам может потребоваться миграция биометрических данных на другую модель нейронной сети.
Для миграции на другую модель нейронной сети выполните следующие действия:
Создайте резервную копию биометрической базы данных на основе Tarantool в любой выбранной директории, например,
/etc/findface_dump
.Совет
Подробнее см. Резервное копирование и восстановление хранилищ данных.
mkdir -p /etc/findface_dump cd /etc/findface_dump sudo findface-storage-api-dump -config /etc/findface-sf-api.ini
Остановите сервис
findface-sf-api
.sudo systemctl stop findface-sf-api.service
Создайте новые шарды, в которых будут хранится заново сгенерированные биометрические образцы.
Откройте директорию
/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
Создайте новые шарды в том же количестве, скопировав файлы конфигурации
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
В файле конфигурации каждого шарда измените следующие строки в зависимости от его имени (в нашем примере
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, {
Создайте символические ссылки на новые шарды.
cd /etc/tarantool/instances.enabled/ sudo ln -s /etc/tarantool/instances.available/shard-01*.lua /etc/tarantool/instances.enabled/
Создайте директории, в которых будут храниться файлы новых шардов. Назначьте права на созданные директории.
cd /opt/ntech/var/lib/tarantool/ mkdir -p shard-01{1..4}/{index,snapshots,xlogs} chown tarantool:tarantool shard-01* shard-01*/*
Откройте файл конфигурации
/etc/findface-extraction-api.ini
и замените прежнюю модель нейронной сети на новую (jackfruit_480.cpu.fnk
в примере).sudo vi /etc/findface-extraction-api.ini face: face/ifruit_320.cpu.fnk -> face: face/jackfruit_480.cpu.fnk
Перезапустите сервис
findface-extraction-api
.sudo systemctl restart findface-extraction-api.service
Запустите новые шарды.
for i in {11..14}; do sudo systemctl start tarantool@shard-0$i; done
На основании приведенного ниже примера создайте файл конфигурации с настройками миграции
<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: False 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: "" ...
Запустите утилиту
findface-sf-api-migrate
с опцией-config
и укажите файл конфигурации<migration.ini>
.findface-sf-api-migrate -config migration.ini
Примечание
Если в системе много событий и досье, процесс миграции может занять значительное количество времени.
После завершения миграции остановите шарды и отключите их автоматический запуск в ОС (не удаляйте их).
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
Откройте файл конфигурации
/etc/findface-sf-api.ini
и измените порты шардов в зависимости от новых настроек. Перезапустите сервис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
Импортируйте структуру базы данных из файла
tnt_schema.lua
.sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
Перенесите схему базы данных из ПК FindFace в PostgreSQL, заново создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора.
sudo findface-security migrate sudo findface-security create_groups sudo findface-security create_default_user
Перезагрузите сервисы.
sudo systemctl restart findface-security.service sudo systemctl restart findface-extraction-api findface-video-worker* findface-video-manager findface-sf-api