Работа с моделями¶
Для работы функциональных решений в большинстве случаев необходимы модели нейронных сетей — обычно это детекторы и экстракторы. Такие модели используются сервисами 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. Если это новая модель, в которой изменился формат ответа или другие параметры, удалите сначала старую модель, а затем добавьте новую в соответствии с действиями, описанными выше.