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

Работа с моделями

Для работы функциональных решений в большинстве случаев необходимы модели нейронных сетей — обычно это детекторы и экстракторы. Такие модели используются сервисами extraction-api и video-worker, с которыми платформа работает через соответствующие API.

Логика использования моделей

Модели нейронных сетей задействованы в компонентах ядра и в сервисе main-api.

Модели в компонентах ядра

Стандартный процесс использования моделей заключается в следующем: перечень моделей указывается в конфигурации сервиса, файлы моделей становятся доступными для сервиса в зависимости от способа развертывания, а при наличии соответствующих лицензионных разрешений модели могут использоваться в сервисе.

Модели в main-api

В конфигурации

Если в конфигурационном файле сервиса main-api для параметра extraction_api_models_info_url указана ссылка на ресурс models-info сервиса extraction-api, то при запуске main-api выполняет запрос по указанному адресу и получает список моделей из extraction-api. В этом случае раздел models в конфигурационном файле main-api игнорируется.

📌 Пример:

extraction_api_models_info_url: http://extraction-api:port/v2/models-info

Если параметр extraction_api_models_info_url не указан, то список моделей необходимо задать вручную в разделе models конфигурационного файла main-api.

В объекте функционального решения

Функциональные решения создаются в main-api в виде объектов (записей в БД). Каждый объект функционального решения содержит в себе перечень моделей нейронных сетей, которые необходимы для его работы.

При попытке создать функциональное решение с типом объекта, детектором или экстрактором, который отсутствует в конфигурации сервиса, сервер вернет ошибку.

Если удалить из конфигурации main-api модель, с которой ранее был создан объект функционального решения, сервис не запустится, выдав соответствующую ошибку.

Изменение перечня моделей

Удаление модели

При необходимости удаления какой-либо модели из платформы необходимо следовать такому порядку:

1. Измените объект функционального решения, удалив из него соответствующую модель. В случае наличия в системе процессингов с удаляемой из ФР моделью, ответом на попытку изменения будет ошибка с кодом DEPENDENT_PROCESSINGS. При получении такой ошибки следует обновить все зависимые процессинги, удалив из них заданную модель, а затем изменить объект функционального решения повторно.

2. Удалите функциональное решение history, если оно нигде не используется.

3. Удалите модель из конфигурации main-api.

4. При необходимости удаления модели из extraction-api и/или video-worker убедитесь, что в очередях обработки отсутствуют запросы с удаляемой моделью. Иначе пайплайн обработки может быть заблокирован на этапе работы сервиса events-enrichment. Чтобы избежать блокировки, подождите некоторое время (10–20 минут) после удаления модели из объекта функционального решения. В стандартной ситуации, без значительного отставания (лага) в топиках Kafka, этого времени будет достаточно.

Добавление модели

Чтобы добавить модель, выполните следующие действия:

1. Добавьте модель в конфигурации video-worker и/или extraction-api.

2. Добавьте модель в конфигурацию main-api.

Примечание

Загрузка модели в video-worker и/или extraction-api может занимать продолжительное время.

3. После завершения процесса загрузки модели в video-worker и/или extraction-api добавьте модель в соответствующее функциональное решение через API.

Обновление модели

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

1. Если это дообученная версия существующей модели без изменения формата ответа, обновите файл модели в video-worker и/или extraction-api.

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