Перейти к содержанию

Подготовка к обновлению#

Убедитесь в том, что вы являетесь root-пользователем перед тем, как начать обновление!

Перед обновлением необходимо выполнить следующие действия:

  1. Ознакомиться с ключевыми изменениями предыдущих версий, если выполняется обновление с версии, отличной от версии LUNA PLATFORM v.5.84.0
  2. Создать резервные копии
  3. Подготовиться к смене версии нейронной сети для извлечения биометрических шаблонов, если это необходимо
  4. Удалить старую символическую ссылку
  5. Распаковать дистрибутив новой версии LUNA PLATFORM
  6. Создать новую символическую ссылку
  7. Изменить группу и владельца для новых директорий
  8. Выполнить перенос данных, если выполняется обновление с версии 5.38.3 и ниже
  9. Сохранить пользовательские настройки сервиса Configurator, если они изменялись
  10. Создать директории с логами, если ранее использовалась запись логов в файлы
  11. Обновить лицензию, если это необходимо
  12. Настроить вычисления с помощью GPU, если планируется использовать GPU
  13. Удалить старые контейнеры

Ключевые изменения предыдущих версий#

Примечание. При обновлении LUNA PLATFORM с предыдущей версии, пропустите данный раздел.

Ниже перечислены ключевые изменения предыдущих версий, на которые надо обратить внимание при выполнении обновления со старых версий LUNA PLATFORM. Для некоторых из этих изменений требуется выполнить обязательные действия, иначе LUNA PLATFORM может не запуститься или функционировать некорректно.

В таблице ниже перечислены не все изменения. См. подробную информацию о всех изменениях в примечаниях к выпуску LUNA PLATFORM.

Версия Изменения Обязательные действия
5.84.0 Из контейнера Remote SDK удалена 110ая модель нейронной сети для извлечения биометрических шаблонов тел. Теперь по умолчанию используется 116ая модель нейронной сети для извлечения биометрических шаблонов тел. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, т.к. изменилась версия по умолчанию.
5.76.0 Группа параметров "INFLUX_MONITORING" переименована в "LUNA_MONITORING". При обновлении окружения с помощью Storages с указанием разных сущностей (например, "luna_prepare configs", "luna_prepare database" и др.), необходимо выполнять обновление окружения для InfluxDB (аргументы "aggregated_influx_bucket" и "influx_bucket") строго после миграции настроек (аргумент "configs"). В противном случае подготовка окружения не будет выполнена корректно. При выполнении всего окружения с помощью аргумента "all_entities" никаких дополнительных действий делать не нужно.
5.72.1 Из контейнера Remote SDK удалена 107ая модель нейронной сети для извлечения биометрических шаблонов тел. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, если использовалась 107ая модель.
5.67.0 Обновлено значение порога из настройки "redetect_score_threshold" группы настроек "LUNA_REMOTE_SDK_FACE_DETECTOR_SETTINGS" с "0.3" до "0.5". Обновить значение порога в соответствии с пользовательской логикой.
5.62.3 Теперь по умолчанию используется модель 62 нейронной сети для извлечения биометрических шаблонов. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, т.к. изменилась версия по умолчанию.
5.53.0 Обновлен образ VisionLabs для PostgreSQL с 12 версии на 16 версию. Если ранее использовался данный образ, то необходимо самостоятельно выполнить миграцию согласно официальной документации.
5.46.0 Функционал для работы с нейронными сетями (детекция, эстимация и извлечение) перенесен из сервиса Handlers в новый сервис Remote SDK. -
Из контейнера Remote SDK удалена 105ая модель нейронной сети для извлечения биометрических шаблонов тел. Теперь по умолчанию используется 110ая модель нейронной сети для извлечения биометрических шаблонов тел. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, т.к. изменилась версия по умолчанию.
5.45.1 Значение по умолчанию настройки "score_threshold" в секции "LUNA_HANDLERS_FACE_DETECTOR_SETTINGS" сервиса Configurator изменено с 0.42 до 0.5. Проверить логику распознавания лиц, если используется значение "score_threshold", отличное от значения по умолчанию.
5.40.0 В командах запуска контейнеров PostgreSQL, InfluxDB и Image Store теперь прописываются пути директорий для монтирования, расположенные в корневом каталоге /var/lib/luna/<db_or_bucket_folder>, в отличие от предыдущих версий, где пути прописывались для определенной версии LUNA PLATFORM /var/lib/luna/current/example-docker/<db_or_bucket_folder>. Это позволяет не переносить данные при каждом обновлении. Перенести старые данные PostgreSQL, InfluxDB и Image Store в корневой каталог (см. "Перенос данных"), а затем удалить и заново создать контейнеры, прописав новые пути директорий для монтирования.
5.38.3 Значение по умолчанию настройки "score_threshold" в секции "LUNA_HANDLERS_BODY_DETECTOR_SETTINGS" сервиса Configurator изменено с 0.3 до 0.5. Проверить логику распознавания тел, если используется значение "score_threshold", отличное от значения по умолчанию.
Значение по умолчанию настройки "redetect_face_target_size" в секции "LUNA_HANDLERS_FACE_DETECTOR_SETTINGS" сервиса Configurator изменено с 45 до 64. Проверить логику распознавания лиц, если используется значение "redetect_face_target_size", отличное от значения по умолчанию.
5.36.5 Адрес сервера лицензирования теперь нужно задавать в настройках Configurator перед запуском контейнера Licenses. Выполнить действия, описанные в разделе "Задание адреса сервера лицензирования с помощью Configurator".
5.35.0 Прекращена поддержка старых сервисов Индексирования и поиска по индексу. -
5.34.0 Из контейнера Handlers удалены 54, 56 и 57 модели нейронных сетей для извлечения биометрических шаблонов. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, если использовалась одна из перечисленных моделей.
Из контейнера Handlers удалены 104 и 106 модели нейронных сетей для извлечения биометрических шаблонов. Теперь по умолчанию используется модель 107. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, т.к. изменилась версия по умолчанию.
Прекращена поддержка сервиса Liveness V1. -
5.30.0 Обновлены библиотеки вендора для HASP ключа и HASP утилита (c 111186 на 30147). Обновить сервис HASP и выписать новую лицензию (см. "Обновление лицензии").
Изменен механизм создания и управления аккаунтами. Выполнить действия, помеченные фразой Внимание! Миграция аккаунтов (только версии 5.2.0...5.28.0)
5.28.0 Значение по умолчанию настройки "score_threshold" в секции "FACE_DETECTOR_V3" сервиса Configurator изменено с 0.89 до 0.42. Проверить логику распознавания лиц, если используется значение "score_threshold", отличное от значения по умолчанию.
5.26.0 Наличие маски на подбородке с этой версии относится к состоянию "missing". В предыдущих версиях оно относилось к состоянию "medical_mask". Проверить логику работы оценки масок.
5.24.0 Прекращена поддержка БД Vertica для сервиса Events. -
5.23.0 Обновлены пороги по умолчанию (рекомендуемые) для следующих проверок в группе проверок “face_quality” и ресурсе “/iso”: "mouth_occluded" (старые значения: min=0, max=0.3; новые значения: min=0, max=0.5) и "mouth_open" (старые значения: min=0, max=0.64; новые значения: min=0, max=0.5) Проверить логику работы "mouth_occluded" и "mouth_open", если использовались значения по умолчанию.
5.14.0 Обновлён алгоритм Liveness V2. Пороги по умолчанию для “liveness_threshold” и “quality_threshold” теперь равняются “0.5”. Рекомендуемый порог “liveness_threshold” теперь равен “0.5” вместо “0.88”. Проверить логику работы алгоритма Liveness V2.
5.6.0 Теперь по умолчанию используется модель 59 нейронной сети для извлечения биометрических шаблонов. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, т.к. изменилась версия по умолчанию.
Из контейнера Handlers удалена 101 модель нейронной сети извлечения биометрических шаблонов тел. Теперь по умолчанию используется модель 104. Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, т.к. изменилась версия по умолчанию.
5.3.0 Изменена логика запуска сервисов LUNA PLATFORM внутри контейнеров. Теперь приложения запускаются не от пользователя root, а от пользователя luna. -
Прекращена поддержка детекторов FaceDetV1 и FaceDetV2. -

Создание резервных копий#

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

  • резервные копии всех баз данных, используемых с LUNA PLATFORM;
  • резервную копию бакетов Image Store;
  • резервную копию настроек сервисов LUNA PLATFORM.

Создание резервных копий позволит восстановить в случае возникновения каких-либо проблем в процессе миграции.

Копия СУБД PostgreSQL#

Резервная копия СУБД PostgreSQL выполняется с помощью утилит pg_dumpall или pg_dump.

Воспользуйтесь официальной инструкцией для выполнения резервной копии.

Копия базы данных Influx#

Резервная копия БД Influx выполняется с помощью команды influxd backup.

Воспользуйтесь официальной инструкцией для выполнения резервной копии.

Копия бакетов Image Store#

Создайте резервную копию бакетов с помощью следующей команды:

cp -r /var/lib/luna/image_store /var/lib/luna/BACKUP_image_store

Дамп-файл с настройками сервисов#

Пользовательские значения настроек сервисов LUNA PLATFORM (всех, кроме сервиса Configurator) автоматически мигрируются с помощью механизма миграции сервиса Configurator.

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

Чтобы создать дамп-файл, используйте следующие команды (можно выполнить из любой директории на сервере):

wget -O /var/lib/luna/BACKUP_settings_dump.json 127.0.0.1:5070/1/dump

или

curl 127.0.0.1:5070/1/dump > /var/lib/luna/BACKUP_settings_dump.json

Важно! Данный файл не будет использован в процессе нормальной установки LUNA PLATFORM. Чтобы применить сохраненные настройки, нужно использовать скрипт db_create.py с аргументом командной строки--dump-file (за которым следует имя созданного дамп-файла): base_scripts/db_create.py --dump-file settings_dump.json. Применить дамп-файл можно только к пустой базе данных с созданными таблицами. См. подробную информацию в разделе "Дамп-файл с настройками LP" руководства администратора.

Подготовка к смене версии нейронной сети#

В некоторых сборках LUNA PLATFORM удаляются модели нейронных сетей для извлечения биометрических шаблонов лиц и тел, а также меняются настройки использования моделей по умолчанию. См. раздел "Ключевые изменения предыдущих версий" для подробной информации о данных изменениях.

Если выполняется обновление с версии, где были удалены нейронные сети, а в предыдущей сборке в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" была указана какая-то из удаленных моделей, то сервис Remote SDK не запустится.

В текущей сборке LUNA PLATFORM поддержаны модели нейросетей для извлечения биометрических шаблонов:

Объект, из которого извлекается БШ Модели нейронных сетей Модель по умолчанию
Лицо 59, 60, 62 62
Тело 116 116

Необходимо выполнить одно из дополнительных действий в зависимости от следующих сценариев работы:

Продолжение использования отсутствующих нейронных сетей

Запросите у VisionLabs старую модель нейронной сети и подготовьте её к переносу в новый контейнер Remote SDK после его запуска (см. инструкцию по переносу в разделе "Использование модели нейросети не из поставки" руководства администратора).

Переход на новую версию нейронной сети с продолжением использования старых биометрических шаблонов

Перейти на новую версию с продолжением использования старых шаблонов можно выполнив задачу Additional extraction. Это позволит преобразовать старые шаблоны на новую версию нейронной сети.

В релизах LUNA PLATFORM сначала добавляется поддержка какой-либо модели, а только потом спустя несколько версий обновляется модель по умолчанию, что обеспечивает наличие новой модели в контейнере при обновлении с предыдущей версии. Однако если выполняется обновление со старой версии LUNA PLATFORM, то важно убедиться, что в старой версии контейнера Remote SDK имеется требуемая модель для выполнения задачи Additional extraction. Модель можно запросить у специалистов VisionLabs или перенести из более новой версии контейнера Remote SDK.

Важно! Исключением является процесс повторного извлечения биометрических шаблонов тел, позволяющий использовать задачу Additional extraction уже после запуска нового контейнера Remote SDK, который гарантированно имеет новую модель. В таком случае можно не думать о том есть ли модель нейронной сети в старом контейнере.

Шаги для выполнения перехода на новую версию нейронной сети с продолжением использования старых биометрических шаблонов:

  • выполните предварительные действия если обновляетесь не с предыдущей версии LUNA PLATFORM:

    • повторное извлечение биометрических шаблонов тел: если предпочитаете выполнять задачу Additional extraction перед обновлением, то обязательно убедитесь, что в старом контейнере Remote SDK есть новая модель нейронной сети. Если предпочитаете выполнять задачу Additional extraction после обновления (рекомендуется), то никаких дополнительных действий не требуется.
    • повторное извлечение биометрических шаблонов лиц: обязательно убедитесь, что в контейнере Remote SDK есть новая модель нейронной сети.

    Убедиться в наличии модели можно с помощью следующей команды:

    bash docker exec -it luna-remote-sdk ls fsdk/data

    В директории должны быть файлы вида cnndescriptor_<nn_version>.conf.

  • выполните задачу Additional extraction:

    • повторное извлечение биометрических шаблонов тел: перед или после обновления
    • повторное извлечение биометрических шаблонов лиц: перед обновлением

    См. раздел "Задача Additional extraction" в руководстве администратора.

  • укажите новую версию нейронной сети в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" в соответствии с разделом "Смена версии нейронной сети в Configurator":

    • повторное извлечение биометрических шаблонов тел:
      • после обновления если задача Additional extraction выполняется перед обновлением
      • перед обновлением если задача Additional extraction выполняется после обновления (иначе сервис Remote SDK может не запуститься если модель была удалена из контейнера)
    • повторное извлечение биометрических шаблонов лиц: после обновления

Переход на новую версию нейронной сети с прекращением использования старых биометрических шаблонов

Укажите новую версию нейронной сети в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" перед запуском сервиса Remote SDK в соответствии с разделом "Смена версии нейронной сети в Configurator".

Если не требуется использовать извлечение биометрических шаблонов тел, то можно отключить использование нейронной сети с помощью команды --env=EXTEND_CMD="--enable-body-descriptor-estimator=0" при запуске контейнера Remote SDK (см. подробную информацию в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора).

Смена версии нейронной сети в Configurator#

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

  • откройте пользовательский интерфейс Configurator http://<configurator_server_ip>:5070;
  • введите название настройки "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" в поле "Setting name" и нажмите "Apply Filters";
  • установите нужную модель нейронной сети в настройке "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION";
  • сохраните изменения, нажав кнопку "Save".

Удалите символическую ссылку в директорию предыдущей минорной версии с помощью следующей команды:

rm -f /var/lib/luna/current

Распаковка дистрибутива#

Дистрибутив представляет собой архив luna_v.5.86.0, где v.5.86.0 это числовой идентификатор, обозначающий версию LUNA PLATFORM.

Архив включает в себя конфигурационные файлы, требуемые для установки и использования. Он не включает в себя Docker образы сервисов, их требуется скачать из Интернета отдельно.

Переместите дистрибутив в директорию на вашем сервере перед установкой. Например, переместите файлы в директорию /root/. В ней не должно быть никакого другого дистрибутива или файлов лицензии кроме целевых.

Переместите дистрибутив в директорию c LUNA PLATFORM.

mv /root/luna_v.5.86.0.zip /var/lib/luna

Установите приложение для распаковки архива при необходимости

yum install -y unzip

Откройте папку с дистрибутивом

cd /var/lib/luna

Распакуйте файлы

unzip luna_v.5.86.0.zip

Создайте символическую ссылку. Она показывает, что актуальная версия файла дистрибутива используется для запуска LUNA PLATFORM.

ln -s luna_v.5.86.0 current

Изменение группы и владельца для директорий#

Сервисы LP запускаются внутри контейнеров пользователем "luna". Таким образом, требуется установить разрешения для данного пользователя на работу с примонтированными директориями.

Откройте директорию LP "example-docker":

cd /var/lib/luna/current/example-docker/

Создайте директорию для хранения настроек:

mkdir luna_configurator/used_dumps

Установите для пользователя с UID 1001 и группой 0 разрешения на работу с примонтированными директориями.

chown -R 1001:0 luna_configurator/used_dumps

Перенос данных (версии 5.38.3 и ниже)#

В официальной документации по установке для версий LUNA PLATFORM v.5.38.3 и ниже, пути в командах запуска контейнеров PostgreSQL, InfluxDB и Image Store прописывались для определенной версии LUNA PLATFORM /var/lib/luna/current/example-docker/<db_or_bucket_folder>. Начиная с версии LUNA PLATFORM v.5.40.0, в командах запуска контейнеров PostgreSQL, InfluxDB и Image Store прописываются пути директорий для монтирования, расположенные в корневом каталоге /var/lib/luna/<db_or_bucket_folder>.

Примеры команд запуска контейнеров PostgreSQL, InfluxDB и Image Store содержат аргументы монтирования соответствующих директорий с данными из корневого каталога. Если выполняется обновление с версии LUNA PLATFORM v.5.38.3 и ниже и предыдущая версия LUNA PLATFORM была установлена согласно официальной документации, то в командах запуска контейнеров укажите старые директории с монтируемыми данными или предварительно перенесите старые данные в корневую директорию согласно разделу "Перенос старых данных в общую директорию".

Сохранение пользовательских настроек сервиса Configurator#

Примечание. Пропустите данный шаг, если настройки Configurator не изменялись.

Настройки сервиса Configurator не мигрируются автоматически, в отличие от настроек всех остальных сервисов.

Если предыдущая версия LP использовалась с настройками сервиса Configurator, отличных от настроек по умолчанию, нужно создать резервную копию файла конфигурации "luna_configurator_postgres.conf" в отдельной директории на сервере.

cp /var/lib/luna/<your_previous_lp_version>/example-docker/luna_configurator/configs/luna_configurator_postgres.conf /var/lib/luna/BACKUP_luna_configurator_postgres.conf

Эта резервная копия должна быть примонтирована к запускаемому контейнеру сервиса Configurator.

Если вы не уверены, менялись ли настройки сервиса Configurator, то можете сравнить созданную резервную копию с настройками Configurator из текущей поставки с помощью следующей команды:

diff /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf /var/lib/luna/BACKUP_luna_configurator_postgres.conf

Создание директории логов для новых сервисов#

Пропустите этот раздел в случае, если ранее логи не сохранялись на сервере.

В новой версии LUNA PLATFORM могли появиться новые сервисы, для которых нужно создать директории с логами. Это зависит от версии, с которой выполняется обновление. Например, в версии 5.30.0 появился сервис Accounts.

См. раздел "Запись логов на сервер" если вы ранее не использовали запись логов в файл, но хотите включить её.

Ниже приведены команды для создания директорий для всех существующих сервисов. Данные команды создадут и присвоят права только отсутствующим директориям.

mkdir -p /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/backport3 /tmp/logs/backport4 /tmp/logs/luna-video-agent /tmp/logs/luna-video-manager
chown -R 1001:0 /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/backport3 /tmp/logs/backport4 /tmp/logs/luna-video-agent /tmp/logs/luna-video-manager

Если необходимо использовать сервис Python Matcher Proxy, то нужно дополнительно создать директорию /tmp/logs/python-matcher-proxy и установить ей разрешения.

Обновление лицензии#

Для обновления лицензии необходимо выполнить следующие действия:

Действия из руководства по активации лицензии#

Откройте руководство по активации лицензии и выполните необходимые шаги.

Примечание. Это действие является обязательным. Лицензия не будет работать без выполнения шагов по активации лицензии из соответствующего руководства.

Примечание. При обновлении Guardant Control Center необходимо заново выписать лицензионный ключ.

Вычисления с помощью GPU#

Для основных вычислений, выполняемых сервисом Remote SDK, можно использовать GPU.

Пропустите данный раздел, если не собираетесь использовать GPU для вычислений.

Для использования GPU с Docker-контейнерами необходимо установить NVIDIA Container Toolkit. Пример установки приведен ниже.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
yum install -y nvidia-container-toolkit
systemctl restart docker

Проверьте работу NVIDIA Container toolkit, запустив базовый контейнер CUDA (он не входит в дистрибутив LP, его необходимо загрузить из Интернета):

docker run --rm --gpus all nvidia/cuda:11.4.3-base-centos7 nvidia-smi

См. документацию NVIDIA для дополнительной информации.

Извлечение атрибутов на GPU разработано для максимальной пропускной способности. Выполняется пакетная обработка входящих изображений. Это снижает затраты на вычисления для изображения, но не обеспечивает минимальную задержку для каждого изображения.

GPU-ускорение разработано для приложений с высокой нагрузкой, где количество запросов в секунду достигает тысяч. Нецелесообразно использовать ускорение GPU в сценариях с небольшой нагрузкой, когда задержка начала обработки имеет значение.

Удаление старых контейнеров#

Остановите все контейнеры, относящиеся к предыдущей версии LUNA PLATFORM. Контейнеры сторонних приложений удалять необязательно.

Например, можно использовать следующую команду:

docker container rm -f luna-configurator luna-backport3 luna-backport4 luna-sender luna-tasks luna-handlers luna-remote-sdk luna-python-matcher luna-events luna-licenses luna-faces luna-image-store luna-ui-3 luna-ui-4 luna-admin luna-api luna-tasks-worker luna-accounts luna-lambda

Чтобы посмотреть имена запущенных контейнеров или их ID, используйте следующую команду:

docker ps -a

Также рекомендуется удалить старые образы контейнеров для освобождения места. Можно использовать следующую команду для удаления всех неиспользуемых образов.

Если на сервере достаточно места, рекомендуется выполнить это действие только после успешного запуска новой версии LP.

Данная команда удаляет все неиспользуемые образы, а не только образы, относящиеся к LP.

docker image prune -a -f