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

Описание программы

Полное наименование: Компонент управления моделями видеоаналитики

Обозначение: LPI-VAP-MM

Краткое наименование (для работы с документом): «Управление моделями»

Программный продукт: «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»)

Стандарт: ГОСТ 19.402-78

Аннотация

Настоящий документ содержит описание компонента управления моделями видеоаналитики (LPI-VAP-MM), являющегося расширением программного продукта «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»). Компонент предназначен для централизованного ведения каталога моделей видеоаналитики и подготовки их версий к применению в сценариях Платформы 4.0.

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

Исполняемые составные части поставляются контейнерными образами и размещаются в кластере Kubernetes Платформы 4.0 на серверных ЭВМ архитектуры x86 под управлением «Московской серверной операционной системы». Выделенные серверы под компонент не требуются: прикладные сервисы каталога моделей, проверочных данных и запусков размещаются на мастер-ноде кластера, а конвертация, валидация, контрольный инференс и проверочные запуски моделей — на вычислительной ноде с графическим ускорителем класса NVIDIA T4. Компоненту выделяется доля ресурсов этих узлов, соответствующая позиции поставки. Метаданные сохраняются в PostgreSQL, двоичные пакеты, проверочные медиаданные и результаты — в S3-совместимом объектном хранилище; обмен заданиями и состояниями выполняется с применением очередей сообщений. Пользователь обращается к компоненту через общий веб-интерфейс Платформы 4.0 с персонального компьютера или тонкого клиента; установка исполняемых частей LPI-VAP-MM на рабочее место не требуется.

Серверная часть реализована преимущественно на Python, пользовательский веб-интерфейс и серверные средства веб-среды — на TypeScript и JavaScript; для представления, хранения и обмена данными также используются HTML, CSS, SQL, JSON, YAML и Protocol Buffers. Объём программы определяется составом контейнерных образов и клиентского приложения конкретной версии поставки и должен фиксироваться по ведомости образов и результатам сборки. Пользовательские модели, проверочные медиаданные и результаты запусков относятся к данным компонента и в объём программы не включаются.

Непосредственная обработка рабочих видеопотоков, управление камерами и регистрация событий не входят в назначение LPI-VAP-MM и выполняются другими компонентами Платформы 4.0. Документ определяет общие сведения, функциональное назначение, логическую структуру, используемые технические средства, порядок вызова и загрузки, а также входные и выходные данные компонента.

1. Общие сведения

1.1. Обозначение и наименование программы

Параметр Значение
Полное наименование Компонент управления моделями видеоаналитики
Краткое наименование Компонент «Управление моделями»
Обозначение (артикул) LPI-VAP-MM
Состав изделия Расширение программы для ЭВМ «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»; далее — Платформа 4.0)
Реестровая запись № 33642 от 21.05.2026 в Едином реестре российских программ для электронных вычислительных машин и баз данных
Производитель (правообладатель) ООО «ЛАБОРАТОРИЯ ПРОМЫШЛЕННОГО ИНТЕЛЛЕКТА»
Вид поставки Простая (неисключительная) лицензия; срок действия прав — весь срок действия исключительного права на программное обеспечение
Гарантийное обслуживание 36 месяцев

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

Компонент состоит из функциональных блоков, приведённых в таблице 1.1.1. Перечень составных частей каждого блока, их функции, входы и выходы приведены в подразделе 3.3 и в настоящем подразделе не повторяются. Имена сервисов являются техническими обозначениями в схеме развёртывания Платформы 4.0 и не являются самостоятельными программными продуктами.

Функциональный блок Краткое назначение
Каталог моделей и версий Ведение моделей, версий, метаданных, категорий, атрибутов и комментариев; публикация, архивирование и восстановление
Загрузка и хранение пакетов моделей Приём ZIP-пакетов, проверка целостности, регистрация файлов и исполняемых артефактов в объектном хранилище
Конвертация и автоматическая проверка Подготовка исполняемых артефактов, валидация структуры и содержимого пакета, контрольный инференс загруженной версии
Проверочные данные Ведение разделов, версий наборов данных, изображений, видеозаписей, папок, зон и метаданных файлов
Проверочные запуски Создание асинхронных запусков версии модели на версии набора данных, контроль состояния и прогресса, хранение результатов
Анализ результатов проверки Покадровое представление обнаружений, визуализированных кадров, сообщений и журналов запуска
Контроль использования и актуализация сценариев Сведения о сценариях и камерах, использующих версию модели, и массовая замена версии модели в выбранных сценариях
Программные интерфейсы Единая точка вызова операций компонента веб-интерфейсом и интеграционными клиентами Платформы 4.0
Общесистемные средства Хранение метаданных, объектное хранилище файлов моделей и результатов, обмен сообщениями и очередь задач

Таблица 1.1.1 — Функциональные блоки компонента.

flowchart TB UI["Веб-интерфейс
Платформы 4.0"] subgraph MM["LPI-VAP-MM"] direction TB CAT["Каталог моделей
и версий"] CHECK["Конвертация
и автоматическая проверка"] ASSET["Проверочные данные"] RUN["Проверочные запуски
и результаты"] CAT --> CHECK CHECK --> CAT ASSET --> RUN CAT --> RUN RUN --> CAT end UI --> CAT UI --> ASSET UI --> RUN CORE["LPI-VAP-CORE
доступ, камеры"] <--> CAT CAT --> RS["LPI-VAP-RS
сценарии"] CAT --> INF["Исполняющее ядро
видеоаналитики"]

Схема 1.1 — Место LPI-VAP-MM в Платформе 4.0.

1.2. Программное обеспечение, необходимое для функционирования программы

Компонент исполняется на серверных вычислительных средствах в составе Платформы 4.0 и поставляется набором контейнерных образов. Состав программного обеспечения приведён для целевого контура заказчика. Конкретные версии образов, драйверов и библиотек должны быть зафиксированы в формуляре целевой поставки и согласованы между собой.

Уровни программного обеспечения, необходимого для функционирования компонента, приведены на схеме 1.2; состав каждого уровня раскрыт в п. 1.2.1–1.2.5.

flowchart TB L1["Уровень 1. Технические средства узлов кластера
серверы x86-64, графические ускорители, накопители, сеть
(раздел 4)"] L2["Уровень 2. Системное программное обеспечение
«Московская серверная операционная система», среда исполнения контейнеров,
Kubernetes, драйвер NVIDIA и средства предоставления ускорителей, CUDA, cuDNN, TensorRT
(п. 1.2.1)"] L3["Уровень 3. Общесистемные сервисы Платформы 4.0
PostgreSQL, MinIO, Apache Kafka, Redis, nginx и веб-шлюз
(п. 1.2.2)"] L4["Уровень 4. Среды исполнения и библиотеки
Python, Node.js, FastAPI, Celery, PyTorch, ONNX, OpenCV и другие
(п. 1.2.3)"] L5["Уровень 5. Составные части LPI-VAP-MM
реестр моделей, хранилища проверочных данных и запусков,
менеджер проверки, исполнитель проверок и конвертеры
(п. 1.1, подраздел 3.3)"] L6["Уровень 6. Клиентское программное обеспечение
веб-браузер рабочего места пользователя
(п. 1.2.5)"] EXTC["Смежные компоненты и внешние средства
LPI-VAP-CORE (единая точка входа через СУДИР),
LPI-VAP-RS и исполняющее ядро видеоаналитики
(п. 1.2.4)"] L1 --> L2 --> L3 --> L4 --> L5 --> L6 L5 <--> EXTC

Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента.

1.2.1. Системное программное обеспечение

Наименование Версия Назначение
«Московская серверная операционная система» По спецификации поставки Целевая серверная операционная система эксплуатации мастер-ноды и вычислительных нод
Среда исполнения контейнеров По спецификации поставки Изолированное исполнение составных частей кластера в контейнерах
Kubernetes По спецификации поставки Оркестрация составных частей в кластере: размещение по типам узлов, контроль готовности, перезапуск при отказе, управление ресурсами
Драйвер NVIDIA Совместимая с CUDA 12.6 версия по спецификации поставки Использование графических ускорителей вычислительных нод при конвертации и проверке моделей
NVIDIA Container Toolkit По спецификации поставки Предоставление графических ускорителей контейнерам конвертации, валидации и проверочных запусков
CUDA, cuDNN, TensorRT Не ниже 12.6, 9.5 и 10.4 соответственно (в составе согласованных образов) Подготовка исполняемых артефактов и исполнение моделей на графических ускорителях
Служба синхронизации системного времени В составе целевой операционной системы Единая шкала времени для состояний версий, запусков и записей журналов на всех узлах

Прикладные сервисы каталога моделей, проверочных данных и запусков исполняются на процессорах мастер-ноды. Графические ускорители требуются вычислительным нодам, выполняющим конвертацию, валидацию, контрольный инференс и проверочные запуски. Требования к техническим средствам приведены в разделе 4.

1.2.2. Общесистемные (инфраструктурные) сервисы Платформы 4.0

Наименование Версия Использование компонентом
PostgreSQL Не ниже 17.5 Раздельное хранение метаданных моделей, проверочных данных и запусков
MinIO (S3-совместимое хранилище) Не ниже выпуска RELEASE.2022-10-24 Хранение пакетов и файлов моделей, изображений, видеозаписей и артефактов проверок
Apache Kafka (режим KRaft) Не ниже 3.7.0 Передача событий жизненного цикла моделей между составными частями Платформы 4.0
Apache Kafka изолированного контура проверки Не ниже 3.4.0 Передача заданий и состояний асинхронных проверок внутри контура
Redis изолированного контура проверки Не ниже 7 Брокер очереди задач и временное состояние контура проверки
nginx и веб-шлюз Платформы 4.0 nginx не ниже 1.29.0; версия шлюза — по спецификации поставки Единая точка доступа, маршрутизация HTTP-, API- и WebSocket-запросов

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

1.2.3. Среды исполнения и системные библиотеки

Среда исполнения Версия Составные части
Python Не ниже 3.11 Реестр моделей, хранилища проверочных данных и запусков, прикладной API; исполнитель асинхронных проверок и конвертеры моделей — не ниже 3.12
Node.js, npm Не ниже 20.18.0 и 10.8.2 соответственно Веб-среда настройки и запуска проверок моделей

Основные библиотеки и фреймворки:

Библиотека или средство Версия Назначение
FastAPI Не ниже 0.115 Реализация программных интерфейсов составных частей
Uvicorn Не ниже 0.13.3 ASGI-сервер приложений
Pydantic Не ниже 2 Описание и проверка структур данных программных интерфейсов
Tortoise ORM, Aerich Не ниже 0.21.6 и 0.7.2 соответственно Доступ к PostgreSQL и управление схемами данных
aiokafka Не ниже 0.11 Асинхронное взаимодействие с Apache Kafka
MinIO SDK Не ниже 7.2 Работа с S3-совместимым объектным хранилищем
Celery Не ниже 5.3.6 Постановка в очередь и выполнение проверок моделей
PyTorch Не ниже 2.7.0+cu126 Загрузка и исполнение моделей в вычислительном контуре
ONNX Не ниже 1.17.0 Разбор и проверка моделей формата ONNX
OpenCV, NumPy Не ниже 4.11.0 и 1.26.4 соответственно Чтение и обработка изображений, видеокадров и числовых массивов
vzrpc Не ниже 2.0.23 Реализация внутренних типизированных программных интерфейсов

Компонент принимает пакеты моделей форматов ONNX, PyTorch, TensorFlow и TensorRT. Наличие среды исполнения конкретного исходного формата определяется выбранным образом конвертера; её точная версия должна быть указана в формуляре целевой поставки.

1.2.4. Смежные компоненты Платформы 4.0 и внешние программные средства

Компонент или программное средство Обозначение Взаимодействие
Компонент среды разработки сценариев видеоаналитики LPI-VAP-RS Получает опубликованные модели и версии; предоставляет сведения о сценариях, использующих выбранную модель; принимает массовое обновление версии модели в сценариях
Центральный модуль управления данными и распределёнными вычислениями LPI-VAP-CORE Предоставляет общий веб-интерфейс и единую точку входа; взаимодействует с СУДИР, формирует пользовательский контекст с ролью и полномочиями и передаёт его защищённым запросам к LPI-VAP-MM; применяет опубликованные сценарии с выбранными версиями моделей
Исполняющее ядро видеоаналитики В составе Платформы 4.0 Получает подготовленные артефакты опубликованных версий и исполняет модели при обработке рабочих видеопотоков
Общий веб-интерфейс и API-шлюз В составе Платформы 4.0 Предоставляет пользователю экранные формы и маршрутизирует запросы к сервисам компонента

Самостоятельное взаимодействие LPI-VAP-MM с СУДИР и регистрация компонента как отдельного OIDC-клиента не предусматриваются. Аутентификацию пользователя через СУДИР выполняет LPI-VAP-CORE; компонент проверяет переданные в пользовательском контексте полномочия на каждую защищённую операцию.

Исполнение опубликованных моделей на рабочих видеопотоках, управление камерами и фиксация событий не входят в границу ответственности LPI-VAP-MM.

1.2.5. Клиентское программное обеспечение

Рабочее место пользователя должно иметь сетевой доступ к веб-интерфейсу Платформы 4.0 и веб-браузер с поддержкой HTML5, JavaScript и WebSocket. Могут использоваться Google Chrome версии не ниже 80, Яндекс.Браузер или Mozilla Firefox сопоставимой поддерживаемой версии. Установка исполняемых частей компонента на рабочее место пользователя не требуется.

1.3. Языки программирования

Язык Где применён
Python Серверная бизнес-логика реестра моделей, хранилищ проверочных данных и запусков, исполнителя проверок и конвертеров
TypeScript, JavaScript Пользовательский веб-интерфейс и серверные средства веб-среды проверки моделей
HTML, CSS Представление и оформление экранных форм
SQL Схемы и операции с данными PostgreSQL
JSON Метаданные моделей, параметры программных интерфейсов, конфигурация заданий и результаты проверок
YAML Конфигурации развёртывания контейнерных сервисов
Protocol Buffers Декларативное описание внутренних типизированных программных интерфейсов

Точные версии программного обеспечения и библиотек целевой поставки указываются в формуляре.

2. Функциональное назначение

Компонент управления моделями видеоаналитики (LPI-VAP-MM) предназначен для централизованной подготовки моделей видеоаналитики к применению в Платформе 4.0. Компонент объединяет в одном контуре ведение версионного каталога моделей, автоматическую проверку загруженных пакетов и проверку моделей на предварительно подготовленных данных. Классы решаемых задач приведены в подразделе 2.1, состав входных и выходных данных — в разделах 6 и 7.

Результатом работы компонента является опубликованная версия модели с проверенными файлами, метаданными и категориями. Непосредственное исполнение этой версии на рабочих видеопотоках выполняется исполняющим ядром видеоаналитики и не относится к функциям LPI-VAP-MM. Компонент также не подключает камеры, не распределяет видеопотоки и не регистрирует события или нарушения промышленного контура.

2.1. Классы решаемых задач

Класс задач Функции компонента Результат
Ведение каталога моделей Создание, просмотр, редактирование, поиск и фильтрация моделей; группировка по разделам; хранение типа задачи, архитектуры и поисковых атрибутов в виде пар «ключ — значение» Структурированный каталог моделей видеоаналитики
Управление версиями Создание именованной версии; просмотр истории версий; создание новой версии копированием последней версии без повторной загрузки и проверки исходного ZIP-файла Версионная история модели и отдельная рабочая версия
Загрузка пакета модели Приём ZIP-файла модели, его распаковка, проверка целостности и регистрация файлов в объектном хранилище Загруженный комплект файлов, связанный с версией модели
Валидация и конвертация Проверка формата и структуры пакета, целостности весов и возможности загрузки модели; подготовка исполняемых артефактов поддерживаемого формата; фиксация состояния и ошибок обработки Проверенная версия либо диагностические сведения о причине отказа
Ведение метаданных Редактирование полного и краткого наименований объектов, типа задачи, архитектуры, классов детекции, отображаемых цветов и дополнительных атрибутов Метаданные, необходимые для поиска, отображения и применения модели
Комментарии и прослеживаемость Добавление и просмотр комментариев к модели и версии с фиксацией автора и времени История обсуждения и уточнений по модели
Управление архивом Перемещение моделей и версий в архив, просмотр архивных записей, восстановление и регламентное удаление после проверки допустимости операции Исключение неактуальных объектов из рабочего каталога с возможностью восстановления в пределах срока хранения
Подготовка проверочных данных Создание и версионирование наборов данных; загрузка изображений JPG, PNG и видеозаписей MP4; группировка файлов и хранение относящихся к ним метаданных и зон Версия набора данных, пригодная для воспроизводимой проверки модели
Проверка модели Создание асинхронного запуска выбранной версии модели на выбранной версии набора данных; получение состояния, прогресса, журналов и результатов Зафиксированный результат проверки модели на контрольных медиаданных
Анализ результатов Покадровый просмотр результатов детекции с рамками объектов, наименованиями категорий и значениями уверенности распознавания Визуальное подтверждение либо выявление ошибок работы версии модели
Публикация Перевод проверенной версии в состояние готовности и передача сведений о ней смежным компонентам Версия модели, доступная для выбора и применения в сценариях
Контроль использования Получение перечня сценариев и камер, использующих модель и её версию; защита используемых версий от недопустимого удаления Сведения о зависимостях модели в Платформе 4.0
Актуализация сценариев Выбор сценариев, использующих прежнюю версию, и массовая замена ссылки на требуемую версию модели Подготовленные версии сценариев с актуализированной зависимостью
Программное управление Программные интерфейсы создания, чтения, изменения, поиска, архивирования моделей и ассетов, загрузки файлов, создания задач обработки и получения их состояний и результатов Выполнение операций компонента через API Платформы 4.0

Основной функциональный цикл показан на схеме 2.1.

flowchart TB ZIP["ZIP-пакет модели"] --> VER["Создание версии
и регистрация метаданных"] VER --> CHECK["Проверка целостности,
валидация и конвертация"] CHECK -->|ошибка| FIX["Исправление пакета
или метаданных"] FIX --> VER CHECK -->|успешно| TEST["Проверка на версии
набора данных"] ASSET["JPG, PNG, MP4
и описания зон"] --> TEST TEST -->|результат не принят| FIX TEST -->|результат принят| PUB["Публикация версии"] PUB --> RS["Выбор модели
в сценариях"] RS --> INF["Исполнение на видеопотоках
смежным компонентом"]

Схема 2.1 — Функциональный цикл подготовки версии модели.

2.2. Сведения о функциональных ограничениях на применение

Ограничение Условие применения
Граница назначения Компонент подготавливает и публикует модели, но не исполняет их на рабочих видеопотоках, не управляет камерами и не формирует промышленные события. Эти функции выполняются смежными компонентами Платформы 4.0
Поддерживаемые задачи В состав поставки LPI-VAP-MM включена работа с моделями детекции и классификации. Применение моделей для иных типов задач допускается только после включения соответствующих средств загрузки, конвертации, проверки и исполнения в целевую поставку
Форматы моделей Для загрузки предусмотрены ZIP-пакеты моделей ONNX, PyTorch, TensorFlow и TensorRT. Указание формата не гарантирует совместимость произвольной архитектуры: структура пакета, версия фреймворка и состав файлов должны соответствовать поддерживаемому протоколу модели и образу конвертера
Состояние версии Версия становится доступной смежным компонентам после успешной проверки и публикации. Версия с незавершённой обработкой или ошибкой валидации не должна применяться в новых сценариях
Копирование версии Копированием создаётся новая версия на основе последней версии выбранной модели. Для загрузки иного комплекта весов или файлов необходимо создать версию с загрузкой пакета
Проверочные данные Поддерживаются предварительно загруженные версии наборов данных с файлами JPG, PNG и MP4. Проверочный запуск использует зафиксированные версии модели и ассета; последующее изменение набора данных не меняет уже сохранённый результат запуска
Назначение проверки Проверка на ассетах подтверждает техническую работоспособность модели и позволяет визуально оценить результат на выбранных данных, но не заменяет проверку качества модели на репрезентативной выборке заказчика
Асинхронная обработка Конвертация, валидация и проверочные запуски выполняются асинхронно. При занятости исполнителей задание ожидает обработки в очереди; пользователь получает состояние и прогресс выполнения
Вычислительные ресурсы Для конвертации и проверки должны быть доступны совместимые GPU, драйвер NVIDIA, CUDA, cuDNN, TensorRT и ресурсы не ниже приведённых в разделе 4. Недостаток видеопамяти, оперативной памяти или дискового пространства может привести к отказу обработки либо увеличению её времени
Доступность сервисов Для полного функционального цикла требуются реестр моделей, хранилища ассетов и запусков, исполнитель и конвертеры, PostgreSQL, объектное хранилище, Kafka и Redis. При отказе зависимости ранее опубликованные модели могут продолжать исполняться промышленным контуром, но операции подготовки и проверки становятся частично или полностью недоступны
Публикация и сценарии Выбор версии модели и массовое обновление её использования требуют доступности LPI-VAP-RS. Для каждого успешно изменённого графа хранилище сценариев создаёт новую опубликованную версию; частично выполненная групповая операция должна контролироваться по состоянию каждого выбранного сценария
Архивирование и удаление Перед удалением модели или версии проверяется её использование сценариями и камерами. Используемую версию следует сначала исключить из соответствующих сценариев и назначений. Архивные объекты восстанавливаются только до их регламентного физического удаления
Разграничение доступа Операции доступны аутентифицированным пользователям в соответствии с ролевой моделью Платформы 4.0. Пользователь (оператор) просматривает каталог, проверочные данные и результаты; администратор дополнительно ведёт каталог и данные, запускает проверки, публикует версии и работает с архивом. Наименования ролей могут уточняться, а полномочия — детализироваться настройками целевой поставки

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

  • максимальный размер ZIP-пакета модели и отдельного файла модели;
  • максимальный объём, количество файлов и длительность видеозаписи в версии проверочного набора данных;
  • поддерживаемые видеокодеки внутри контейнера MP4;
  • перечень поддерживаемых архитектур моделей и допустимые версии ONNX, PyTorch, TensorFlow и TensorRT;
  • предельное количество одновременно выполняемых конвертаций и проверочных запусков.

2.3. Показатели назначения

При соблюдении требований к вычислительным ресурсам компонент должен обеспечивать показатели, приведённые в таблице 2.3.1.

Показатель Требование
Задержка отклика пользовательского интерфейса при открытии списка моделей и версий Не более 5 секунд
Время конвертации и валидации одной загруженной модели Не более 60 минут

Таблица 2.3.1 — Требования к показателям назначения.

Показатели должны обеспечиваться при исправной работе инфраструктурных сервисов и предоставлении компоненту ресурсов не ниже приведённых в разделе 4. Версия модели должна соответствовать поддерживаемому формату и располагаться в доступном объектном хранилище.

Показатели обеспечиваются при следующих условиях:

  • время открытия списка моделей и версий относится к каталогу штатного объёма и рабочему месту, соответствующему подразделу 4.2;
  • время конвертации и валидации отсчитывается от начала обработки загруженного пакета до получения результата проверки и не включает ожидание в очереди при одновременном выполнении нескольких операций;
  • число одновременно выполняемых загрузок, конвертаций и проверок не превышает значений, на которые рассчитана конфигурация технических средств (подразделы 4.3 и 4.4).

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

3. Описание логической структуры

3.1. Алгоритм программы

Логика компонента построена вокруг двух основных сущностей: модели и версии модели. Модель объединяет наименование, тип задачи, архитектуру, раздел, атрибуты и историю версий. Версия содержит собственное обозначение, файлы, категории, метаданные, состояние проверки и признаки публикации и архива. Проверочные наборы данных и запуски также являются версионными сущностями и ссылаются на конкретную версию модели.

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

Состояние Смысл
created Запись версии создана, пакет ещё не обработан
invalid_archive Архив не прошёл базовую проверку: повреждён, имеет неверный формат или не содержит обязательных данных
unpacking_archive Выполняется извлечение файлов из архива в объектное хранилище
unpack_done Базовая проверка и распаковка завершены успешно; версия может оставаться черновой либо быть передана на валидацию
unpack_error При извлечении файлов из архива произошла ошибка
in_validation Выполняются конвертация и проверка структуры файлов модели
failed_validation Конвертация или валидация завершилась ошибкой
in_testing Выполняется контрольная загрузка и запуск модели
failed_testing Контрольная загрузка или запуск модели завершились ошибкой
tested Конвертация, валидация и контрольный запуск завершены успешно
failed Обработка завершилась ошибкой, не классифицированной как ошибка архива, распаковки, валидации или тестирования

Таблица 3.1.1 — Состояния автоматической обработки версии модели.

3.1.1. Загрузка модели и создание версии

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

  1. Пользователь выбирает существующую модель либо создаёт карточку модели с указанием раздела, типа задачи, архитектуры, описания и поисковых атрибутов.
  2. Веб-интерфейс через API-шлюз передаёт сведения в svr-models-registry. Реестр создаёт запись модели или версии в PostgreSQL и присваивает ей идентификатор.
  3. Пользователь передаёт ZIP-пакет. Реестр потоково сохраняет архив в MinIO и инициирует его извлечение в префикс <модель>/<версия>/.
  4. Реестр проверяет структуру архива и наличие обязательных файлов протокола модели. Для используемого формата пакета из model_info.json извлекаются сведения о модели, а из coco_categories.json — категории и параметры их отображения.
  5. Метаданные файлов, категории и результат распаковки сохраняются в PostgreSQL; сами веса, конфигурации и вспомогательные файлы остаются в объектном хранилище.
  6. При обработке архива реестр последовательно устанавливает состояния unpacking_archive и unpack_done. Ошибка базовой проверки устанавливает invalid_archive, ошибка извлечения файлов — unpack_error.
  7. После unpack_done черновая версия ожидает решения пользователя. При выборе команды «Сохранить и валидировать» признак публикации устанавливается и реестр передаёт в Kafka событие model_version_uploaded, которое ставит версию в очередь конвертации и валидации. Для версии, уже отмеченной для публикации, событие передаётся сразу после успешной распаковки.
  8. Причина каждого неуспешного состояния сохраняется в диагностическом поле; частично извлечённые данные удаляются фоновым заданием.

При создании версии копированием веб-интерфейс вызывает операцию CreateCloneModelVersionFromLastModel. Реестр формирует новую версию на основе последней версии выбранной модели и переносит необходимые метаданные и ссылки на файлы без повторной передачи ZIP-пакета и полного цикла его первичной проверки. Новая версия получает собственный идентификатор и может быть отредактирована независимо от исходной.

sequenceDiagram actor U as Пользователь participant UI as Веб-интерфейс participant MR as svr-models-registry participant DB as PostgreSQL participant S3 as MinIO participant K as Kafka Платформы 4.0 U->>UI: Создать модель или версию UI->>MR: Метаданные модели и версии MR->>DB: Создать записи каталога alt Загрузка пакета U->>UI: Передать ZIP-пакет UI->>MR: Поток файла MR->>S3: Сохранить и извлечь архив MR->>S3: Прочитать model_info.json и категории MR->>DB: Сохранить файлы, категории и unpack_done alt Выбрано «Сохранить и валидировать» MR->>K: model_version_uploaded else Версия сохранена как черновик MR-->>UI: Состояние unpack_done end else Копирование последней версии UI->>MR: CreateCloneModelVersionFromLastModel MR->>DB: Создать новую версию MR->>S3: Подготовить артефакты новой версии end MR-->>UI: Идентификатор и состояние версии

Схема 3.1 — Загрузка пакета и создание версии модели.

3.1.2. Конвертация и валидация модели

Автоматическая проверка начинается после получения inf-flows-manager события model_version_uploaded. Обработка одной версии включает следующие этапы:

  1. Менеджер переводит версию в состояние in_validation и загружает её файлы из реестра в изолированный рабочий каталог.
  2. По описанию модели, её архитектуре и требуемому профилю исполнения выбирается средство конвертации. Для поддерживаемых семейств используются сервисы yolo-conversion или mm-conversion; обращение выполняется по внутреннему HTTP-интерфейсу либо через Unix domain socket в зависимости от профиля развёртывания.
  3. Конвертер запускает отдельный процесс, преобразует исходные веса и формирует требуемые ONNX-, TensorRT- или иные исполняемые артефакты. Полученные файлы передаются обратно в объектное хранилище реестра.
  4. Менеджер проверяет состав файлов, метаданные, категории и возможность загрузки сформированного представления модели.
  5. После успешной валидации версия переводится в состояние in_testing и для неё выполняется контрольный инференс. Этот запуск проверяет техническую работоспособность, но не оценивает точность модели на данных заказчика.
  6. При успешном контрольном запуске устанавливается состояние tested. Ошибка конвертации или проверки файлов фиксируется как failed_validation, ошибка контрольного инференса — как failed_testing. Для ошибки, которую нельзя отнести к этим этапам, используется итоговое состояние failed. Этап и причина передаются отдельным диагностическим сообщением.
  7. Каждое изменение состояния передаётся в Kafka сообщением model_version_change_status. Реестр сохраняет состояние в PostgreSQL и публикует ws_model_version_change_status для обновления интерфейса.
  8. Временный рабочий каталог удаляется независимо от результата обработки.

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

flowchart TD EVT["model_version_uploaded"] --> LOAD["Загрузка файлов
из реестра"] LOAD --> CONV["Конвертация всех
требуемых профилей"] CONV -->|ошибка| FC["failed"] CONV --> VAL["Проверка файлов
и метаданных"] VAL -->|ошибка| FV["failed"] VAL --> TEST["Контрольный
инференс"] TEST -->|ошибка| FT["failed"] TEST -->|успешно| OK["tested"] FC --> STATUS["Сохранение состояния
и диагностического сообщения"] FV --> STATUS FT --> STATUS OK --> STATUS

Схема 3.2 — Конвертация и автоматическая проверка версии модели.

3.1.3. Проверка модели на наборе данных

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

  1. Пользователь выбирает версию модели и опубликованную версию проверочного набора данных и создаёт запуск.
  2. svr-launch-storage запрашивает у svr-models-registry и svr-asset-storage метаданные выбранных версий, перечень медиафайлов и ссылки на относящиеся к ним описания зон.
  3. Хранилище запусков создаёт в PostgreSQL запись запуска с уникальным идентификатором и контекст первого медиафайла, затем вызывает nr-sbx-backend для создания изолированной сессии типа model.
  4. Бэкенд сохраняет временное состояние сессии в Redis, подготавливает рабочий каталог и передаёт задачу process_session исполнителю nr-sbx-celery.
  5. Исполнитель получает артефакты модели, при необходимости вызывает nr-sbx-yolo-conversion или nr-sbx-mm-conversion, формирует проверочный граф для типа задачи и обрабатывает изображение либо кадры видеозаписи.
  6. Прогресс поступает через Kafka контура проверки в бэкенд. Бэкенд передаёт состояние в основной Kafka, откуда его получает svr-launch-storage.
  7. Для набора из нескольких файлов хранилище запусков после завершения очередного файла публикует команду continue_launch; обработка повторяется для следующего файла.
  8. Кадры до и после визуализации, журналы, сообщения и события детекции сохраняются в MinIO под идентификатором запуска. Метаданные запуска, состояния файлов и ссылки на артефакты сохраняются в PostgreSQL.
  9. После обработки всех файлов запуск получает состояние completed. Ошибка переводит его в failed; пользователь также может остановить выполняемый запуск или повторить его.
  10. Веб-интерфейс запрашивает у хранилища запусков количество кадров, исходный и визуализированный кадры, журналы, сообщения и события и отображает рамки, категории и уверенность распознавания.
sequenceDiagram actor U as Пользователь participant UI as Веб-интерфейс participant LS as svr-launch-storage participant MR as svr-models-registry participant AS as svr-asset-storage participant SB as nr-sbx-backend participant CW as nr-sbx-celery participant S3 as MinIO participant KS as Kafka контура проверки participant K as Kafka Платформы 4.0 U->>UI: Запустить проверку модели на ассете UI->>LS: StartLaunch(model_version, asset_version) LS->>MR: GetModelVersion LS->>AS: GetAssetVersion LS->>SB: start_launch_session SB->>CW: process_session loop Для каждого медиафайла CW->>KS: Прогресс обработки KS-->>SB: Состояние и результат задачи SB->>S3: Результаты, кадры и журналы SB->>K: change_launch_status K-->>LS: Состояние запуска opt Есть следующий файл LS->>K: continue_launch K-->>SB: Продолжить запуск end end LS-->>UI: completed или failed UI->>LS: Запрос кадров и результатов LS->>S3: Чтение артефактов LS-->>UI: Данные визуализации

Схема 3.3 — Проверка модели на версии ассета.

3.1.4. Публикация и применение версии модели

После достижения состояния tested реестр публикует событие model_version_ready, позволяющее потребителям подготовить файлы версии. Версия модели может быть опубликована после завершения автоматической проверки и принятия результата пользователем. При публикации svr-models-registry устанавливает признак is_published и обновляет выдаваемый через API перечень опубликованных версий. При запуске реестр также передаёт потребителям актуальный снимок опубликованного каталога событием models_registry_ready. После публикации версия становится доступна LPI-VAP-RS для выбора в логических блоках сценария.

Исполняющее ядро получает уведомления model_version_ready, model_version_updated и model_version_deleted. При необходимости оно запрашивает у реестра метаданные и получает файлы из объектного хранилища в локальный кэш. Фактическая загрузка модели в GPU и обработка кадров происходят только при исполнении сценария, в котором выбрана эта версия.

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

  1. Реестр получает из хранилища сценариев перечень опубликованных версий, использующих выбранную модель, и отображает его пользователю.
  2. Пользователь выбирает новую опубликованную версию модели и сценарии для обновления.
  3. inf-flows-manager ставит групповую операцию в очередь и последовательно загружает из svr-scenario-storage граф каждого выбранного сценария.
  4. Менеджер заменяет значение версии модели в соответствующих логических блоках и возвращает изменённый граф в хранилище сценариев.
  5. Для каждого успешно изменённого графа хранилище создаёт новую опубликованную версию сценария и уведомляет смежные компоненты. Состояние групповой операции передаётся веб-интерфейсу через Kafka и WebSocket.

Перед архивированием или удалением реестр запрашивает использование версии в сценариях и на камерах. Используемая версия не должна быть физически удалена до устранения зависимостей. Архивирование исключает модель или версию из рабочего каталога, но сохраняет возможность восстановления в пределах срока хранения. После истечения срока и повторной проверки допустимости объект может быть удалён регламентным заданием; об изменении реестр уведомляет потребителей через Kafka.

3.2. Используемые методы

Метод Реализация в компоненте Назначение
Иерархическая каталогизация Разделы моделей и ассетов, карточки сущностей, атрибуты «ключ — значение», фильтрация по названию, версии и категории Организация и поиск большого числа моделей и проверочных данных
Версионирование Неизменяемые идентификаторы версий, отдельные признаки текущей, неопубликованной, опубликованной и архивной версии; копирование последней версии Прослеживаемость изменений и воспроизводимость проверок
Потоковая загрузка Передача ZIP без размещения целого файла в памяти приложения, извлечение средствами объектного хранилища, отдельная загрузка файлов через временные или подписанные URL Загрузка крупных пакетов и медиаданных
Проверка целостности Контроль ZIP, обязательных файлов, метаданных, категорий, структуры весов и результата загрузки модели Раннее обнаружение повреждённых или несовместимых пакетов
Конвертация Выбор конвертера по семейству модели, отдельный процесс преобразования, формирование ONNX-, TensorRT- и других профилей, повторное использование готовых артефактов Подготовка модели к целевой среде исполнения
Контрольный инференс Загрузка подготовленной модели и минимальный тест исполнения после файловой валидации Подтверждение технической работоспособности версии
Асинхронная обработка Kafka для событий жизненного цикла, Redis и Celery для очереди проверочных запусков, отдельные состояния и прогресс задач Выполнение длительных операций без блокировки пользовательского запроса
Версионирование ассетов Фиксация состава медиафайлов, папок, зон и метаданных в отдельной версии набора Повторяемая проверка разных моделей на одинаковых входных данных
Покадровая визуализация Сохранение исходного и визуализированного кадров, событий, сообщений и журналов для каждого шага Анализ результата детекции и диагностика модели
Раздельное хранение Метаданные и связи — PostgreSQL; бинарные пакеты, медиа и результаты — MinIO; временные сессии — Redis и рабочие каталоги Согласованное хранение структурированных и объёмных данных
Событийная синхронизация Снимок опубликованного реестра и события готовности, обновления, удаления и смены состояния через Kafka Актуализация интерфейса, сценариев и исполняющего ядра
Контроль ссылочной целостности Запрос использования модели в сценариях и на камерах до архивирования или удаления Предотвращение удаления используемых версий
Пакетное обновление Очередь операций по имени модели, последовательное изменение выбранных графов и создание новых версий сценариев Массовая замена версии модели с отдельным контролем результата

3.3. Структура программы с описанием функций составных частей

Компонент реализован как совокупность контейнерных сервисов. Бизнес-состояние распределено между тремя специализированными хранилищами, а длительные вычисления вынесены в менеджер проверки, исполнителя и конвертеры.

flowchart TB UI["Веб-интерфейс Платформы 4.0"] --> GW["API-шлюз"] subgraph MM["LPI-VAP-MM — управление моделями"] MR["svr-models-registry
каталог и версии"] AS["svr-asset-storage
проверочные данные"] LS["svr-launch-storage
запуски и результаты"] FM["inf-flows-manager
валидация и обновление сценариев"] CONV["yolo-conversion / mm-conversion"] SB["nr-sbx-backend
сессии проверки"] CEL["nr-sbx-celery
исполнение на ассетах"] SCONV["nr-sbx-*-conversion"] end GW --> MR GW --> AS GW --> LS GW --> FM MR --> DBM[("PostgreSQL
модели")] AS --> DBA[("PostgreSQL
ассеты")] LS --> DBL[("PostgreSQL
запуски")] MR --> S3[("MinIO")] AS --> S3 LS --> S3 MR <--> K["Kafka Платформы 4.0"] KS["Kafka контура проверки"] K --> FM FM --> CONV FM --> MR LS --> SB SB --> R["Redis"] SB --> CEL CEL --> SCONV CEL --> KS KS --> SB SB --> S3 SB <--> K FM --> SS["LPI-VAP-RS
хранилище сценариев"] MR --> SS K --> INF["Исполняющее ядро
видеоаналитики"] INF --> MR INF --> S3

Схема 3.4 — Логическая структура LPI-VAP-MM и внешние связи.

Составная часть Основные функции Входные данные Выходные данные и хранилища
svr-models-registry Каталог моделей и версий; загрузка файлов; метаданные и категории; состояния; публикация; комментарии; архив; проверка использования Команды UI/API, ZIP и отдельные файлы, сообщения о состоянии, запросы смежных сервисов PostgreSQL реестра; bucket models-registry; события жизненного цикла в Kafka; API-сведения о моделях
inf-flows-manager Конвертация, файловая валидация и контрольный инференс; получение списка версий; пакетная замена модели в графах сценариев model_version_uploaded, файлы реестра, запрос массового обновления, графы сценариев model_version_change_status, преобразованные артефакты, обновлённые графы и состояния групповых операций
yolo-conversion, mm-conversion Запуск изолированных процессов конвертации основного контура Команда конвертации, исходные веса и конфигурации ONNX-, TensorRT- и иные подготовленные артефакты; состояние процесса
svr-asset-storage Каталог и версии ассетов; загрузка JPG, PNG, MP4; папки, зоны, атрибуты, комментарии и архив Команды UI/API, медиафайлы и JSON-описания зон PostgreSQL ассетов; bucket asset-storage; ссылки и метаданные файлов
svr-launch-storage Создание, остановка, повтор и учёт запусков; последовательность файлов; прогресс; выдача кадров, журналов и событий Идентификаторы версии модели и ассета, состояния sandbox, команды пользователя PostgreSQL запусков; bucket launch-storage; Kafka-прогресс; данные визуализации
nr-sbx-backend Создание и закрытие сессий; подготовка входных файлов; диспетчеризация Celery; передача состояний между контурами Kafka Команда start_launch_session, ссылки на медиа и зоны, прогресс исполнителя Состояние сессии в Redis, Celery-задачи, change_launch_status, артефакты запуска
nr-sbx-celery Асинхронное выполнение модели на изображениях и видеозаписях, формирование покадровых результатов Celery-задача, модель, проверочный граф, медиафайл и зоны Кадры, визуализации, журналы, сообщения, события и прогресс обработки
nr-sbx-yolo-conversion, nr-sbx-mm-conversion Подготовка отсутствующих представлений модели в изолированном контуре проверки Команда исполнителя, файлы модели Подготовленные артефакты в общем каталоге модели; состояние процесса

Таблица 3.3.1 — Функции составных частей LPI-VAP-MM.

3.4. Связи программы с другими программами

Связанная программа или сервис Направление относительно LPI-VAP-MM Передаваемые данные Протокол и инициатор
Веб-интерфейс и API-шлюз Платформы 4.0 Двунаправленное Команды каталога, файлы, фильтры, состояния, прогресс и результаты HTTPS; REST/JSON и Twirp/HTTP с protobuf; запрос пользователя или внешнего клиента; WebSocket для асинхронных уведомлений
Компонент среды разработки сценариев видеоаналитики LPI-VAP-RS (svr-scenario-storage) Двунаправленное Опубликованные модели и версии; перечень использующих модель сценариев; графы до и после массовой замены версии REST/JSON и Twirp/HTTP; запрос реестра или inf-flows-manager; события Kafka при изменении опубликованных сценариев
LPI-VAP-CORE, хранилище камер Исходящее обращение и входящие ссылки Идентификаторы сценариев и камер, использующих версию модели REST/JSON; запрос реестра при просмотре использования и перед удалением
Исполняющее ядро видеоаналитики Преимущественно исходящий поток уведомлений; входящее чтение реестра События готовности, обновления и удаления версии; метаданные и файлы опубликованных моделей Kafka; REST/HTTP и S3 при загрузке модели по событию или при запуске сценария
PostgreSQL Двунаправленное Модели, версии, категории, ассеты, запуски, комментарии, состояния и связи PostgreSQL wire protocol; запрос соответствующего прикладного сервиса
MinIO или совместимое S3-хранилище Двунаправленное ZIP-пакеты, веса, конфигурации, изображения, видеозаписи, зоны, кадры и журналы S3 API; потоковая передача, прямой внутренний запрос или временная подписанная ссылка
Apache Kafka Двунаправленное События загрузки, готовности, изменения и удаления моделей; состояния валидации и запусков; команды продолжения обработки; уведомления UI Kafka protocol; публикация при изменении состояния и потребление фоновыми обработчиками
Redis и Celery Двунаправленное внутри контура проверки Состояния пользовательских сессий, очередь задач, идентификаторы и результаты выполнения Redis protocol и Celery; постановка задачи nr-sbx-backend, выполнение nr-sbx-celery
Сервисы конвертации Исходящий запрос, входящий результат Команда преобразования, пути к весам и конфигурациям, идентификатор и состояние процесса Внутренний HTTP/JSON или HTTP через Unix domain socket; вызов из менеджера или исполнителя

Все служебные соединения выполняются во внутренних сетях развёртывания. Пользователю и внешним клиентам предоставляются только маршруты API-шлюза Платформы 4.0. Прямой внешний доступ к PostgreSQL, MinIO, Kafka, Redis, исполнителям и конвертерам не требуется.

4. Используемые технические средства

Компонент эксплуатируется на серверных технических средствах заказчика в составе Платформы 4.0. Выделенные серверы под компонент не требуются: составные части поставляются контейнерными образами и размещаются на узлах уже развёрнутого кластера Kubernetes Платформы 4.0 — тех же, на которых работает Центральный модуль управления данными и распределёнными вычислениями (LPI-VAP-CORE). Установка исполняемых частей компонента на рабочее место пользователя не требуется: работа выполняется через веб-браузер.

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

  • мастер-нода — прикладные сервисы каталога моделей, проверочных данных и запусков, а также используемые ими общесистемные хранилища, брокер сообщений и очередь задач;
  • вычислительная нода — менеджер проверки, конвертеры и исполнитель проверочных запусков: конвертация, валидация, контрольный инференс и выполнение модели на проверочных данных; этим составным частям необходим графический ускоритель.

Компоненту выделяется доля ресурсов этих узлов, соответствующая позиции поставки LPI-VAP-MM: 8 процессорных ядер, 16 ГБ оперативной памяти, 1000 ГБ дискового пространства и один графический ускоритель класса NVIDIA T4. Состав и назначение выделяемых ресурсов приведены в подразделе 4.3, соотношение с конфигурацией узлов Платформы 4.0 — в п. 4.3.2. Качественные требования, минимально допустимые версии программной среды и удельные величины для расчёта ёмкости приведены в подразделе 4.4 в форме «не ниже».

4.1. Серверные технические средства

4.1.1. Размещение составных частей на узлах кластера

Тип узла кластера Размещаемые составные части компонента Потребляемые ресурсы узла
Мастер-нода Реестр моделей; хранилища проверочных данных и запусков; прикладной сервис контура проверок; выделенные компоненту базы данных, бакеты объектного хранилища, топики брокера сообщений и очередь задач; маршруты веб-интерфейса и шлюза прикладных интерфейсов Процессорные ядра и оперативная память прикладных сервисов; дисковое пространство хранилищ метаданных и объектных данных компонента
Вычислительная нода Менеджер проверки моделей и сценариев, конвертеры основного контура, исполнитель проверочных запусков и конвертеры контура проверок Один графический ускоритель и его видеопамять; процессорные ядра и оперативная память операций конвертации и проверки; дисковое пространство контейнерных образов, рабочих каталогов и локального кэша моделей

Таблица 4.1.1 — Размещение составных частей компонента на узлах кластера.

Узлы кластера входят в состав инфраструктуры Платформы 4.0 и не выделяются под компонент отдельно. Веб-интерфейс, шлюз прикладных интерфейсов, средства аутентификации и разграничения доступа, PostgreSQL, объектное хранилище, брокер сообщений и очередь задач предоставляются Платформой 4.0; компонент использует в них собственные базы данных, бакеты и топики. При развёртывании на одном сервере назначения мастер-ноды и вычислительной ноды совмещаются; требуемые ресурсы при этом не изменяются.

4.1.2. Схема развёртывания

Схема развёртывания приведена на схеме 4.1. Она показывает размещение составных частей компонента на узлах кластера Платформы 4.0 и внешние связи и не задаёт количество узлов и способ резервирования.

flowchart TB USERS["Рабочие места
пользователей"] SUDIR["СУДИР"] CORE["LPI-VAP-CORE
единая точка входа
и пользовательский контекст"] subgraph MASTER["Мастер-нода кластера Платформы 4.0"] direction TB GW["Веб-интерфейс и шлюз API
(Платформа 4.0)"] APPS["Составные части LPI-VAP-MM:
реестр моделей, проверочные
данные, запуски"] DATA[("Общесистемные средства Платформы 4.0:
PostgreSQL, объектное хранилище,
брокер сообщений и очередь задач")] GW --> APPS --> DATA end subgraph COMPUTE["Вычислительная нода кластера (GPU)"] direction TB FM["Составные части LPI-VAP-MM:
менеджер проверки и конвертеры"] RUN["Исполнитель
проверочных запусков"] CACHE["Рабочие каталоги
и кэш моделей"] NRI["Видеоаналитика LPI-VAP-CORE
(остальные ускорители ноды)"] FM --> RUN --> CACHE end EXTC["Смежные компоненты:
LPI-VAP-RS и исполняющее
ядро видеоаналитики"] BACKUP["Резервное
копирование"] USERS --> CORE SUDIR <--> CORE CORE --> GW APPS --> FM FM --> DATA RUN --> DATA APPS <--> EXTC DATA --> BACKUP

Схема 4.1 — Размещение составных частей компонента на узлах кластера Платформы 4.0.

4.1.3. Требования к техническим средствам узлов

Группа технических средств Требование
Узлы кластера Физические или виртуальные серверы архитектуры x86-64, совместимые с «Московской серверной операционной системой», средствами оркестрации Kubernetes и поставляемыми контейнерными образами. Узлы предоставляются в составе инфраструктуры Платформы 4.0 и объединяются в общую серверную сеть кластера
Оркестрация Кластер Kubernetes обеспечивает размещение составных частей по типам узлов, контроль их готовности, перезапуск при отказе и управление выделяемыми ресурсами. Размещение задаётся признаками узлов: мастер-нода, вычислительная нода
Виртуализация При использовании виртуализации ресурсы выделяются без переподписки и не ниже значений подраздела 4.3; для узлов с графическими ускорителями обеспечивается проброс ускорителя в режиме прямого доступа без разделения между виртуальными машинами, миграция виртуальных машин с подключённым ускорителем не применяется
Графическая подсистема Составным частям конвертации и проверки предоставляется графический ускоритель класса NVIDIA T4, совместимый с согласованными версиями драйвера, средств предоставления ускорителей контейнерам, CUDA и TensorRT. На одну задачу конвертации или проверки выделяется отдельный ускоритель; разделение одного ускорителя между задачами и совместное использование его с видеоаналитикой Центрального модуля не применяются
Оперативная память Помимо оперативной памяти прикладных сервисов на вычислительной ноде выделяется объём не менее размера распакованного пакета наибольшей обрабатываемой модели на каждую параллельную операцию распаковки, конвертации или проверки
Дисковая подсистема Системные данные, хранилища метаданных, объектное хранилище и рабочие каталоги размещаются раздельно. Хранилища метаданных, рабочие каталоги конвертации и локальный кэш моделей размещаются на SSD; объектное хранилище пакетов моделей, проверочных данных и результатов — на носителях требуемой ёмкости. Данные сохраняются при перезапуске контейнеров и узлов
Рабочие каталоги и кэш моделей Исполнителю проверок и конвертерам контура проверок предоставляются общие рабочие каталоги и Unix-сокеты в пределах узла; для исходных пакетов, преобразованных профилей исполнения, временных файлов и локального кэша моделей выделяется отдельная область с регламентом очистки
Ресурсы контейнеров Для составных частей задаются запросы и пределы ресурсов, исключающие вытеснение как сервисов компонента, так и составных частей Центрального модуля, размещённых на тех же узлах, длительными задачами конвертации и проверки
Сетевое оборудование Обеспечиваются доступ пользователей к единой точке входа LPI-VAP-CORE по HTTPS и WebSocket, обмен между узлами кластера, передача пакетов моделей и медиафайлов между прикладными сервисами, объектным хранилищем и вычислительной нодой, а также связность со смежными компонентами Платформы 4.0. Доступ к СУДИР требуется LPI-VAP-CORE и браузеру пользователя, но не серверным составным частям LPI-VAP-MM
Синхронизация времени Все узлы синхронизируются с единым источником точного времени: от этого зависят хронология состояний версий, записей о запусках, комментариев и журналов обмена
Средства резервного копирования Резервированию подлежат хранилища метаданных, объектное хранилище пакетов моделей, проверочных данных и результатов, а также конфигурация развёртывания. Восстанавливаемые из внешних источников данные (контейнерные образы, локальный кэш моделей, временные файлы конвертации) допускается исключить
Бесперебойное питание Узлы кластера и активное сетевое оборудование подключаются к средствам бесперебойного питания, обеспечивающим корректное завершение работы хранилищ

Таблица 4.1.2 — Требования к техническим средствам узлов, на которых размещается компонент.

Количественные значения по группам таблицы 4.1.2 установлены подразделом 4.3 (ресурсы, выделяемые компоненту) и таблицей 4.4.1 (требования «не ниже») и в настоящем подразделе не повторяются.

4.1.4. Размещение данных

Группа данных Требование к размещению Порядок защиты
Метаданные моделей Постоянный том PostgreSQL реестра моделей на SSD мастер-ноды Согласованное резервное копирование с S3-бакетом models-registry
Метаданные проверочных данных Постоянный том PostgreSQL хранилища проверочных данных на SSD мастер-ноды Согласованное резервное копирование с S3-бакетом asset-storage
Метаданные запусков Постоянный том PostgreSQL хранилища запусков на SSD мастер-ноды Согласованное резервное копирование с S3-бакетом launch-storage
Пакеты моделей и исполняемые артефакты S3-совместимый бакет models-registry мастер-ноды; при необходимости — локальный кэш на SSD вычислительной ноды Резервируется основной объектный экземпляр; возможность восстановления кэша проверяется отдельно
Проверочные изображения, видеозаписи и зоны S3-совместимый бакет asset-storage мастер-ноды Резервируется совместно с метаданными версии набора данных
Кадры, события, журналы и результаты проверок S3-совместимый бакет launch-storage мастер-ноды и рабочая область контура проверки на вычислительной ноде Для уникальных результатов задаётся срок хранения; временные копии очищаются по регламенту
Очереди и состояния сессий Постоянные либо регламентированно восстанавливаемые области брокера сообщений и очереди задач на мастер-ноде Степень защиты определяется допустимостью потери незавершённых задач
Временные файлы и Unix-сокеты конвертеров Общая временная область вычислительной ноды, доступная только взаимодействующим контейнерам Не включается в резервную копию; очищается после завершения или сбоя операции
Контейнерные образы и журналы Системный накопитель узла с резервом для текущей и новой версии образов; отдельное централизованное или локальное хранилище журналов Образы восстанавливаются из поставочного комплекта; сроки хранения журналов устанавливаются эксплуатационным регламентом

Таблица 4.1.3 — Размещение и защита данных компонента.

4.2. Технические средства рабочего места пользователя

Техническое средство Требование
Персональный компьютер или тонкий клиент Должен обеспечивать работу поддерживаемого веб-браузера, выполнение JavaScript и установление HTTPS- и WebSocket-соединений с Платформой 4.0. Конфигурация — не хуже: процессор уровня Intel Core i3, 8 ГБ оперативной памяти, видеопамять не менее 512 МБ, аппаратное декодирование H.264 средствами графической подсистемы рабочего места для покадрового просмотра результатов проверки
Монитор Цветной монитор с разрешением не хуже 1920 × 1080, достаточным для одновременного отображения карточки модели, списка файлов и области покадровой визуализации
Средства ввода Клавиатура и координатное устройство типа «мышь» либо функционально эквивалентные средства ввода
Сетевой интерфейс и канал Подключение к сети, из которой разрешён доступ к веб-интерфейсу Платформы 4.0 и загрузка ZIP-пакетов, изображений и видеозаписей. Пропускная способность — не менее 100 Мбит/с, рекомендуется 1 Гбит/с: пакет модели объёмом 1 ГБ передаётся при 100 Мбит/с около полутора минут
Свободное дисковое пространство Не менее 10 ГБ для подготовки загружаемых пакетов моделей и проверочных данных и для сохранения выгружаемых кадров, журналов и результатов проверки. Данные компонента на рабочем месте не хранятся, установка исполняемых частей не требуется
Дополнительное оборудование Выделенный графический ускоритель, камера и локальное хранилище моделей на рабочем месте не требуются: модель обрабатывается на графическом ускорителе вычислительной ноды, а исходные и визуализированные кадры передаются пользователю через веб-интерфейс

Таблица 4.2.1 — Технические средства рабочего места пользователя.

4.3. Ресурсы, выделяемые компоненту

Компонент не требует отдельных серверов. Приведённые ниже ресурсы выделяются ему на узлах кластера Платформы 4.0 и соответствуют требованиям к инфраструктуре заказчика для позиции поставки LPI-VAP-MM.

4.3.1. Состав и назначение выделяемых ресурсов

Ресурс Значение Узел размещения На что расходуется
Процессорные ядра x86 Не менее 8 Мастер-нода и вычислительная нода Прикладные сервисы каталога моделей, проверочных данных и запусков, обслуживание выделенных компоненту баз данных и бакетов; распаковка и проверка целостности ZIP-пакета, конвертация и валидация модели, чтение и декодирование проверочных изображений и видеозаписей, формирование визуализированных кадров
Оперативная память Не менее 16 ГБ Мастер-нода и вычислительная нода Около 1 ГБ — фоновое потребление составных частей компонента в состоянии готовности; остальной объём — распаковка пакета, конвертация, контрольный инференс и проверочный запуск: на каждую параллельную операцию требуется объём не менее размера распакованного пакета обрабатываемой модели
Дисковое пространство Не менее 1000 ГБ (HDD) Мастер-нода и вычислительная нода Не менее 44 ГБ — контейнерные образы конвертеров и исполнителя проверок; не менее 100 ГБ — рабочие каталоги и локальный кэш моделей вычислительной ноды; около 50 ГБ — начальное наполнение объектного хранилища (каталог моделей, проверочные данные, артефакты запусков); остальной объём — рост каталога версий, наборов проверочных данных, результатов запусков и журналов в пределах установленных сроков хранения
Графические ускорители Не менее 1 шт. класса NVIDIA T4 (или эквивалент) с характеристиками по таблице 4.3.2 Вычислительная нода Конвертация модели, контрольный инференс при автоматической проверке версии и проверочные запуски на наборах данных. Один ускоритель обслуживает одну параллельную задачу; на время её выполнения ускоритель занят полностью

Таблица 4.3.1 — Ресурсы, выделяемые компоненту, и их назначение.

Минимальные характеристики выделяемого компоненту графического ускорителя приведены в таблице 4.3.2. Допускается применение эквивалента, не уступающего указанным значениям.

Характеристика ускорителя Минимальное значение
Объём видеопамяти 16 ГБ
CUDA Compute Capability 7.5
Количество CUDA-ядер 2 560
Количество Tensor Cores 300
Пропускная способность видеопамяти 300 ГБ/с
Аппаратная поддержка вычислений FP16, INT8

Таблица 4.3.2 — Минимальные характеристики графического ускорителя.

Дисковое пространство распределяется по классам носителей в соответствии с п. 4.1.4: хранилища метаданных, рабочие каталоги конвертации и кэш моделей — на SSD, пакеты моделей, проверочные данные и результаты запусков — в объектном хранилище на носителях требуемой ёмкости. Общий выделяемый объём при этом не изменяется.

Приведённые значения соответствуют одной параллельной задаче конвертации или проверки и штатному режиму работы каталога. Они не включают ресурсы общесистемных средств Платформы 4.0 (веб-интерфейс и шлюз, средства аутентификации, серверы PostgreSQL, объектного хранилища, брокера сообщений и очереди задач), которые предоставляются Платформой 4.0 и используются компонентом совместно с другими её компонентами.

4.3.2. Соотношение с конфигурацией узлов Платформы 4.0

Узлы, на которых размещается компонент, входят в конфигурацию Платформы 4.0, установленную для позиции поставки LPI-VAP-CORE: мастер-нода и вычислительные ноды с графическими ускорителями. Соотношение ресурсов приведено в таблице 4.3.3.

Ресурс Мастер-нода Вычислительная нода (1 шт.) Итого по позиции LPI-VAP-CORE Выделяется LPI-VAP-MM Итого с учётом компонента
Процессорные ядра x86 48 14 62 8 70
Оперативная память, ГБ 128 128 256 16 272
Дисковое пространство, ГБ 6000 (5000 HDD и 1000 SSD) 1000 (SSD) 7000 1000 8000
Графические ускорители класса NVIDIA T4 4 4 1 5

Таблица 4.3.3 — Ресурсы компонента в составе минимальной конфигурации Платформы 4.0.

Из таблицы 4.3.3 следует:

  1. отдельные серверы под компонент не требуются: его составные части размещаются на уже имеющихся мастер-ноде и вычислительной ноде;
  2. ресурсы, выделенные компоненту, не участвуют в обеспечении показателей назначения Центрального модуля: занятый конвертацией или проверкой ускоритель на время выполнения задачи не выполняет видеоаналитику, а выделенные процессорные ядра, оперативная память и дисковое пространство не учитываются в расчёте числа обрабатываемых камер;
  3. поэтому доля компонента предусматривается сверх минимальной конфигурации узлов либо покрывается запасом ресурсов, заложенным проектом целевой поставки. В целевой конфигурации Центрального модуля из мастер-ноды и четырёх вычислительных нод (104 процессорных ядра, 640 ГБ оперативной памяти, 16 ускорителей класса NVIDIA T4) доля компонента составляет около 8 % процессорных ядер, около 3 % оперативной памяти и один ускоритель из шестнадцати;
  4. при совмещении нагрузки без такого запаса производительность видеоаналитики на время конвертации и проверок снижается пропорционально занятым ресурсам; регламент выполнения этих операций (например, вне периодов пиковой нагрузки) устанавливается проектом целевой поставки.

4.3.3. Масштабирование

Выделяемые ресурсы рассчитаны на одну одновременно выполняемую задачу конвертации или проверки. Пропускная способность подготовки моделей масштабируется числом графических ускорителей, предоставленных компоненту, и пропорциональным увеличением процессорных ядер и оперативной памяти; порядок масштабирования приведён на схеме 4.2.

flowchart TB N1["1 ускоритель
1 задача конвертации или проверки
одновременно"] N2["2 ускорителя
2 задачи одновременно"] N4["4 ускорителя
4 задачи одновременно"] NX["Дальнейшее масштабирование
пропорционально числу
выделенных ускорителей"] MASTER["Ресурсы мастер-ноды:
рассчитываются по числу моделей и версий,
объёму проверочных данных и результатов
и срокам их хранения"] N1 --> N2 --> N4 --> NX MASTER -.-> N1

Схема 4.2 — Масштабирование контура конвертации и проверочных запусков.

Ускорители могут выделяться как на одной, так и на нескольких вычислительных нодах кластера. Промежуточные конфигурации рассчитываются пропорционально; ёмкость хранилищ рассчитывается отдельно по удельным величинам п. 4.4.2 и не зависит от числа параллельных задач.

4.4. Требования к узлам целевой конфигурации и параметры проектирования

Подраздел устанавливает требования, которые не нормированы подразделом 4.3: качественные требования к узлам, на которых размещается компонент, минимально допустимые версии программной среды, удельные величины для расчёта ёмкости и перечень параметров, которые определяются проектом поставки. Требования приведены раздельно по типам узлов кластера и сформулированы в форме «не ниже»: указанные значения подтверждены проверкой работоспособности компонента в полном составе составных частей и являются минимально допустимыми для целевой поставки.

4.4.1. Требования к узлам по типам

Характеристика Мастер-нода Вычислительная нода
Тип узла Физический сервер либо виртуальная машина с выделенными без переподписки ресурсами Физический сервер либо виртуальная машина с выделенными без переподписки ресурсами и прямым доступом к графическим ускорителям
Процессорные ядра, оперативная память и дисковое пространство Не ниже значений, выделяемых компоненту по таблице 4.3.1; минимум учитывается по физическим ядрам, выделенным компоненту Не ниже значений, выделяемых компоненту по таблице 4.3.1; дополнительно одно процессорное ядро и объём оперативной памяти не менее размера распакованного пакета наибольшей обрабатываемой модели на каждую параллельную задачу
Графические ускорители Не требуются Не менее одного ускорителя класса NVIDIA T4 с характеристиками по таблице 4.3.2 (в том числе CUDA Compute Capability — не ниже 7.5); при моделях с повышенными требованиями к видеопамяти — ускорители с 24 ГБ; на каждую параллельную задачу выделяется отдельный ускоритель. Работоспособность подтверждена на ускорителях с вычислительной способностью 8.6
Драйвер и среда исполнения графической подсистемы Не применяется Драйвер NVIDIA — не ниже 580.76.05, среда CUDA в контейнерных образах — не ниже 12.6, TensorRT — не ниже 10.4, при совместимости со средствами предоставления ускорителей контейнерам
Дисковый массив Массив уровня не ниже RAID 5 из корпоративных SSD для томов хранилищ; запас свободного места — не менее 20 % Массив уровня не ниже RAID 5 из корпоративных SSD для контейнерных образов, рабочих каталогов и кэша моделей; запас свободного места — не менее 20 %
Операционная система и среда контейнеров «Московская серверная операционная система» с ядром не ниже 6.8; среда исполнения контейнеров кластера Kubernetes с драйвером хранилища overlay2 «Московская серверная операционная система» с ядром не ниже 6.8; среда исполнения контейнеров кластера Kubernetes с драйвером хранилища overlay2 и поддержкой графических ускорителей
Ресурсы контейнеров Запросы и пределы ресурсов задаются раздельно для реестра моделей, хранилищ метаданных и прикладных интерфейсов Запросы и пределы ресурсов задаются раздельно для менеджера проверки, конвертеров и исполнителя проверочных запусков
Сетевой интерфейс Не ниже 1 Гбит/с; при регулярной загрузке пакетов моделей объёмом более 1 ГБ — 10 Гбит/с Не ниже 1 Гбит/с; при регулярной загрузке пакетов моделей объёмом более 1 ГБ — 10 Гбит/с между узлом и объектным хранилищем
Синхронизация времени Единый источник точного времени по протоколу NTP; расхождение между узлами — не более 1 секунды Единый источник точного времени по протоколу NTP; расхождение между узлами — не более 1 секунды
Резервное копирование Согласованное по времени копирование хранилищ метаданных и связанных бакетов объектного хранилища — не реже одного раза в сутки; RPO — не хуже 24 часов, RTO и порядок контрольного восстановления — по регламенту заказчика Не требуется: контейнерные образы, локальный кэш моделей и временные файлы конвертации восстанавливаются из внешних источников
Бесперебойное питание Автономная работа не менее 10 минут с автоматическим завершением работы узла по сигналу источника Автономная работа не менее 10 минут с автоматическим завершением работы узла по сигналу источника

Таблица 4.4.1 — Требования к узлам, не нормированные подразделом 4.3.

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

4.4.2. Удельные величины для расчёта конфигурации

Величина Значение Применение при проектировании
Суммарный объём контейнерных образов конвертеров и исполнителя проверок Не менее 44 ГБ с учётом общих слоёв Расчёт дискового пространства вычислительной ноды
Начальное наполнение объектного хранилища Не менее 50 ГБ: каталог моделей — 19 ГБ, проверочные данные — 1,5 ГБ, артефакты проверочных запусков — 27 ГБ Расчёт ёмкости объектного хранилища мастер-ноды
Рабочие каталоги и локальный кэш моделей Не менее 100 ГБ на вычислительной ноде: контейнерные образы, исходные пакеты, преобразованные профили исполнения и временные файлы Расчёт ёмкости SSD вычислительной ноды и регламента очистки кэша
Фактические объёмы данных при интенсивной эксплуатации На контуре подготовки моделей объём файлов моделей, результатов запусков, рабочих каталогов и кэша достигает сотен ГБ Проверка достаточности выделенного дискового пространства и сроков хранения
Фоновое потребление оперативной памяти составными частями в состоянии готовности Около 1 ГБ Расчёт оперативной памяти мастер-ноды сверх объёма выполняемых задач
Дополнительная оперативная память на одну параллельную операцию Не менее размера распакованного пакета наибольшей обрабатываемой модели Расчёт оперативной памяти вычислительной ноды
Видеопамять на одну параллельную задачу Не менее 16 ГБ на выделенном ускорителе Расчёт числа и типа графических ускорителей
Объём хранилищ метаданных Мал по отношению к объектным данным; растёт пропорционально числу версий моделей, наборов данных и запусков Расчёт ёмкости SSD мастер-ноды и параметров резервного копирования
Передача пакета модели объёмом 1 ГБ Около полутора минут при 100 Мбит/с Расчёт пропускной способности каналов к рабочим местам и между узлами
Запас свободного места на томах хранилищ Не менее 20 % Расчёт ёмкости SSD и объектного хранилища

Таблица 4.4.2 — Удельные величины для расчёта конфигурации.

Ёмкость объектного хранилища рассчитывается раздельно по каталогу моделей, проверочным данным и результатам запусков как произведение ожидаемого числа объектов, их среднего размера и установленного срока хранения, с запасом не менее 20 %. Объёмы локального кэша моделей и рабочих каталогов не суммируются с объёмом объектного хранилища: они частично содержат копии тех же данных.

4.4.3. Параметры, определяемые проектом поставки

Параметр Что требуется определить Как используется
Профиль каталога моделей Количество моделей и версий, средний и максимальный размер исходного пакета, число формируемых профилей исполнения Определяет ёмкость объектного хранилища и оперативную память вычислительной ноды
Профиль параллелизма Максимальное число одновременно выполняемых загрузок, конвертаций, автоматических проверок и пользовательских запусков, допустимое время ожидания задачи в очереди Определяет число выделяемых компоненту ускорителей и объём процессорных ядер и оперативной памяти по п. 4.3.3
Порядок совмещения нагрузки Наличие запаса ресурсов на узлах кластера, регламент выполнения конвертаций и проверок относительно периодов пиковой нагрузки видеоаналитики Определяет, выделяются ресурсы компонента сверх минимальной конфигурации узлов или из их запаса (п. 4.3.2)
Проверочные данные Суточный объём изображений и видеозаписей, предельные размер, разрешение и длительность файлов, число версий наборов данных Определяет ёмкость объектного хранилища и время выполнения проверок
Сроки хранения Сроки хранения пакетов моделей, преобразованных артефактов, версий наборов данных, кадров, результатов, комментариев и журналов Определяют ёмкость хранилищ и параметры очистки
Пользователи Число одновременно работающих пользователей и интенсивность загрузки пакетов моделей Определяет ресурсы мастер-ноды и пропускную способность каналов
Поддерживаемые модели Перечень архитектур моделей, исходных форматов весов и профилей исполнения, требования к видеопамяти Определяет тип графических ускорителей и состав образов конвертеров
Отказоустойчивость Допустимое время восстановления, необходимость резервирования узлов, сетевых каналов и источников питания, значения RPO и RTO Определяет число узлов кластера и схему резервирования
Информационная безопасность Сегментация сети, применяемые средства защиты, порядок доступа обслуживающего персонала Определяет схему соединений и правила фильтрации трафика

Таблица 4.4.3 — Параметры, определяемые проектом поставки.

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

5. Вызов и загрузка

Компонент вызывается двумя способами:

  • пользователем — из веб-интерфейса Платформы 4.0;
  • интеграционным клиентом — через программные интерфейсы Платформы 4.0.

Загрузка серверных составных частей выполняется администратором при запуске Платформы 4.0. Пользователь не запускает исполняемые файлы компонента и не устанавливает их на своё рабочее место. LPI-VAP-CORE выполняет аутентификацию пользователя через СУДИР и формирует пользовательский контекст. После этого браузер загружает клиентское приложение, а оно обращается к реестру моделей, хранилищам проверочных данных и запусков через единый API-шлюз.

5.1. Способ вызова программы

5.1.1. Вызов пользователем

Порядок вызова компонента пользователем:

  1. Пользователь открывает в браузере адрес веб-интерфейса Платформы 4.0. Адрес является параметром целевой поставки: протокол, доменное имя и порт определяются конкретной поставкой.
  2. Единая точка входа LPI-VAP-CORE проверяет пользовательскую сессию и при её отсутствии перенаправляет браузер на страницу входа СУДИР. Учётные данные вводятся только на странице СУДИР.
  3. После успешной аутентификации LPI-VAP-CORE проверяет групповое право, формирует пользовательский контекст с ролью и полномочиями и открывает главную страницу Платформы 4.0.
  4. В разделе настроек пользователь открывает страницу «Модели», а при необходимости — страницы проверочных данных и проверочных запусков.
  5. В каталоге выполняется требуемая операция: выбор модели и её версии, создание модели, загрузка версии, работа с архивом, ведение проверочных данных, создание запуска проверки и просмотр его результатов.
  6. Сессия завершается выходом пользователя либо по истечении срока её действия; после этого единая точка входа требует повторной аутентификации.

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

Самостоятельные разделы LPI-VAP-MM относятся к административным функциям. Доступ к ним и к отдельным операциям определяется ролью и полномочиями, переданными LPI-VAP-CORE. Детальное распределение приведено в подразделе 1.3 руководства пользователя. Отсутствие страницы или команды означает, что соответствующее полномочие пользователю не назначено.

Признаками успешного вызова являются:

  • открытие страницы «Модели» без сообщения о недоступности компонента;
  • отображение структуры разделов и списка моделей либо корректного сообщения об отсутствии записей;
  • доступность разрешённых пользователю элементов поиска, фильтрации и создания;
  • получение актуальных состояний версий без непрерывного индикатора загрузки или повторяющейся ошибки обмена.

5.1.2. Запуск серверных составных частей

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

  • узлы кластера подготовлены в соответствии с разделом 4; установлены серверная операционная система, среда исполнения контейнеров, средства оркестрации Kubernetes, драйвер графических ускорителей и средства предоставления ускорителей контейнерам; узлам присвоены признаки назначения (мастер-нода, вычислительная нода);
  • контейнерные образы версии поставки загружены на узлы либо доступны в разрешённом реестре образов;
  • подготовлены конфигурация развёртывания, секреты, внутренние сети, постоянные тома и области рабочих каталогов; системное время узлов синхронизировано;
  • доступны три экземпляра PostgreSQL для метаданных моделей, проверочных данных и запусков, S3-совместимое объектное хранилище и Kafka Платформы 4.0;
  • для контура проверочных запусков доступны его Kafka, Redis и рабочие каталоги;
  • драйвер NVIDIA, средства предоставления ускорителей контейнерам и графические ускорители доступны менеджеру проверки, конвертерам и исполнителю проверок;
  • выполнено согласованное резервное копирование постоянных данных перед запуском новой версии поставки или изменением схем баз данных.

Запуск выполняется штатными средствами развёртывания целевой поставки: конфигурация кластера применяется, после чего оркестратор размещает составные части на узлах в соответствии с их назначением. Точки запуска реестра и хранилищ ожидают объявленные зависимости, применяют миграции схемы PostgreSQL и затем запускают прикладной сервер. Менеджер проверки также ожидает доступности настроенных сервисов перед запуском. Запуск отдельных процессов внутри контейнеров вручную не является штатным способом эксплуатации.

Рекомендуемый порядок загрузки приведён в таблице 5.1.1. Параллельный запуск сервисов одного этапа допустим, если оркестратор контролирует готовность их зависимостей.

Этап Загружаемые средства Условие перехода к следующему этапу
1. Базовая инфраструктура Среда исполнения контейнеров и средства оркестрации Kubernetes, внутренние сети, постоянные тома, доступ к реестру образов, драйвер и средства предоставления графических ускорителей контейнерам Узлы доступны оркестратору; тома подключены; GPU виден назначенным вычислительным контейнерам
2. Хранение и обмен PostgreSQL, S3-совместимое хранилище, основная Kafka; Kafka и Redis контура проверок Базы принимают соединения; объектное хранилище доступно; брокеры готовы принимать и выдавать сообщения
3. Прикладные хранилища svr-models-registry, svr-asset-storage, svr-launch-storage Миграции завершены; прикладные серверы запущены; программные контракты доступны
4. Автоматическая обработка inf-flows-manager, yolo-conversion, mm-conversion Менеджер подключён к реестру, Kafka, хранилищам и конвертерам; GPU доступен
5. Пользовательские проверки nr-sbx-backend, nr-sbx-celery, nr-sbx-nri, nr-sbx-yolo-conversion, nr-sbx-mm-conversion API контура отвечает; исполнитель подключён к очереди; рабочие каталоги и конвертеры доступны
6. Внешний доступ Веб-интерфейс и API-шлюз Платформы 4.0 Страница входа открывается; защищённый маршрут моделей требует действующую сессию; запросы маршрутизируются к прикладным сервисам

Таблица 5.1.1 — Порядок загрузки серверных составных частей.

Порядок запуска и остановки приведён на схеме 5.1.

flowchart TB G1["1. Базовая инфраструктура узлов
среда исполнения контейнеров и Kubernetes,
сети, тома, графические ускорители"] G2["2. Хранение и обмен
PostgreSQL, объектное хранилище,
брокеры сообщений и очередь задач"] G3["3. Прикладные хранилища
реестр моделей, проверочные данные, запуски"] G4["4. Автоматическая обработка
менеджер проверки и конвертеры"] G5["5. Контур пользовательских проверок
прикладной сервис, очередь, исполнитель"] G6["6. Внешний доступ
веб-интерфейс и шлюз прикладных интерфейсов"] CHK{"Проверка готовности
группы пройдена?"} RST["Перезапуск сервиса средствами оркестратора;
запуск следующих групп приостановлен"] OK["Компонент готов к работе"] G1 --> G2 --> G3 --> G4 --> G5 --> G6 --> CHK CHK -->|нет| RST RST --> CHK CHK -->|да| OK

Схема 5.1 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке).

Для пользователя различаются два уровня готовности:

  • готовность каталога — доступны аутентификация, веб-интерфейс, API-шлюз, реестр моделей, его PostgreSQL и объектное хранилище; пользователь может просматривать каталог в пределах назначенных прав;
  • полная функциональная готовность — дополнительно доступны хранилища ассетов и запусков, Kafka, Redis, менеджер проверки, исполнители, конвертеры и GPU; разрешены загрузка, конвертация и проверка моделей.

Контейнер со статусом running не является достаточным признаком работоспособности всего компонента. После запуска администратор выполняет проверки из таблицы 5.1.2.

Объект проверки Признак готовности
Контейнеры прикладных сервисов Требуемые контейнеры находятся в состоянии выполнения; отсутствуют циклические перезапуски; число перезапусков и последние журналы проверены
PostgreSQL Каждый экземпляр принимает соединения; миграции завершились без ошибки
S3-совместимое хранилище Доступны бакеты моделей, проверочных данных и результатов; разрешены контрольные операции чтения и записи по регламенту эксплуатации
Kafka и Redis Брокеры доступны; требуемые топики и группы потребителей созданы; очередь задач принимает сообщения
Реестр и хранилища Внутренние OpenAPI- или типизированные контракты отвечают; чтение каталога моделей завершается без серверной ошибки
Менеджер и конвертеры Внутренние контрольные точки доступны; менеджер подключён к зависимостям; конвертеры видят общие рабочие каталоги и GPU
Контур пользовательских проверок Прикладная контрольная точка отвечает; исполнитель подключён к очереди; пробная задача по утверждённой методике завершается с ожидаемым состоянием
Веб-доступ Страница входа открывается; защищённый маршрут моделей перенаправляет неаутентифицированный запрос на вход и открывается для пользователя с назначенной ролью

Таблица 5.1.2 — Проверка готовности после загрузки.

Штатные команды зависят от утверждённого профиля поставки: применение конфигурации кластера, загрузка образов на узлы, просмотр состояния и журналов составных частей выполняются средствами оркестрации Kubernetes. Точные имена файлов конфигурации, пространств имён, наборов ресурсов и команды запуска, остановки и просмотра журналов требуется предоставить в руководстве администратора целевой поставки. Команды, каталоги и имена ресурсов контура разработки в настоящий документ не включаются.

При плановой остановке сначала прекращают приём новых операций загрузки, конвертации и проверки, затем дожидаются завершения либо регламентированно останавливают асинхронные задачи. После этого останавливают прикладные сервисы, а PostgreSQL, S3, Kafka и Redis — последними. Закрытие вкладки браузера или выход пользователя из системы не останавливает серверные составные части.

5.2. Входные точки в программу

5.2.1. Веб- и программные входные точки

Адреса в таблице 5.2.1 задаются относительно внешнего адреса Платформы 4.0. Маршруты с параметрами содержат условные обозначения в угловых скобках.

Входная точка Маршрут Назначение Инициатор
Единая страница входа Платформы 4.0 /login Вызов LPI-VAP-CORE, который при отсутствии сессии выполняет перенаправление в СУДИР и после возврата формирует пользовательский контекст; входной точкой LPI-VAP-MM не является Пользователь
Каталог моделей /settings/models Просмотр, поиск и фильтрация моделей; переход к модели и её версиям Пользователь
Создание модели /settings/models/create Ввод основных сведений о новой модели Пользователь
Карточка модели /settings/models/view/<идентификатор модели> Просмотр сведений и перечня версий Пользователь
Загрузка новой версии /settings/models/<идентификатор модели>/new-version/ Ввод описания версии и передача ZIP-пакета Пользователь
Карточка версии /settings/models/<идентификатор модели>/view-version/<идентификатор версии> Просмотр метаданных, файлов и состояния обработки версии Пользователь
Архив моделей и версий /settings/models/archive, /settings/models/versions/archive Просмотр архивных объектов и вызов разрешённых операций восстановления Пользователь
Проверочные данные /settings/assets Подготовка наборов изображений и видеозаписей для проверки модели Пользователь
Проверочные запуски /settings/launches, /settings/launch/<идентификатор запуска> Просмотр списка, прогресса и результатов запусков Пользователь
Единая программная точка Платформы 4.0 /api/ Аутентифицированный доступ веб-интерфейса и разрешённых интеграционных клиентов к REST/JSON- и Twirp/HTTP-интерфейсам Веб-интерфейс или интеграционный клиент
API реестра моделей /api/models-registry/ Операции с пакетами и сведениями моделей; точный перечень методов определяется спецификацией API версии поставки Веб-интерфейс, менеджер проверки или разрешённый интеграционный клиент
Прямая передача крупных объектов Временный подписанный адрес S3; маршрут шлюза /api/s3-direct/, если включён профилем поставки Потоковая загрузка пакета модели или медиаданных без передачи долговременных реквизитов объектного хранилища браузеру Веб-интерфейс
Канал оперативных обновлений /api/ws/ либо иной маршрут, установленный конфигурацией клиентской части Передача состояний и прогресса асинхронных операций Веб-интерфейс

Таблица 5.2.1 — Входные точки компонента.

Точные внешние префиксы API хранилищ ассетов и запусков, перечень разрешённых методов реестра, способ аутентификации интеграционных клиентов и маршрут канала оперативных обновлений требуется зафиксировать в спецификации API целевой поставки. Технические OpenAPI- и диагностические маршруты прикладных сервисов используются администратором только из служебной сети и не должны публиковаться как отдельные пользовательские точки входа.

Прямой внешний доступ пользователей к адресам контейнеров, PostgreSQL, MinIO, Kafka, Redis, Celery и Unix-сокетам конвертеров не предусматривается.

5.2.2. Порядок загрузки пользовательской сессии

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

  1. браузер загружает клиентское приложение и эксплуатационную конфигурацию интерфейса;
  2. LPI-VAP-CORE проверяет действующую сессию; при её отсутствии или истечении срока действия направляет пользователя на страницу входа СУДИР;
  3. после возврата от СУДИР LPI-VAP-CORE формирует пользовательский контекст, а LPI-VAP-MM проверяет переданные разрешения на маршрут и вызываемые операции;
  4. клиентское приложение через API-шлюз получает разделы каталога, модели, версии, состояния обработки и справочники типов;
  5. интерфейс применяет сохранённые пользовательские параметры отображения, если их сохранение предусмотрено профилем клиентской части, либо использует значения по умолчанию;
  6. после получения данных отображаются каталог и доступные команды; состояния длительных операций далее обновляются опросом API или через настроенный канал оперативных уведомлений.
sequenceDiagram actor U as Пользователь participant UI as Веб-интерфейс participant CORE as LPI-VAP-CORE
единая точка входа participant GW as API-шлюз participant MR as Реестр моделей participant ST as Хранилища ассетов и запусков U->>UI: Открыть раздел «Модели» UI->>CORE: Проверить сессию и разрешения alt Сессия отсутствует или истекла CORE-->>UI: Требуется вход через СУДИР UI-->>U: Страница входа else Сессия действительна UI->>GW: Запрос каталога и справочников GW->>MR: Получить модели и версии MR-->>GW: Каталог и состояния GW->>ST: Получить связанные проверки ST-->>GW: Состояния и результаты GW-->>UI: Данные раздела UI-->>U: Каталог и доступные команды end

Схема 5.2 — Загрузка пользовательской сессии компонента.

Если реестр моделей недоступен, страница не считается успешно загруженной и пользователю должно быть показано сообщение об ошибке. Недоступность хранилищ ассетов, запусков, менеджера или вычислительного контура может оставить каталог доступным только для чтения, но операции загрузки, конвертации и проверки в этом случае не считаются доступными. Клиентское приложение не должно скрывать ошибку бесконечным индикатором загрузки или автоматически повторять изменяющую операцию без защиты от её дублирования.

5.2.3. Объём программы и использование памяти

Объём загружаемых контейнерных образов и фактическое потребление памяти зависят от версии поставки, набора конвертеров, форматов моделей и числа параллельных проверок. Приведённые ниже значения подтверждены проверкой работоспособности компонента в полном составе составных частей и являются минимально допустимыми («не менее») для целевой поставки; удельные величины для расчёта ёмкости хранилищ приведены в п. 4.4.2.

Параметр Подтверждённое значение и порядок определения
Суммарный объём контейнерных образов реестра, хранилищ, менеджера и контура проверок Не менее 44 ГБ: подтверждено для контрольной сборки с учётом общих слоёв конвертеров и исполнителя проверок. Точный состав фиксируется ведомостью образов целевой версии поставки
Объём клиентского приложения, загружаемого при первом открытии Не более 39 МБ несжатых статических ресурсов (подтверждено для контрольной сборки); фактически передаваемый объём меньше за счёт сжатия и измеряется при приёмке без кэша браузера
Объём повторной загрузки клиентского приложения Определяется политикой HTTP-кэширования: при неизменной версии приложения повторно передаются только изменившиеся ресурсы
Потребление ОЗУ прикладными сервисами после запуска без активных задач Не менее 1 ГБ: подтверждено потребление около 0,8 ГБ составными частями компонента в состоянии готовности
Дополнительное потребление ОЗУ при распаковке и валидации одного максимального пакета Определяется предельным размером пакета модели: резервируется объём не менее размера распакованного пакета на каждую параллельную операцию; измеряется при приёмке для утверждённого предельного пакета
Потребление ОЗУ и видеопамяти при конвертации Определяется архитектурой модели и профилем исполнения; на каждую параллельную конвертацию выделяется отдельный ускоритель с видеопамятью не менее 16 ГБ (подтверждено на ускорителях с 24 ГБ). Значения по архитектурам измеряются при приёмке
Потребление ОЗУ и видеопамяти при пользовательской проверке Определяется размером изображений и видеозаписей и согласованным параллелизмом; на каждую параллельную проверку выделяется отдельный ускоритель. Значения измеряются при приёмке
Объём временного дискового пространства одной операции Не менее суммы размеров исходного пакета, формируемых профилей исполнения и результатов проверки; на вычислительной ноде резервируется не менее 100 ГБ (подтверждено 44 ГБ образов плюс рабочие каталоги)
Объём постоянных данных и темп прироста Начальное наполнение подтверждённой конфигурации: 19 ГБ — каталог моделей, 1,5 ГБ — проверочные данные, 27 ГБ — артефакты запусков, менее 0,3 ГБ — метаданные. Прирост рассчитывается по числу моделей, версий, ассетов, запусков и срокам хранения

Таблица 5.2.3 — Сведения об объёме программы и использовании памяти.

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

6. Входные данные

6.1. Характер и организация входных данных

Входные данные компонента образуют пять взаимосвязанных групп:

  1. команды пользователя и вызовы API для управления моделями, версиями, ассетами и проверочными запусками;
  2. структурированные метаданные карточки модели и её версии;
  3. ZIP-пакет модели с описанием, категориями и файлами весов;
  4. проверочные ассеты: изображения, видеозаписи, папки и описания зон;
  5. справочные данные и события смежных компонентов, обеспечивающие проверку, публикацию и использование версий моделей в сценариях.

Рабочий видеопоток камеры не является входом компонента «Управление моделями». Для проверки модели используются предварительно загруженные версии ассетов. Обработка потоков камер опубликованными моделями выполняется другими компонентами Платформы 4.0.

Группа Источник Содержание Назначение
Управляющие запросы Пользовательский интерфейс или клиент API Операция, идентификаторы сущностей, фильтры, комментарий Создание, изменение, поиск, архивирование, восстановление, публикация и удаление
Карточка модели Пользователь или интеграционный клиент Наименование, описание, тип задачи, тип модели, раздел, атрибуты Регистрация модели в каталоге
Версия модели Пользователь или интеграционный клиент Обозначение версии, описание, метаданные источника, пакет модели Версионирование и автоматическая проверка
Пакет модели Файловая загрузка model_info.json, coco_categories.json, веса и допустимые артефакты Конвертация, валидация и контрольный инференс
Проверочный ассет Пользователь или клиент API Карточка и версия ассета, JPG-, PNG- или MP4-файлы, папки и зоны Проверка выбранной версии модели на подготовленных данных
Проверочный запуск Пользовательский интерфейс или клиент API Идентификаторы версии модели и версии ассета, команды запуска и остановки Постановка асинхронной задачи в очередь
Справочные данные Реестры Платформы 4.0 Типы задач и моделей, разделы, типы зон, категории Проверка ссылочной целостности и заполнение списков выбора
События интеграции Смежные компоненты Событие загрузки версии, изменения состояния и сведения об использовании модели Запуск проверки и синхронизация состояния

Таблица 6.1.1 — Группы входных данных.

Связи основных сущностей показаны на схеме 6.1.

flowchart TB REF["Справочники типов,
разделов и категорий"] --> M["Карточка модели"] M --> MV["Версия модели"] PKG["ZIP-пакет модели"] --> MV REF --> MV MEDIA["JPG, PNG, MP4
и описания зон"] --> AV["Версия набора данных"] A["Карточка набора
проверочных данных"] --> AV MV --> L["Проверочный запуск"] AV --> L MV --> S["Сценарии,
использующие версию"]

Схема 6.1 — Связи входных сущностей компонента.

6.2. Предварительная подготовка входных данных

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

  1. Пользователь проходит аутентификацию. Роль должна разрешать требуемую операцию над каталогом моделей, ассетами или проверочными запусками.
  2. Для новой модели выбираются существующие значения типа задачи, типа модели и раздела. Наименование модели не должно совпадать с наименованием другой неудалённой модели.
  3. Для новой версии задаётся непустое обозначение, отличающее её от других версий той же модели, и подготавливается ZIP-пакет.
  4. В корне пакета размещаются model_info.json и coco_categories.json. Путь или шаблон weights_path должен разрешаться в существующий файл весов внутри пакета.
  5. JSON-файлы проверяются на синтаксическую корректность, обязательные поля и соответствие типа задачи типу модели. Значения категорий должны совпадать с индексами выходов модели.
  6. Формат исходных весов и каждый профиль развёртывания сверяются с составом средств конвертации целевой поставки. Наличие расширения файла само по себе не подтверждает совместимость модели.
  7. Для проверки создаётся ассет единого типа image или video. Изображения подготавливаются в JPG или PNG, видеозаписи — в MP4. При необходимости к файлам добавляются зоны с корректными координатами.
  8. До постановки задачи проверяются доступность объектного хранилища, очереди сообщений и вычислительных ресурсов, соответствующих профилю модели.

Архив должен иметь следующую минимальную логическую структуру:

<пакет-модели>.zip
├── model_info.json
├── coco_categories.json
├── <файл весов, указанный в weights_path>
└── <дополнительные артефакты, допустимые для типа модели>

Имена utils.py и tasks.py не допускаются в каталоге model/artifacts пользовательской модели. В пакет не следует включать пароли, токены, абсолютные пути файловой системы и данные, не используемые выбранным типом модели.

Проверка до загрузки Действие при несоответствии
ZIP открывается и содержит обязательные JSON-файлы Пересобрать пакет
weights_path указывает на единственный существующий файл или однозначный шаблон Исправить путь либо состав пакета
Поля model_type, task_type, deploy_profile и img_size согласованы Исправить model_info.json
Идентификаторы категорий согласованы с выходами модели Исправить coco_categories.json или модель
Медиафайл открывается штатным декодером и соответствует типу ассета Перекодировать файл либо создать ассет другого типа
Версия модели и версия ассета существуют и доступны пользователю Выбрать доступные версии или запросить права

Таблица 6.2.1 — Предварительные проверки входных данных.

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

6.3. Формат входных данных

Данные Формат передачи Основные ограничения
Команды и метаданные API HTTP(S), JSON UTF-8 либо двоичный протокол прикладного API Схема и типы полей должны соответствовать операции; вызов проходит аутентификацию и авторизацию
Пакет модели ZIP, двоичный поток Обязательны model_info.json, coco_categories.json и файл весов; повреждённый либо неполный архив отклоняется
Описание модели model_info.json, JSON UTF-8 Обязателен model_type; условно обязательные поля зависят от типа модели
Описание категорий coco_categories.json, JSON UTF-8 Корневое поле categories — массив; каждая категория проходит строгую проверку типов
Веса модели ONNX, PyTorch, TensorFlow или TensorRT в составе ZIP Допускаются только формат и профиль, поддерживаемые целевой поставкой; фактическая совместимость проверяется конвертером и контрольным запуском
Изображение ассета JPG или PNG, двоичный файл Тип ассета — image; файл должен декодироваться и не превышать установленный для поставки размер
Видеозапись ассета MP4, двоичный файл Тип ассета — video; расширение и содержимое должны соответствовать MP4
Описание зон JSON-поля API Геометрия передаётся сериализованным массивом координат; цвет — #RRGGBB
Файловая загрузка Поток HTTP либо временный подписанный URL объектного хранилища URL действует ограниченное время; имя объекта формируется системой
Событие асинхронной обработки JSON-сообщение очереди Содержит идентификаторы уже зарегистрированной модели и её версии

Таблица 6.3.1 — Форматы входных данных.

ZIP является транспортным контейнером, а не форматом весов. Конкретный файл весов определяется weights_path; после загрузки его пригодность проверяется не по расширению, а средствами выбранного контура исполнения.

6.4. Описание входных данных

6.4.1. Пакет модели и метаданные версии

Ввод модели разделён на карточку каталога и конкретную версию. Поля карточки приведены в таблице 6.4.1.

Поле Тип и ограничение Обязательность Назначение
name Строка, до 255 символов Да Уникальное наименование модели
description Строка, до 255 символов, или null Нет Краткое назначение модели
task_type_id Положительное целое число Да Ссылка на тип решаемой задачи
mdl_type_id Положительное целое число Да Ссылка на тип или архитектуру модели
mdl_section_id Положительное целое число или null Нет Раздел каталога моделей
attributes Массив пар name/value Нет Классификационные признаки для поиска; имя и значение — до 255 символов

Таблица 6.4.1 — Входные поля карточки модели.

Для регистрации версии используются поля таблицы 6.4.2.

Поле Тип и ограничение Обязательность Назначение
mdl_id Положительное целое число Да Идентификатор карточки модели
version Строка, до 255 символов Да Уникальное в пределах модели обозначение версии
description Строка, до 255 символов, или null Нет Описание изменений версии
attributes Массив пар name/value Нет Дополнительные признаки версии
run_validation Логическое значение Нет Признак запуска автоматической проверки после регистрации
original_version Строка или null Нет Обозначение версии во внешнем источнике
source_name, source_uuid Строки или null Нет Система-источник и идентификатор записи в ней
ZIP-пакет Двоичный поток Для первичной загрузки Файлы версии модели
user_info Серверный контекст Формируется системой Автор операции; вручную пользователем не задаётся

Таблица 6.4.2 — Входные поля версии модели.

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

Файл model_info.json связывает пакет с протоколом исполнения.

Поле Тип Правило
model_type Строка Обязательный машинный тип модели; должен присутствовать в реестре поддерживаемых реализаций
task_type Строка Тип задачи; должен быть согласован с model_type
weights_path Строка Относительный путь либо шаблон *, ?, [...], разрешающийся в файл весов внутри пакета
deploy_profile.default_profile Строка Профиль исполнения по умолчанию; входит в profiles
deploy_profile.profiles Непустой массив строк Профили, для каждого из которых выполняется проверка возможности загрузки и инференса
img_size.height, img_size.width Положительные целые числа Высота и ширина входного изображения в пикселях
model_attributes Объект Необязательные параметры модели; для параметра задаются тип и значение по умолчанию

Таблица 6.4.3 — Основные поля model_info.json.

Для пользовательского типа модели поля task_type, deploy_profile, img_size и weights_path обязательны. Для встроенных типов фактический набор обязательных полей определяется их валидатором, но model_type и согласованный тип задачи должны присутствовать. Каждый заявленный профиль проверяется контрольным инференсом на изображении указанного размера.

Файл coco_categories.json содержит объект с массивом categories. Текущий валидатор ожидает для каждой категории поля таблицы 6.4.4.

Поле Тип и ограничение Назначение
id Целое число Идентификатор класса, совпадающий с индексом, выдаваемым моделью
name Строка Машинное наименование класса
ru_name Строка Краткое русскоязычное наименование
full_ru_name Строка Полное русскоязычное наименование
supercategory Строка Родительская группа категории
threshold Вещественное число Порог уверенности категории
color Массив ровно из трёх целых чисел от 0 до 255 Цвет визуализации категории по трём цветовым каналам
is_violation Логическое значение Признак категории нарушения
is_primary Логическое значение Признак основной категории
exclude Логическое значение Признак исключения категории из обработки или отображения

Таблица 6.4.4 — Поля категории модели.

Категории и параметры их отображения после загрузки хранятся как метаданные версии и могут изменяться разрешёнными операциями API. Изменение id или назначения категории должно быть согласовано с фактическим выходом модели.

6.4.2. Наборы проверочных данных и медиафайлы

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

Поле Тип и ограничение Обязательность Назначение
name Строка, до 255 символов Да Уникальное наименование ассета
asset_type image или video Да Тип всех медиафайлов ассета
asset_section_id Положительное целое число или null Нет Раздел каталога ассетов
description Строка, до 255 символов, или null Нет Назначение набора данных
attributes Массив пар name/value Нет Дополнительные признаки ассета
asset_id Положительное целое число Для версии Идентификатор ассета
version Строка, до 255 символов Для версии Обозначение версии ассета
is_published Логическое значение При изменении версии Доступность версии для проверочного запуска

Таблица 6.4.5 — Входные данные ассета и его версии.

Медиафайлы передаются двоичным потоком непосредственно сервису либо по выданному сервером подписанному URL. Запрос на получение URL содержит идентификатор версии ассета, имя файла, тип image или video и при наличии идентификатор папки. После успешной передачи клиент подтверждает загрузку, чтобы файл был зарегистрирован в версии.

Поле Тип и ограничение Назначение
file_name Строка, до 255 символов Исходное имя JPG-, PNG- или MP4-файла
file_type image или video Тип файла, совпадающий с asset_type
folder_id Целое число или null Папка внутри версии ассета
duration Число или null Продолжительность видеозаписи в секундах
media_uri Строка URI Системное имя объекта; при обычной загрузке формируется сервером

Таблица 6.4.6 — Входные метаданные медиафайла.

Для ограничения области проверки с файлом может быть связано описание зоны.

Поле Тип и ограничение Назначение
file_id Положительное целое число Медиафайл, к которому относится зона
zone_type_id Положительное целое число Тип зоны из справочника
zid, name Строки, до 255 символов Машинное и отображаемое наименования
model Строка или null Модель, если зона специализирована для неё
is_active Логическое значение Признак использования зоны
polygons Строка с сериализованным JSON-массивом Один или несколько полигонов
color_hex Строка вида #RRGGBB, ровно 7 символов Цвет отображения зоны
title Строка, до 256 символов, или null Дополнительный заголовок зоны

Таблица 6.4.7 — Входные данные зоны.

Логически полигон задаётся упорядоченным массивом точек [[x1, y1], [x2, y2], ...]. Способ задания координат — в пикселях либо в нормализованных долях размера кадра — должен быть единообразно установлен в спецификации API целевой поставки.

6.4.3. Параметры задач обработки

Автоматическая конвертация и валидация запускаются событием регистрации пакета. Пользователь не передаёт напрямую команды отдельным конвертерам.

Поле события model_version_uploaded Тип Назначение
mdl_name Строка Наименование зарегистрированной модели
mdl_id Положительное целое число Идентификатор модели
version Строка Обозначение версии
mdl_version_id Положительное целое число Идентификатор версии, по которому загружаются файлы

Таблица 6.4.8 — Вход автоматической проверки версии модели.

Для повторной проверки передаётся mdl_version_id. Профили конвертации, размер входа и путь к весам извлекаются из зарегистрированного пакета; текущий контракт не позволяет произвольно переопределять их в запросе revalidate.

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

Поле Тип и допустимое значение Назначение
entity_type Строка model Вид проверяемой сущности
entity_version_id Положительное целое число Идентификатор версии модели
asset_version_id Положительное целое число Идентификатор опубликованной версии ассета

Таблица 6.4.9 — Входные параметры проверочного запуска.

После проверки ссылок сервис сам получает модель, тип задачи, список медиафайлов и зоны, формирует UUID запуска и исполнительные сессии. Эти производные данные пользователь не вводит. Для управления задачей передаётся UUID существующего запуска и одна из команд: запуск, повторный запуск или остановка.

Параметр приоритета отсутствует в действующем контракте создания запуска; порядок выполнения определяется очередью. Если в целевой поставке требуется пользовательское назначение приоритетов, требуется предоставить значения приоритетов, правила их сравнения и поле API.

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

6.4.4. Управляющие и справочные данные

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

Область Входные данные
Жизненный цикл модели Создать, изменить, копировать последнюю версию, архивировать, восстановить, удалить, опубликовать, запустить повторную проверку
Поиск и фильтрация Наименование, диапазон времени изменения, тип модели, тип задачи, атрибут name/value, признаки архива и удаления, параметры страницы
Каталоги Наименование раздела, родительский раздел и идентификатор перемещаемой сущности
Комментарии Идентификатор ветки, текст сообщения и необязательная цитата; длина текста и цитаты — до 512 символов
Архив Вид сущности, срок хранения в днях и число сохраняемых версий
Справочники Идентификаторы и наименования типов задач, типов моделей, разделов и типов зон
Использование модели Наименование и версия модели; ответные сведения о сценариях и камерах используются для запрета небезопасного удаления и выбора объектов массового обновления

Таблица 6.4.10 — Управляющие и справочные входные данные.

Сведения об авторе операции — идентификатор пользователя, имя и отображаемое ФИО — добавляются доверенным серверным контекстом. Клиенту не следует использовать эти поля для подмены автора. Даты создания, изменения, публикации и удаления также формируются сервером, если контракт конкретной операции не устанавливает иное.

6.5. Способ кодирования входных данных

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

  • JSON и строковые поля передаются в Unicode, кодировка UTF-8;
  • имена полей и строковые значения JSON заключаются в двойные кавычки;
  • целые и вещественные числа передаются десятичными цифрами, разделитель дробной части — точка;
  • логические значения передаются литералами true и false, отсутствие значения — литералом null;
  • идентификаторы записей передаются положительными целыми числами, UUID запусков — строкой канонического представления;
  • перечисления передаются установленными машинными значениями с учётом регистра, например image, video, model;
  • временные границы фильтров API передаются целым числом секунд от эпохи Unix, если схема конкретного интерфейса не устанавливает формат ISO 8601;
  • цвет категории передаётся массивом трёх целых значений от 0 до 255, цвет зоны — строкой #RRGGBB;
  • ZIP, веса и медиафайлы передаются как двоичный поток или загружаются по временному подписанному URL; штатная загрузка не требует кодирования файла в Base64;
  • внутренние URI, префиксы и имена объектов хранилища формируются сервером из зарегистрированных идентификаторов. Пользователь не должен передавать произвольный путь к объекту вместо предусмотренного файлового поля.

Для сообщений очереди применяется JSON UTF-8 с согласованной схемой события. Изменение имени поля, типа значения или строкового значения перечисления без одновременного обновления отправителя и получателя не допускается.

7. Выходные данные

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

События и нарушения, формируемые при последующем применении опубликованной модели к рабочим видеопотокам камер, не являются выходными данными компонента LPI-VAP-MM. К его выходам относятся описание опубликованной версии и результаты её проверки на предварительно загруженных ассетах.

7.1. Характер и организация выходных данных

Выходные данные разделяются на постоянные и оперативные. Карточки моделей, версий, категорий, комментариев и запусков сохраняются в PostgreSQL. Исходные и преобразованные файлы моделей, проверочные данные и результаты запусков размещаются в S3-совместимом объектном хранилище. Состояния проверки и уведомления смежным компонентам передаются через очередь сообщений, а оперативный прогресс — через WebSocket.

Группа выходных данных Получатель Организация Назначение
Результат прикладной операции Веб-интерфейс или интеграционный клиент Синхронный ответ с объектом результата либо признаком успеха Подтверждение создания, изменения, публикации, архивирования и других команд
Карточка модели и версии Пользователь; реестр моделей Связанные записи модели, версий, категорий, атрибутов, комментариев и состояний Просмотр каталога и управление жизненным циклом
Файлы версии модели Реестр моделей; контур проверки и исполнения Исходный пакет, файлы описания, веса и преобразованные артефакты в объектном хранилище Повторная проверка и применение опубликованной версии
Состояние автоматической проверки Пользователь; реестр моделей Постоянное состояние версии и оперативные сообщения об изменении Отображение этапа конвертации, валидации и контрольного инференса
Диагностика проверки Пользователь; администратор Краткое сообщение в версии; подробности в защищённом серверном журнале Определение причины неуспешной проверки
Опубликованный каталог моделей LPI-VAP-RS и исполняющие компоненты Платформы 4.0 Снимок опубликованных версий и сообщения об изменениях Актуализация доступных моделей и категорий
Карточка проверочного запуска Пользователь; хранилище запусков Запись с UUID, версиями модели и ассета, состоянием, прогрессом и объёмом результатов Трассировка проверки модели на ассете
Оперативный прогресс запуска Веб-интерфейс Платформы 4.0 Последовательность WebSocket-сообщений Отображение выполнения и ошибки
Покадровые результаты Пользователь; объектное хранилище Исходные и визуализированные кадры, сообщения, журналы и события по UUID запуска Анализ обнаружений на проверочных данных
Сведения об использовании модели Пользователь; средства контроля целостности Идентификаторы и количество связанных сценариев и камер Контроль удаления и выбор сценариев для массового обновления
Результат массового обновления Пользователь; LPI-VAP-RS Ответ о постановке операции и уведомления о начале, ошибке или завершении Замена версии модели в выбранных сценариях
Сообщения об ошибках Пользователь; администратор Ошибка API, состояние версии или запуска, технический журнал Диагностика входных данных, зависимостей и выполнения

Таблица 7.1.1 — Характер и организация выходных данных.

Формирование основных выходов показано на схеме 7.1.

flowchart TB PKG["Пакет модели"] --> MR["Реестр моделей"] MR --> DB[("Метаданные моделей
и версий")] MR --> S3[("Файлы модели
и артефакты")] MR --> VERIFY["Конвертация,
валидация и тест"] VERIFY --> S3 VERIFY --> STATUS["Состояние
и диагностика"] MV["Версия модели"] --> RUN["Проверочный запуск"] AV["Версия набора данных"] --> RUN RUN --> PROGRESS["Состояние и прогресс"] RUN --> RESULT["Кадры, обнаружения
и журналы"] DB --> UI["Веб-интерфейс
Платформы 4.0"] STATUS --> UI PROGRESS --> UI RESULT --> UI MR -->|"опубликованный
каталог"| RS["Сценарии
и исполняющие компоненты"]

Схема 7.1 — Формирование и передача выходных данных.

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

7.2. Формат выходных данных

Вид выходных данных Формат Представление или содержимое
Ответы прикладных программных интерфейсов JSON поверх HTTP/HTTPS либо двоичный прикладной протокол Объект, массив объектов, логическое значение или унифицированный результат операции
Карточки моделей, версий, ассетов и запусков JSON Структурированные объекты по схемам соответствующих хранилищ
Параметры категории JSON-объект либо JSON-строка внутри ответа Идентификатор, наименования, порог, цвет и признаки категории
Перечень файлов модели JSON Массив относительных имён объектов версии
Ссылка на файл Строка URI Временная подписанная HTTP/HTTPS-ссылка на объект хранилища
Исходный пакет и веса ZIP и двоичные форматы модели Файлы, полученные при загрузке версии
Преобразованный артефакт ONNX, TensorRT, TorchScript или иной двоичный формат профиля Результат конвертации для поддерживаемого профиля исполнения
Состояние версии модели JSON в сообщении очереди и WebSocket Идентификатор версии, строковое состояние и необязательная диагностика
Снимок опубликованных моделей JSON в сообщении очереди Массив моделей, версий и категорий, доступных смежным компонентам
Сведения о запуске и прогрессе JSON UUID, состояние, процент выполнения, объём результатов и ошибка
Исходный кадр результата JPEG Двоичное изображение image.jpg
Визуализированный кадр JPEG image_vis.jpg с рамками, категориями, уверенностью и другими предусмотренными обозначениями
Покадровое сообщение JSON last_message.json; отдельный API возвращает содержимое как строку
События проверочного запуска JSON events.json; отдельный API возвращает содержимое как строку
Журнал кадра Текст UTF-8 last_execution_log.txt
Общий журнал запуска Текст UTF-8 log.txt
Визуализированная видеозапись MP4, если сформирована исполнителем Двоичный файл результата обработки видео
Представление в веб-интерфейсе HTML5, CSS, JavaScript Таблицы, индикаторы состояний, изображения, журналы и сообщения

Таблица 7.2.1 — Форматы выходных данных.

Формат преобразованного файла определяется профилем исполнения, а не только исходным форматом весов. Наличие конкретного артефакта подтверждается перечнем файлов зарегистрированной версии. Временный подписанный URI является способом доставки, но не постоянным идентификатором файла.

7.3. Описание выходных данных

7.3.1. Сведения о модели и её версиях

Результат создания или получения модели содержит поля таблицы 7.3.1.

Поле Тип Описание
mdl_id Целое число Идентификатор модели
name Строка Уникальное наименование модели
create_date, updated_at Целые числа Время создания и последнего изменения
task_type Объект Идентификатор и наименование типа задачи
mdl_type Объект Идентификатор и наименование типа модели
mdl_section Объект или null Раздел каталога модели
description Строка или null Описание модели
current_version Строка или пустое значение Текущая опубликованная версия
unpublished_version Логическое значение Признак наличия неопубликованной версии
attributes Массив объектов Атрибуты с идентификатором, именем и значением
thread_id Целое число Идентификатор ветки комментариев
is_archive Логическое значение Признак нахождения модели в архиве
deleted_at, days_until_deletion Целые числа или пустые значения Время архивирования и оставшийся срок до удаления
user_info Объект или null Сведения об авторе последнего учитываемого изменения

Таблица 7.3.1 — Выходные поля карточки модели.

В списковых операциях модели возвращаются массивом models; ответ с постраничной выдачей дополнительно содержит общее число записей total.

Карточка версии модели содержит поля таблицы 7.3.2.

Поле Тип Описание
model_version_id Целое число Идентификатор версии модели
model Объект Карточка родительской модели
version Строка Обозначение версии
description Строка или null Описание изменений версии
categories Массив объектов Категории, распознаваемые версией
attributes Массив объектов Дополнительные атрибуты версии
file Объект или null Метаданные зарегистрированного пакета или файла версии
created_at, updated_at Целые числа Время создания и изменения
is_upload_valid Логическое значение Успешность проверки принятого пакета
is_tested Логическое значение Успешность контрольного инференса
is_published Логическое значение Доступность версии для сценариев и исполнения
is_archive Логическое значение Признак нахождения версии в архиве
deleted_at, days_until_deletion Целые числа или пустые значения Время архивирования и срок до удаления
version_lag Целое число или null Отставание версии от актуальной по правилам реестра
status Строка Техническое состояние автоматической проверки
error_msg Строка или null Диагностическое сообщение при неуспешной проверке
thread_id, user_info Целое число и объект Ветка комментариев и автор изменения

Таблица 7.3.2 — Выходные поля версии модели.

Допустимые технические состояния версии:

Состояние Значение для получателя
created Версия зарегистрирована и ожидает загрузки файлов
invalid_archive Архив не прошёл базовую проверку
unpacking_archive Выполняется распаковка архива
unpack_done Архив успешно распакован; черновая версия может ожидать передачи на валидацию
unpack_error Распаковка архива завершилась ошибкой
in_validation Выполняются конвертация и валидация файлов
failed_validation Конвертация или валидация завершилась ошибкой
in_testing Выполняется контрольная загрузка и инференс
failed_testing Контрольная загрузка или инференс завершились ошибкой
tested Техническая проверка завершена успешно
failed Обработка завершилась иной ошибкой; причина приведена в error_msg

Таблица 7.3.3 — Состояния автоматической проверки версии.

Публикация, архивирование и логическое удаление не являются значениями status: они отражаются отдельными полями. Поэтому для принятия решения о доступности версии получатель должен совместно учитывать status, is_tested, is_published и is_archive.

Категория в карточке версии имеет следующие поля:

Поле Тип Описание
category_id Целое число Идентификатор категории
name Строка Машинное наименование
ru_name, full_ru_name Строки Краткое и полное русскоязычные наименования
color Строка с JSON-массивом Цвет визуализации по трём каналам
parameters Строка с JSON-объектом Порог и дополнительные признаки категории

Таблица 7.3.4 — Выходные поля категории.

Объект file содержит file_id, имя name, размер size в байтах, время загрузки upload_at и системный путь path_to_storage. Системный путь не следует использовать как пользовательскую ссылку: для скачивания выдаётся временный подписанный URI.

Комментарий содержит идентификаторы сообщения и ветки, идентификатор и отображаемые сведения автора, время создания и изменения, текст и цитату. История возвращается массивом сообщений, упорядоченным согласно контракту операции получения комментариев.

7.3.2. Результаты конвертации и валидации

При обработке версии формируются два вида результата:

  1. преобразованные файлы для каждого заявленного и поддерживаемого профиля;
  2. состояние проверки с краткой диагностикой.

Преобразованные веса загружаются в файловую область той же версии модели. Перечень файлов выдаётся отдельной операцией API, а получение файла выполняется по подписанной ссылке. Имена и расширения артефактов определяются типом модели и профилем исполнения.

Изменение состояния передаётся между менеджером проверки и реестром объектом:

Поле Тип Описание
mdl_version_id Целое число Проверяемая версия модели
status in_validation, failed_validation, in_testing, failed_testing, tested или failed Результат текущего этапа конвертации, валидации и тестового инференса
error_msg Строка или null Причина ошибки; при успехе отсутствует или пуста

Таблица 7.3.5 — Результат этапа автоматической проверки.

Для обновления интерфейса реестр формирует оперативное сообщение с полями mdl_version_id, status и error. После успешного контрольного инференса дополнительно публикуется уведомление о готовности версии:

Поле Тип Описание
mdl_name Строка Наименование модели
mdl_id Целое число Идентификатор модели
version Строка Обозначение версии
mdl_version_id Целое число Идентификатор готовой версии

Таблица 7.3.6 — Уведомление о готовности версии.

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

Отдельный формализованный протокол с перечнем всех проверок, предупреждений, версиями конвертеров, контрольными суммами и длительностью этапов в действующем прикладном контракте не выдаётся. Пользователю доступны состояние и error_msg, а подробная трассировка сохраняется в защищённом техническом журнале.

7.3.3. Результаты проверки модели на наборе данных

Выбранная версия ассета остаётся самостоятельным выходным объектом и входит в состав связи проверочного запуска.

Поле Тип Описание
asset_version_id Целое число Идентификатор версии ассета
asset Объект Идентификатор, наименование, тип и раздел родительского ассета
version Строка Обозначение версии проверочного набора
description Строка или null Описание версии
folders Массив объектов Папки с зарегистрированными медиафайлами
attributes Массив объектов Дополнительные атрибуты версии
is_published, is_archive Логические значения Признаки доступности для запуска и нахождения в архиве
created_at, updated_at Целые числа Время создания и изменения
thread_id, user_info Целое число и объект Ветка комментариев и автор изменения
version_lag, days_until_deletion Целые числа или null Отставание версии и оставшийся срок хранения

Таблица 7.3.7 — Выходные поля версии проверочного ассета.

Каждая папка содержит идентификатор, наименование и массив media_files. Запись медиафайла включает updfile_id, имя, размер, продолжительность, тип, время загрузки, системный media_uri, необязательный preview_uri и сведения об авторе загрузки.

Проверочный запуск представлен объектом таблицы 7.3.8.

Поле Тип Описание
launch_uuid Строка UUID Уникальный идентификатор запуска и префикс его файловых результатов
created_at, updated_at Целые числа Время создания и последнего изменения
description Строка или null Пользовательское описание запуска
thread_id Целое число Ветка комментариев запуска
entity_info Объект Тип model, идентификаторы и наименования модели и версии, тип задачи
asset Объект Идентификаторы и наименования ассета и его версии, тип данных
sandbox_session_id Целое число или null Идентификатор исполнительной сессии
progress_percent Целое число от 0 до 100 Общий процент выполнения
status Строка Состояние processing, completed, failed или stopped
result Строка или null Пользовательская оценка результата, если она задана
size Целое число байтов Суммарный объём сохранённых результатов

Таблица 7.3.8 — Выходные данные проверочного запуска.

Объект entity_info содержит entity_version_id, entity_name, entity_version, entity_id и task_type. Объект asset содержит asset_name, asset_version, asset_version_id, asset_type и asset_id. Таким образом, результат остаётся связан с точными версиями модели и набора данных даже после появления новых версий.

Оперативное WebSocket-сообщение содержит launch_uuid, progress_percent и необязательное поле error. Постоянный контекст обработки дополнительно содержит текущий файл, его индекс, суммарную длительность и упорядоченный массив media_files.

Поле элемента media_files Тип Описание
mf_id Целое число Идентификатор файла в контексте запуска
url Строка URI Системная ссылка на исходный медиафайл
duration Целое число Продолжительность видео; для изображения — ноль
type_file image или video Тип исходных данных
status pending или completed Состояние обработки файла
detection_count Целое число Число обнаружений, подсчитанное по events.json
total_steps Целое число Количество выполненных шагов обработки
frame_index_step Число Шаг индекса кадров, использованный исполнителем

Таблица 7.3.9 — Результат обработки медиафайла.

Состояние файла completed означает завершение работы с файлом, но не всегда подтверждает успешность всего запуска. Итог следует определять по полю status карточки запуска и наличию ошибки.

Файловые результаты организуются по UUID запуска, медиафайлу и номеру кадра:

Артефакт или ответ Содержание
frame_count Число сохранённых покадровых результатов
image.jpg Исходный кадр, поданный модели
image_vis.jpg Кадр с нанесёнными рамками, категориями и значениями уверенности
last_message.json Полное сообщение результата обработки кадра
last_execution_log.txt Журнал выполнения одного кадра
log.txt Общий журнал исполнительной сессии
events.json Объект с массивом обнаружений или событий за файл
media_uri Временная подписанная ссылка на исходный или визуализированный кадр
frame_msg Строка, содержащая JSON из last_message.json
frame_log Строка с содержимым покадрового журнала
session_log Строка с содержимым общего журнала
detection_events Строка, содержащая JSON из events.json

Таблица 7.3.10 — Покадровые и итоговые результаты запуска.

Для модели детекции результат логически содержит категорию объекта, координаты ограничивающей рамки и значение уверенности. Визуализированный кадр предоставляет их человекочитаемое представление. Машинная схема last_message.json и элемента events зависит от типа задачи и протокола конкретной модели; клиент не должен считать дополнительные поля одинаковыми для детекции, классификации и сегментации.

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

7.3.4. Результаты публикации и интеграционного обмена

После успешной публикации у версии устанавливается is_published=true, а в карточке модели актуализируются current_version и признак наличия неопубликованной версии. Смежным компонентам передаётся снимок опубликованного каталога. Одна запись снимка содержит:

Поле Тип Описание
is_error, error_msg Логическое значение и строка Результат подготовки записи каталога
model_id Строка Машинное наименование модели в интеграционном каталоге
version Строка Опубликованная версия
zones Массив Связанные зоны, если они предусмотрены
primary_categories Массив объектов Основные категории модели
secondary_categories Массив объектов Дополнительные категории модели
additional_categories Массив объектов Расширяющие категории, если они предусмотрены

Таблица 7.3.11 — Запись опубликованного каталога моделей.

Категория интеграционного каталога содержит id, supercategory, name, ru_name, en_name, признаки is_violation, is_primary, is_active, порог threshold, цвет как объект r/g/b и массив переводов translations.

При удалении версии, готовности версии или изменении отдельного файла передаётся краткая ссылка на сущность с полями mdl_name, mdl_id, version и mdl_version_id. Сообщение об изменении файла дополнительно содержит update_file_name. Получатель после такого уведомления должен запросить или обновить соответствующие данные, а не считать краткое сообщение полной карточкой версии.

Сводка использования модели имеет структуру:

Поле Тип Описание
model_name, model_version Строки Модель и версия
scenarios.ids Массив целых чисел Идентификаторы использующих версию сценариев
scenarios.total Целое число Число сценариев
cameras.ids Массив целых чисел Идентификаторы камер, на которых версия используется через сценарий
cameras.total Целое число Число камер

Таблица 7.3.12 — Сведения об использовании версии модели.

Немедленный результат постановки массового обновления содержит признак is_started, текст msg и объект current_process с наименованием модели, новой версией, временем постановки и списком идентификаторов сценариев. Оперативные уведомления фиксируют начало, ошибку и завершение процесса.

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

7.3.5. Сообщения о результате и ошибках

Синхронная операция возвращает созданный или изменённый объект либо унифицированный ответ с полями status и msg. Файловые операции могут возвращать логическое значение, массив имён файлов или массив подписанных ссылок. Результат постановки повторной проверки содержит mdl_version_id и текстовое сообщение msg.

Категория результата Канал Представление Действие пользователя
Успех синхронной операции Ответ API Объект результата либо status=true Продолжить работу с присвоенным идентификатором
Ошибка структуры HTTP-запроса Ответ HTTP Код состояния и JSON-поле detail Исправить поля или формат запроса
Ошибка прикладного двоичного API Ответ API Строковый code, сообщение msg и необязательный объект meta Исправить данные либо проверить наличие сущности и права
Ошибка загрузки пакета Ответ HTTP Код 4xx и описание причины Исправить архив и повторить загрузку
Ошибка автоматической проверки Карточка версии и WebSocket status=failed, error_msg или error Исправить пакет, профиль или файлы и запустить повторную проверку
Ошибка проверочного запуска Карточка запуска и WebSocket status=failed, поле error Проверить модель, ассет и доступность исполнителя
Недоступность результата Ответ API Ошибка отсутствия объекта либо пустое поле для ещё не сформированного файла Дождаться завершения или проверить срок хранения

Таблица 7.3.13 — Сообщения о результате и ошибках.

Пользовательская диагностика должна содержать этап и понятную причину, но не должна раскрывать трассировку стека, внутренние сетевые адреса, ключи объектов, учётные данные или токены подписанных запросов. Полная техническая информация сохраняется в журнале и предоставляется только уполномоченному администратору.

7.4. Способ кодирования выходных данных

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

  • структурированные ответы, сообщения очереди и WebSocket кодируются как JSON в UTF-8;
  • строки заключаются в двойные кавычки, логические значения передаются литералами true и false, отсутствие значения — литералом null;
  • машинные имена полей и значения перечислений передаются с учётом регистра;
  • числовые идентификаторы, времена, размеры и счётчики являются целыми числами; при JSON-представлении полей Protobuf типов int64 и uint64 они могут передаваться десятичной строкой для сохранения точности;
  • UUID запуска кодируется строкой канонического представления с дефисами;
  • время создания, изменения и постановки операции кодируется числом секунд от эпохи Unix;
  • процент выполнения кодируется целым числом от 0 до 100, размер файла и суммарный размер результатов — числом байтов;
  • состояния версии кодируются строками created, invalid_archive, unpacking_archive, unpack_done, unpack_error, in_validation, failed_validation, in_testing, failed_testing, tested, failed; состояния запуска — processing, completed, failed, stopped;
  • координаты и уверенность передаются числами без локализованного форматирования, десятичный разделитель — точка;
  • поля color и parameters категории в карточке версии могут содержать сериализованный JSON внутри строки; перед использованием клиент выполняет второй разбор JSON;
  • frame_msg и detection_events также содержат экранированный JSON внутри внешнего ответа и разбираются только после успешного получения строки;
  • текстовые журналы сохраняются в UTF-8;
  • ZIP, веса, преобразованные модели, JPEG и MP4 передаются как двоичные данные либо через подписанный URI; кодирование Base64 штатным способом выдачи не применяется;
  • постоянная адресация модели выполняется по идентификатору модели и версии, результата запуска — по UUID, медиафайлу и номеру кадра. Подписанный URI имеет ограниченный срок действия и не сохраняется как постоянная ссылка;
  • интеграционные уведомления не должны содержать учётные данные пользователя, секреты доступа к хранилищу и конфиденциальные параметры среды исполнения.

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

Приложения

Приложение А (рекомендуемое). Шаблон пакета модели

А.1. Структура пакета

Минимальная структура ZIP-пакета приведена ниже. Имена файлов model_info.json и coco_categories.json и их размещение в корне архива являются значимыми для загрузчика.

example_model-1.0.0.zip
├── model_info.json
├── coco_categories.json
├── weights/
│   └── model.onnx
└── model/
    └── artifacts/
        └── <дополнительные файлы, требуемые типом модели>

Каталог model/artifacts является условным и включается только тогда, когда это предусмотрено протоколом выбранного типа модели. Файлы с именами utils.py и tasks.py в этом каталоге не допускаются. Путь к весам должен совпадать со значением weights_path.

Перед упаковкой необходимо проверить:

  • наличие обоих обязательных JSON-файлов;
  • корректность JSON и кодировку UTF-8;
  • существование файла, на который указывает weights_path;
  • согласованность model_type, task_type и профилей исполнения;
  • совпадение идентификаторов категорий с выходами модели;
  • отсутствие паролей, токенов и абсолютных путей файловой системы;
  • отсутствие лишних копий весов и промежуточных результатов обучения.

А.2. Шаблон model_info.json

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

{
  "model_type": "<поддерживаемый тип модели>",
  "task_type": "<согласованный тип задачи>",
  "model_name": "example_model",
  "model_version": "1.0.0",
  "img_size": {
    "height": 640,
    "width": 640
  },
  "weights_path": "weights/model.onnx",
  "categories_path": "coco_categories.json",
  "deploy_profile": {
    "default_profile": "<профиль исполнения>",
    "profiles": [
      "<профиль исполнения>"
    ]
  },
  "model_attributes": {
    "confidence_threshold": {
      "type": "float",
      "default": 0.5,
      "ru_name": "Порог уверенности"
    }
  }
}

Если используется пользовательский тип модели, поля task_type, deploy_profile, img_size и weights_path обязательны. Для встроенного типа окончательный набор полей определяется валидатором этого типа.

А.3. Шаблон coco_categories.json

{
  "categories": [
    {
      "id": 1,
      "name": "example_object",
      "ru_name": "Объект",
      "full_ru_name": "Пример распознаваемого объекта",
      "supercategory": "object",
      "threshold": 0.5,
      "color": [0, 255, 0],
      "is_violation": false,
      "is_primary": true,
      "exclude": false
    }
  ]
}

Идентификатор id должен совпадать с идентификатором класса в выходе модели. Порог и цвет используются при обработке и визуализации результатов. Все поля примера проходят строгую проверку типов; дополнительные поля допускаются только тогда, когда они поддерживаются протоколом выбранного типа модели.

Приложение Б (справочное). Жизненный цикл версии модели

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

flowchart TB NEW(["Создание версии"]) --> CREATED["created"] CREATED -->|"архив не прошёл
базовую проверку"| INVALID["invalid_archive"] CREATED -->|"архив принят"| UNPACKING["unpacking_archive"] UNPACKING -->|"распаковка успешна"| UNPACKED["unpack_done"] UNPACKING -->|"ошибка распаковки"| UNPACK_ERROR["unpack_error"] INVALID -->|"повторная загрузка"| UNPACKING UNPACK_ERROR -->|"повторная загрузка"| UNPACKING UNPACKED -->|"сохранить и валидировать"| VALIDATION["in_validation"] VALIDATION -->|"конвертация и
валидация успешны"| TESTING["in_testing"] VALIDATION -->|"ошибка этапа"| FAILED_VALIDATION["failed_validation"] TESTING -->|"контрольный инференс
успешен"| TESTED["tested"] TESTING -->|"ошибка этапа"| FAILED_TESTING["failed_testing"] VALIDATION -->|"иная ошибка"| FAILED["failed"] TESTING -->|"иная ошибка"| FAILED FAILED_VALIDATION -->|"повторная проверка"| VALIDATION FAILED_TESTING -->|"повторная проверка"| VALIDATION FAILED -->|"повторная проверка"| VALIDATION TESTED -->|"повторная проверка"| VALIDATION TESTED -.-> FLAGS["Отдельные признаки:
is_tested, is_published,
is_archive"]

Схема Б.1 — Жизненный цикл автоматической проверки версии модели.

Краткие сообщения обмена имеют следующие структуры.

Событие, запускающее проверку:

{
  "mdl_name": "example_model",
  "mdl_id": 10,
  "version": "1.0.0",
  "mdl_version_id": 123
}

Сообщение о состоянии проверки:

{
  "mdl_version_id": 123,
  "status": "in_validation",
  "error_msg": ""
}

Сообщение об ошибке, предназначенное для интерфейса:

{
  "mdl_version_id": 123,
  "status": "failed_validation",
  "error": "Не найден файл весов, указанный в weights_path"
}

Уведомление о готовности версии:

{
  "mdl_name": "example_model",
  "mdl_id": 10,
  "version": "1.0.0",
  "mdl_version_id": 123
}

Примеры показывают логический состав сообщений. Числовые поля int64 при передаче в JSON через прикладной Protobuf-интерфейс могут быть представлены десятичными строками.

Приложение В (справочное). Результаты проверочного запуска

В.1. Организация файлов

Результаты группируются по UUID запуска, исходному медиафайлу и номеру кадра. Конкретное техническое имя каталога медиафайла формируется системой.

<launch_uuid>/
└── <media>/
    ├── log.txt
    ├── events.json
    └── frames/
        ├── 000000/
        │   ├── image.jpg
        │   ├── image_vis.jpg
        │   ├── last_message.json
        │   └── last_execution_log.txt
        └── <следующий кадр>/
            └── ...

Для проверки одного изображения используется результат кадра 000000. Для видео число каталогов зависит от длительности файла и шага обработки кадров.

Результат API Источник Содержание
frame_count Перечень каталогов кадров Число доступных покадровых результатов
media_uri image.jpg или image_vis.jpg Временная подписанная ссылка на кадр
frame_msg last_message.json Экранированный JSON результата одного кадра
frame_log last_execution_log.txt Журнал обработки одного кадра
session_log log.txt Общий журнал исполнительной сессии
detection_events events.json Экранированный JSON обнаружений за медиафайл

Таблица В.1 — Соответствие операций выдаваемым артефактам.

В.2. Сообщение прогресса

{
  "launch_uuid": "00000000-0000-0000-0000-000000000001",
  "progress_percent": 75,
  "error": ""
}

Поле progress_percent отражает общий прогресс запуска по всем файлам версии ассета. Завершение следует определять по состоянию карточки запуска, а не только по достижению значения 100.

В.3. Логическое представление обнаружения

Ниже приведён иллюстративный, а не нормативный пример. Точные имена полей events.json определяются типом задачи и протоколом модели.

{
  "events": [
    {
      "category_id": 1,
      "category_name": "example_object",
      "confidence": 0.91,
      "bbox": {
        "min_x": 120,
        "min_y": 80,
        "max_x": 420,
        "max_y": 560
      }
    }
  ]
}

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

Приложение Г (обязательное при подготовке целевой поставки). Уточняемые сведения

До выпуска утверждаемой редакции документа должны быть определены значения таблицы Г.1.

Группа Требуется установить Документ, в котором фиксируется результат
Идентификация поставки Обозначение редакции Платформы 4.0, версии компонента и контейнерных образов Формуляр и ведомость поставки
Системное ПО Версии серверной операционной системы, среды исполнения контейнеров и средств оркестрации Kubernetes, драйвера NVIDIA, CUDA, cuDNN, TensorRT и библиотек исполнения Формуляр и инструкция по установке
Технические средства Число узлов, CPU, RAM, GPU и видеопамять, ёмкость и производительность дисков, параметры сети Спецификация технических средств
Топология Число узлов кластера по типам, размещение составных частей по мастер-ноде и вычислительным нодам, резервирование Схема развёртывания
Поддержка моделей Перечень типов задач и моделей, исходных форматов весов и профилей исполнения Спецификация API и руководство пользователя
Ограничения пакета Максимальный размер ZIP и файла, число файлов и категорий, коэффициент сжатия Спецификация API
Именование версий Допустимый шаблон, длина и правила сравнения версий Спецификация API
Проверочные данные Предельный размер, разрешение и число изображений; размер, кодеки и длительность MP4 Спецификация API
Зоны Система координат, правила нормализации и допустимая геометрия полигонов Спецификация API
Асинхронные задачи Допустимый параллелизм, порядок очереди и необходимость пользовательского приоритета Руководство администратора и спецификация API
Выходные артефакты Имена, форматы, контрольные суммы и правила версионирования преобразованных файлов Спецификация API
Результаты проверки Машинные схемы детекции, классификации и сегментации; правила формирования MP4 Спецификация API
Протокол валидации Необходимость формализованного отчёта, состав проверок, предупреждений и версий конвертеров Спецификация целевой поставки
Массовое обновление Необходимость поэлементного результата для каждого сценария Спецификация API
Хранение Сроки хранения моделей, архивов, ассетов, запусков, кадров и журналов Политика хранения и руководство администратора
Подписанные ссылки Срок действия и правила повторной выдачи Спецификация API и требования безопасности
Резервное копирование RPO, RTO, периодичность, глубина хранения и порядок контрольного восстановления План резервного копирования
Производительность Контрольные пакеты и ассеты, профиль нагрузки, границы измерения и допустимый параллелизм Спецификация целевой поставки
Безопасность Роли, разрешённые операции, требования к журналированию и состав выдаваемой диагностики Модель доступа и требования безопасности

Таблица Г.1 — Сведения, уточняемые для целевой поставки.

Заполнение таблицы выполняется по утверждённым проектным решениям. Параметры контуров разработки не переносятся в документацию заказчика без отдельного согласования.

Приложение Д (справочное). Исходные тексты схем Mermaid

Приложение содержит исходный Mermaid-код всех графических схем документа. Диаграммы остаются в соответствующих разделах и приложениях, а настоящее приложение предназначено для просмотра, копирования и проверки кода схем в Mermaid-редакторе, а также для случаев, когда графическое представление недоступно.

Код Схема Раздел документа
MM-MER-001 Схема 1.1 — Место LPI-VAP-MM в Платформе 4.0 1.1. Обозначение и наименование программы
MM-MER-002 Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента 1.2. Программное обеспечение, необходимое для функционирования программы
MM-MER-003 Схема 2.1 — Функциональный цикл подготовки версии модели 2.1. Классы решаемых задач
MM-MER-004 Схема 3.1 — Загрузка пакета и создание версии модели 3.1.1. Загрузка модели и создание версии
MM-MER-005 Схема 3.2 — Конвертация и автоматическая проверка версии модели 3.1.2. Конвертация и валидация модели
MM-MER-006 Схема 3.3 — Проверка модели на версии ассета 3.1.3. Проверка модели на наборе данных
MM-MER-007 Схема 3.4 — Логическая структура LPI-VAP-MM и внешние связи 3.3. Структура программы с описанием функций составных частей
MM-MER-008 Схема 4.1 — Размещение составных частей компонента на узлах кластера Платформы 4.0 4.1.2. Схема развёртывания
MM-MER-009 Схема 4.2 — Масштабирование контура конвертации и проверочных запусков 4.3.3. Масштабирование
MM-MER-010 Схема 5.1 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке) 5.1.2. Запуск серверных составных частей
MM-MER-011 Схема 5.2 — Загрузка пользовательской сессии компонента 5.2.2. Порядок загрузки пользовательской сессии
MM-MER-012 Схема 6.1 — Связи входных сущностей компонента 6.1. Характер и организация входных данных
MM-MER-013 Схема 7.1 — Формирование и передача выходных данных 7.1. Характер и организация выходных данных
MM-MER-014 Схема Б.1 — Жизненный цикл автоматической проверки версии модели Приложение Б (справочное). Жизненный цикл версии модели

Исходные тексты

MM-MER-001. Схема 1.1 — Место LPI-VAP-MM в Платформе 4.0

Расположение схемы: 1.1. Обозначение и наименование программы.

flowchart TB
    UI["Веб-интерфейс<br/>Платформы 4.0"]
    subgraph MM["LPI-VAP-MM"]
        direction TB
        CAT["Каталог моделей<br/>и версий"]
        CHECK["Конвертация<br/>и автоматическая проверка"]
        ASSET["Проверочные данные"]
        RUN["Проверочные запуски<br/>и результаты"]
        CAT --> CHECK
        CHECK --> CAT
        ASSET --> RUN
        CAT --> RUN
        RUN --> CAT
    end
    UI --> CAT
    UI --> ASSET
    UI --> RUN
    CORE["LPI-VAP-CORE<br/>доступ, камеры"] <--> CAT
    CAT --> RS["LPI-VAP-RS<br/>сценарии"]
    CAT --> INF["Исполняющее ядро<br/>видеоаналитики"]
MM-MER-002. Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента

Расположение схемы: 1.2. Программное обеспечение, необходимое для функционирования программы.

flowchart TB
    L1["Уровень 1. Технические средства узлов кластера<br/>серверы x86-64, графические ускорители, накопители, сеть<br/>(раздел 4)"]
    L2["Уровень 2. Системное программное обеспечение<br/>«Московская серверная операционная система», среда исполнения контейнеров,<br/>Kubernetes, драйвер NVIDIA и средства предоставления ускорителей, CUDA, cuDNN, TensorRT<br/>(п. 1.2.1)"]
    L3["Уровень 3. Общесистемные сервисы Платформы 4.0<br/>PostgreSQL, MinIO, Apache Kafka, Redis, nginx и веб-шлюз<br/>(п. 1.2.2)"]
    L4["Уровень 4. Среды исполнения и библиотеки<br/>Python, Node.js, FastAPI, Celery, PyTorch, ONNX, OpenCV и другие<br/>(п. 1.2.3)"]
    L5["Уровень 5. Составные части LPI-VAP-MM<br/>реестр моделей, хранилища проверочных данных и запусков,<br/>менеджер проверки, исполнитель проверок и конвертеры<br/>(п. 1.1, подраздел 3.3)"]
    L6["Уровень 6. Клиентское программное обеспечение<br/>веб-браузер рабочего места пользователя<br/>(п. 1.2.5)"]
    EXTC["Смежные компоненты и внешние средства<br/>LPI-VAP-CORE (единая точка входа через СУДИР),<br/>LPI-VAP-RS и исполняющее ядро видеоаналитики<br/>(п. 1.2.4)"]

    L1 --> L2 --> L3 --> L4 --> L5 --> L6
    L5 <--> EXTC
MM-MER-003. Схема 2.1 — Функциональный цикл подготовки версии модели

Расположение схемы: 2.1. Классы решаемых задач.

flowchart TB
    ZIP["ZIP-пакет модели"] --> VER["Создание версии<br/>и регистрация метаданных"]
    VER --> CHECK["Проверка целостности,<br/>валидация и конвертация"]
    CHECK -->|ошибка| FIX["Исправление пакета<br/>или метаданных"]
    FIX --> VER
    CHECK -->|успешно| TEST["Проверка на версии<br/>набора данных"]
    ASSET["JPG, PNG, MP4<br/>и описания зон"] --> TEST
    TEST -->|результат не принят| FIX
    TEST -->|результат принят| PUB["Публикация версии"]
    PUB --> RS["Выбор модели<br/>в сценариях"]
    RS --> INF["Исполнение на видеопотоках<br/>смежным компонентом"]
MM-MER-004. Схема 3.1 — Загрузка пакета и создание версии модели

Расположение схемы: 3.1.1. Загрузка модели и создание версии.

sequenceDiagram
    actor U as Пользователь
    participant UI as Веб-интерфейс
    participant MR as svr-models-registry
    participant DB as PostgreSQL
    participant S3 as MinIO
    participant K as Kafka Платформы 4.0

    U->>UI: Создать модель или версию
    UI->>MR: Метаданные модели и версии
    MR->>DB: Создать записи каталога
    alt Загрузка пакета
        U->>UI: Передать ZIP-пакет
        UI->>MR: Поток файла
        MR->>S3: Сохранить и извлечь архив
        MR->>S3: Прочитать model_info.json и категории
        MR->>DB: Сохранить файлы, категории и unpack_done
        alt Выбрано «Сохранить и валидировать»
            MR->>K: model_version_uploaded
        else Версия сохранена как черновик
            MR-->>UI: Состояние unpack_done
        end
    else Копирование последней версии
        UI->>MR: CreateCloneModelVersionFromLastModel
        MR->>DB: Создать новую версию
        MR->>S3: Подготовить артефакты новой версии
    end
    MR-->>UI: Идентификатор и состояние версии
MM-MER-005. Схема 3.2 — Конвертация и автоматическая проверка версии модели

Расположение схемы: 3.1.2. Конвертация и валидация модели.

flowchart TD
    EVT["model_version_uploaded"] --> LOAD["Загрузка файлов<br/>из реестра"]
    LOAD --> CONV["Конвертация всех<br/>требуемых профилей"]
    CONV -->|ошибка| FC["failed"]
    CONV --> VAL["Проверка файлов<br/>и метаданных"]
    VAL -->|ошибка| FV["failed"]
    VAL --> TEST["Контрольный<br/>инференс"]
    TEST -->|ошибка| FT["failed"]
    TEST -->|успешно| OK["tested"]
    FC --> STATUS["Сохранение состояния<br/>и диагностического сообщения"]
    FV --> STATUS
    FT --> STATUS
    OK --> STATUS
MM-MER-006. Схема 3.3 — Проверка модели на версии ассета

Расположение схемы: 3.1.3. Проверка модели на наборе данных.

sequenceDiagram
    actor U as Пользователь
    participant UI as Веб-интерфейс
    participant LS as svr-launch-storage
    participant MR as svr-models-registry
    participant AS as svr-asset-storage
    participant SB as nr-sbx-backend
    participant CW as nr-sbx-celery
    participant S3 as MinIO
    participant KS as Kafka контура проверки
    participant K as Kafka Платформы 4.0

    U->>UI: Запустить проверку модели на ассете
    UI->>LS: StartLaunch(model_version, asset_version)
    LS->>MR: GetModelVersion
    LS->>AS: GetAssetVersion
    LS->>SB: start_launch_session
    SB->>CW: process_session
    loop Для каждого медиафайла
        CW->>KS: Прогресс обработки
        KS-->>SB: Состояние и результат задачи
        SB->>S3: Результаты, кадры и журналы
        SB->>K: change_launch_status
        K-->>LS: Состояние запуска
        opt Есть следующий файл
            LS->>K: continue_launch
            K-->>SB: Продолжить запуск
        end
    end
    LS-->>UI: completed или failed
    UI->>LS: Запрос кадров и результатов
    LS->>S3: Чтение артефактов
    LS-->>UI: Данные визуализации
MM-MER-007. Схема 3.4 — Логическая структура LPI-VAP-MM и внешние связи

Расположение схемы: 3.3. Структура программы с описанием функций составных частей.

flowchart TB
    UI["Веб-интерфейс Платформы 4.0"] --> GW["API-шлюз"]

    subgraph MM["LPI-VAP-MM — управление моделями"]
        MR["svr-models-registry<br/>каталог и версии"]
        AS["svr-asset-storage<br/>проверочные данные"]
        LS["svr-launch-storage<br/>запуски и результаты"]
        FM["inf-flows-manager<br/>валидация и обновление сценариев"]
        CONV["yolo-conversion / mm-conversion"]
        SB["nr-sbx-backend<br/>сессии проверки"]
        CEL["nr-sbx-celery<br/>исполнение на ассетах"]
        SCONV["nr-sbx-*-conversion"]
    end

    GW --> MR
    GW --> AS
    GW --> LS
    GW --> FM
    MR --> DBM[("PostgreSQL<br/>модели")]
    AS --> DBA[("PostgreSQL<br/>ассеты")]
    LS --> DBL[("PostgreSQL<br/>запуски")]
    MR --> S3[("MinIO")]
    AS --> S3
    LS --> S3
    MR <--> K["Kafka Платформы 4.0"]
    KS["Kafka контура проверки"]
    K --> FM
    FM --> CONV
    FM --> MR
    LS --> SB
    SB --> R["Redis"]
    SB --> CEL
    CEL --> SCONV
    CEL --> KS
    KS --> SB
    SB --> S3
    SB <--> K
    FM --> SS["LPI-VAP-RS<br/>хранилище сценариев"]
    MR --> SS
    K --> INF["Исполняющее ядро<br/>видеоаналитики"]
    INF --> MR
    INF --> S3
MM-MER-008. Схема 4.1 — Размещение составных частей компонента на узлах кластера Платформы 4.0

Расположение схемы: 4.1.2. Схема развёртывания.

flowchart TB
    USERS["Рабочие места<br/>пользователей"]
    SUDIR["СУДИР"]
    CORE["LPI-VAP-CORE<br/>единая точка входа<br/>и пользовательский контекст"]

    subgraph MASTER["Мастер-нода кластера Платформы 4.0"]
        direction TB
        GW["Веб-интерфейс и шлюз API<br/>(Платформа 4.0)"]
        APPS["Составные части LPI-VAP-MM:<br/>реестр моделей, проверочные<br/>данные, запуски"]
        DATA[("Общесистемные средства Платформы 4.0:<br/>PostgreSQL, объектное хранилище,<br/>брокер сообщений и очередь задач")]
        GW --> APPS --> DATA
    end

    subgraph COMPUTE["Вычислительная нода кластера (GPU)"]
        direction TB
        FM["Составные части LPI-VAP-MM:<br/>менеджер проверки и конвертеры"]
        RUN["Исполнитель<br/>проверочных запусков"]
        CACHE["Рабочие каталоги<br/>и кэш моделей"]
        NRI["Видеоаналитика LPI-VAP-CORE<br/>(остальные ускорители ноды)"]
        FM --> RUN --> CACHE
    end

    EXTC["Смежные компоненты:<br/>LPI-VAP-RS и исполняющее<br/>ядро видеоаналитики"]
    BACKUP["Резервное<br/>копирование"]

    USERS --> CORE
    SUDIR <--> CORE
    CORE --> GW
    APPS --> FM
    FM --> DATA
    RUN --> DATA
    APPS <--> EXTC
    DATA --> BACKUP
MM-MER-009. Схема 4.2 — Масштабирование контура конвертации и проверочных запусков

Расположение схемы: 4.3.3. Масштабирование.

flowchart TB
    N1["1 ускоритель<br/>1 задача конвертации или проверки<br/>одновременно"]
    N2["2 ускорителя<br/>2 задачи одновременно"]
    N4["4 ускорителя<br/>4 задачи одновременно"]
    NX["Дальнейшее масштабирование<br/>пропорционально числу<br/>выделенных ускорителей"]
    MASTER["Ресурсы мастер-ноды:<br/>рассчитываются по числу моделей и версий,<br/>объёму проверочных данных и результатов<br/>и срокам их хранения"]

    N1 --> N2 --> N4 --> NX
    MASTER -.-> N1
MM-MER-010. Схема 5.1 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке)

Расположение схемы: 5.1.2. Запуск серверных составных частей.

flowchart TB
    G1["1. Базовая инфраструктура узлов<br/>среда исполнения контейнеров и Kubernetes,<br/>сети, тома, графические ускорители"]
    G2["2. Хранение и обмен<br/>PostgreSQL, объектное хранилище,<br/>брокеры сообщений и очередь задач"]
    G3["3. Прикладные хранилища<br/>реестр моделей, проверочные данные, запуски"]
    G4["4. Автоматическая обработка<br/>менеджер проверки и конвертеры"]
    G5["5. Контур пользовательских проверок<br/>прикладной сервис, очередь, исполнитель"]
    G6["6. Внешний доступ<br/>веб-интерфейс и шлюз прикладных интерфейсов"]
    CHK{"Проверка готовности<br/>группы пройдена?"}
    RST["Перезапуск сервиса средствами оркестратора;<br/>запуск следующих групп приостановлен"]
    OK["Компонент готов к работе"]

    G1 --> G2 --> G3 --> G4 --> G5 --> G6 --> CHK
    CHK -->|нет| RST
    RST --> CHK
    CHK -->|да| OK
MM-MER-011. Схема 5.2 — Загрузка пользовательской сессии компонента

Расположение схемы: 5.2.2. Порядок загрузки пользовательской сессии.

sequenceDiagram
    actor U as Пользователь
    participant UI as Веб-интерфейс
    participant CORE as LPI-VAP-CORE<br/>единая точка входа
    participant GW as API-шлюз
    participant MR as Реестр моделей
    participant ST as Хранилища ассетов и запусков

    U->>UI: Открыть раздел «Модели»
    UI->>CORE: Проверить сессию и разрешения
    alt Сессия отсутствует или истекла
        CORE-->>UI: Требуется вход через СУДИР
        UI-->>U: Страница входа
    else Сессия действительна
        UI->>GW: Запрос каталога и справочников
        GW->>MR: Получить модели и версии
        MR-->>GW: Каталог и состояния
        GW->>ST: Получить связанные проверки
        ST-->>GW: Состояния и результаты
        GW-->>UI: Данные раздела
        UI-->>U: Каталог и доступные команды
    end
MM-MER-012. Схема 6.1 — Связи входных сущностей компонента

Расположение схемы: 6.1. Характер и организация входных данных.

flowchart TB
    REF["Справочники типов,<br/>разделов и категорий"] --> M["Карточка модели"]
    M --> MV["Версия модели"]
    PKG["ZIP-пакет модели"] --> MV
    REF --> MV
    MEDIA["JPG, PNG, MP4<br/>и описания зон"] --> AV["Версия набора данных"]
    A["Карточка набора<br/>проверочных данных"] --> AV
    MV --> L["Проверочный запуск"]
    AV --> L
    MV --> S["Сценарии,<br/>использующие версию"]
MM-MER-013. Схема 7.1 — Формирование и передача выходных данных

Расположение схемы: 7.1. Характер и организация выходных данных.

flowchart TB
    PKG["Пакет модели"] --> MR["Реестр моделей"]
    MR --> DB[("Метаданные моделей<br/>и версий")]
    MR --> S3[("Файлы модели<br/>и артефакты")]
    MR --> VERIFY["Конвертация,<br/>валидация и тест"]
    VERIFY --> S3
    VERIFY --> STATUS["Состояние<br/>и диагностика"]
    MV["Версия модели"] --> RUN["Проверочный запуск"]
    AV["Версия набора данных"] --> RUN
    RUN --> PROGRESS["Состояние и прогресс"]
    RUN --> RESULT["Кадры, обнаружения<br/>и журналы"]
    DB --> UI["Веб-интерфейс<br/>Платформы 4.0"]
    STATUS --> UI
    PROGRESS --> UI
    RESULT --> UI
    MR -->|"опубликованный<br/>каталог"| RS["Сценарии<br/>и исполняющие компоненты"]
MM-MER-014. Схема Б.1 — Жизненный цикл автоматической проверки версии модели

Расположение схемы: Приложение Б (справочное). Жизненный цикл версии модели.

flowchart TB
    NEW(["Создание версии"]) --> CREATED["created"]
    CREATED -->|"архив не прошёл<br/>базовую проверку"| INVALID["invalid_archive"]
    CREATED -->|"архив принят"| UNPACKING["unpacking_archive"]
    UNPACKING -->|"распаковка успешна"| UNPACKED["unpack_done"]
    UNPACKING -->|"ошибка распаковки"| UNPACK_ERROR["unpack_error"]
    INVALID -->|"повторная загрузка"| UNPACKING
    UNPACK_ERROR -->|"повторная загрузка"| UNPACKING
    UNPACKED -->|"сохранить и валидировать"| VALIDATION["in_validation"]
    VALIDATION -->|"конвертация и<br/>валидация успешны"| TESTING["in_testing"]
    VALIDATION -->|"ошибка этапа"| FAILED_VALIDATION["failed_validation"]
    TESTING -->|"контрольный инференс<br/>успешен"| TESTED["tested"]
    TESTING -->|"ошибка этапа"| FAILED_TESTING["failed_testing"]
    VALIDATION -->|"иная ошибка"| FAILED["failed"]
    TESTING -->|"иная ошибка"| FAILED
    FAILED_VALIDATION -->|"повторная проверка"| VALIDATION
    FAILED_TESTING -->|"повторная проверка"| VALIDATION
    FAILED -->|"повторная проверка"| VALIDATION
    TESTED -->|"повторная проверка"| VALIDATION

    TESTED -.-> FLAGS["Отдельные признаки:<br/>is_tested, is_published,<br/>is_archive"]

Лист регистрации изменений

Изм. Изменённых листов Заменённых листов Новых листов Аннулированных листов Всего листов в документе № документа Входящий № сопроводительного документа Подпись Дата
Рабочая редакция 0.4 Все листы Определяется при выпуске DOCX/PDF Требуется присвоить при выпуске Требуется подпись ответственного исполнителя 11.09.2026

Таблица — Лист регистрации изменений.

Рабочая редакция 0.4 отражает выравнивание содержания и оформления с описанием Центрального модуля и уточнение границы интеграции с СУДИР: единый вход выполняет LPI-VAP-CORE, а LPI-VAP-MM получает пользовательский контекст. Также уточнены состояния загрузки, распаковки, валидации и тестового инференса версии модели. Она не является зарегистрированным изменением утверждённого оригинала. При выпуске утверждаемой редакции необходимо:

  1. присвоить обозначение документа и формальный номер изменения;
  2. сформировать DOCX или PDF и указать фактическое число и номера листов;
  3. указать номер сопроводительного документа, если он оформляется;
  4. получить подписи ответственного исполнителя, проверяющего и нормоконтролёра в порядке, принятом для проекта;
  5. в последующих строках регистрировать только изменения утверждённого оригинала, а не отдельные технические коммиты Git.

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