Миграция векторов признаков на другую модель
Совет
Не стесняйтесь обращаться к нашим специалистам по вопросам миграции по адресу support@ntechlab.com.
Важно
В случае если вы выполняете миграцию как часть обновления системы до новой версии, выполните сначала обновление. Только после этого приступайте к миграции.
Этот раздел посвящен миграции векторов признаков объектов на другую модель нейронной сети.
Выполните следующие действия:
Создайте резервную копию базы данных векторов признаков на основе Tarantool в любой выбранной директории, например,
/etc/findface_dump
.Совет
Подробнее см. Резервное копирование и восстановление FindFace Multi и всех данных.
sudo mkdir -p /etc/findface_dump sudo 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
и замените моделиextraction
на новые в параметрахbody_emben
,car_emben
иface_emben
, в зависимости от мигрируемых типов объектов.sudo vi /etc/findface-extraction-api.ini extractors: ... models: ... body_emben: pedrec/<new_model_body>.gpu.fnk ... car_emben: carrec/<new_model_car>.gpu.fnk ... face_emben: face/<new_model_face>.gpu.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 Multi в 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
Мигрируйте кластеры, если данная функция включена в системе. Для этого выполните следующую команду:
Примечание
Перечислите мигрируемые типы объектов в виде опций команды:
—face
,—body
,—car
.sudo findface-security migrate_clusters --face --body --car --use-best-event --use-thumbnail --force-clusterin
В результате система повторно сгенерирует векторы признаков для существующих кластерных событий и автоматически запустит запланированную кластеризацию для пересборки кластеров.