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

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

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

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

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

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

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

Аннотация

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

Компонент обеспечивает настройку подключений к MLLM и экземпляров выполнения, создание и версионирование промптов, ведение эталонных изображений, назначение камер и условий запуска. Обработка может запускаться пользователем на отдельном изображении, автоматически по расписанию либо при поступлении события заданной категории. Задания выполняются асинхронно с учётом доступного параллелизма. Ответ MLLM проверяется по JSON Schema, сохраняется в журнале и в зависимости от типа промпта используется для классификации, локализации, создания или верификации события и консолидации результатов нескольких камер.

Исполняемые составные части поставляются контейнерными образами и размещаются в кластере Kubernetes Платформы 4.0 на серверных ЭВМ архитектуры x86 под управлением «Московской серверной операционной системы». Управляющие сервисы размещаются на мастер-ноде кластера, используют процессорные ресурсы, PostgreSQL, Kafka, Redis и S3-совместимое объектное хранилище; сервер MLLM размещается на выделенной LLM-ноде и выполняет инференс на одном или нескольких графических ускорителях класса NVIDIA H100 или A30 согласно выбранному типу конфигурации. Пользователь обращается к компоненту через общий веб-интерфейс Платформы 4.0 с персонального компьютера или тонкого клиента; установка серверных частей и весов MLLM на рабочее место не требуется.

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

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

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

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

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

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

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

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

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

flowchart TB UI["Веб-интерфейс
Платформы 4.0"] subgraph MLLM["LPI-VAP-MLLM"] direction TB CONN["Подключения к MLLM
и промпты"] QUEUE["Очередь заданий
и диспетчеризация"] REQ["Формирование
мультимодального запроса"] SRV["Сервер MLLM
на графических ускорителях"] RES["Проверка и применение
результата"] CONS["Консолидация результатов
нескольких камер"] CONN --> QUEUE QUEUE --> REQ REQ --> SRV SRV --> REQ REQ --> RES RES --> CONS end UI --> CONN UI --> RES CORE["LPI-VAP-CORE
доступ, камеры, кадры,
события"] --> QUEUE RES --> CORE CONS --> CORE

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

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

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

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

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

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

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

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

Наименование Версия Назначение
«Московская серверная операционная система» По спецификации поставки Целевая серверная операционная система эксплуатации мастер-ноды и LLM-ноды
Среда исполнения контейнеров По спецификации поставки Изолированное исполнение составных частей кластера в контейнерах
Kubernetes По спецификации поставки Оркестрация составных частей в кластере: размещение по типам узлов, контроль готовности, перезапуск при отказе, управление ресурсами
Драйвер NVIDIA Не ниже 580.76.05 либо совместимая с CUDA 12.6 версия по спецификации поставки Использование графических ускорителей LLM-ноды сервером MLLM
NVIDIA Container Toolkit По спецификации поставки Предоставление графических ускорителей контейнеру сервера MLLM
CUDA, библиотеки коллективного обмена и ядра PyTorch В составе согласованного образа MLLM Исполнение модели и распределение её вычислений между GPU
Служба синхронизации системного времени В составе целевой операционной системы Корректное выполнение расписаний и сопоставление кадров, заданий и событий по времени

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

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

Наименование Версия Использование компонентом
PostgreSQL Не ниже 17.5 Хранение подключений, экземпляров выполнения, промптов, истории версий, очереди и результатов; отдельная база промежуточных данных консолидации
Apache Kafka Не ниже 3.7.0 Передача заданий обработки, конфигурации промптов камер, ссылок на кадры, результатов консолидации и команд создания или проверки событий
Redis Не ниже 6.0.9 Кратковременное хранение двоичных изображений с ограниченным сроком жизни
MinIO (S3-совместимое хранилище) Не ниже выпуска RELEASE.2022-10-24 Хранение изображений промптов, примеров и файлов, связанных с результатами выполнения
nginx и общий API-шлюз Платформы 4.0 По спецификации поставки Единая точка доступа, выдача клиентского приложения, маршрутизация HTTP-, GraphQL-, API- и WebSocket-запросов
Средства единого входа и управления доступом LPI-VAP-CORE По спецификации поставки Взаимодействие Центрального модуля с СУДИР по протоколу OIDC/OAuth 2.0, формирование пользовательского контекста с ролью и полномочиями; LPI-VAP-MLLM получает этот контекст и проверяет разрешение на защищённую операцию

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

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

Среда исполнения Версия Составные части
Python Не ниже 3.11 Управление подключениями, промптами и заданиями, консолидация результатов, API-шлюз и вспомогательные серверные сервисы; шлюз формирования мультимодального запроса — не ниже 3.12
vLLM OpenAI-compatible server По спецификации образа целевой поставки Загрузка MLLM и исполнение запросов на одном или нескольких GPU
Node.js Не ниже 22.8.0 Сборка клиентского приложения; при поставке готового контейнерного образа на эксплуатационных серверах не требуется
Браузерная среда JavaScript Поддерживаемая версия браузера Исполнение пользовательского интерфейса на рабочем месте

Основные библиотеки и фреймворки приведены в таблице.

Библиотека или средство Версия Назначение
FastAPI Не ниже 0.115.12 Реализация прикладных HTTP- и API-интерфейсов
Uvicorn Не ниже 0.13.3 ASGI-сервер приложений
Pydantic Не ниже 2.11.4 Описание и проверка запросов, ответов и конфигурации
OpenAI Python SDK Не ниже 1.75.0 Обращение к OpenAI-совместимому API сервера MLLM
LangChain Не ниже 1.2.6 Формирование цепочки обработки мультимодального запроса в шлюзе MLLM
aiokafka Не ниже 0.12.0 Асинхронный обмен заданиями и результатами через Apache Kafka
APScheduler Не ниже 3.11.0 Планирование фоновых операций и обработка расписаний
HTTPX Не ниже 0.28.1 Асинхронное взаимодействие с внутренними и MLLM HTTP-интерфейсами
Pillow Не ниже 11.0.0 Чтение, преобразование и разметка изображений
MinIO SDK Не ниже 7.2.16 Работа с S3-совместимым объектным хранилищем
React Не ниже 18.2.0 Реализация пользовательского веб-интерфейса
Apollo Client Не ниже 3.6.9 Обмен пользовательского интерфейса с GraphQL API
vLLM, PyTorch, Transformers, CUDA и NCCL По спецификации образа MLLM Загрузка весов, подготовка мультимодального контекста и GPU-инференс, в том числе на нескольких ускорителях

Диапазон версии означает, что разные составные части используют совместимые, но не обязательно одинаковые версии библиотеки. Для эксплуатации применяются готовые контейнерные образы; установка Python-, Node.js- или ML-библиотек непосредственно в целевую операционную систему не требуется. Точный состав каждого образа фиксируется в формуляре поставки.

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

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

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

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

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

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

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

Язык Где применён
Python Серверная логика управления подключениями, промптами и заданиями, шлюз MLLM, консолидация, интеграционные и API-сервисы
TypeScript, JavaScript Пользовательский веб-интерфейс и клиентское взаимодействие с GraphQL-, HTTP- и WebSocket-интерфейсами
HTML, CSS, SCSS Представление и оформление экранных форм
SQL Схемы и операции с данными PostgreSQL
JSON, JSON Schema Параметры API, описание ожидаемой структуры ответа и итоговые результаты обработки
YAML Шаблоны мультимодальных запросов и конфигурации развёртывания контейнерных сервисов
Protocol Buffers Декларативное описание внутренних типизированных программных интерфейсов и сообщений
Bash Сценарии запуска и проверки готовности контейнерных составных частей

MLLM исполняется средствами готового контейнерного образа vLLM, PyTorch и CUDA. Низкоуровневые языки реализации этих сторонних средств не являются языками прикладной логики LPI-VAP-MLLM и отдельно в таблице не перечисляются.

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

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

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

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

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

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

Класс задач Функции компонента Результат
Управление подключениями к MLLM Создание и редактирование подключения; просмотр перечня подключений и состояния активности; включение и отключение подключения; выбор доступной модели; ведение одного или нескольких экземпляров выполнения и их пропускной способности Настроенное активное подключение, пригодное для выполнения промптов
Управление промптами Создание, просмотр, редактирование, архивирование или удаление промпта; выбор модели и типа анализа; включение и отключение автоматического выполнения Актуальная рабочая конфигурация мультимодальной задачи
Версионирование промптов Сохранение текстового задания и его изменений; просмотр истории и предыдущих редакций Прослеживаемая история изменений промпта
Подготовка примеров Загрузка пользовательских примеров и эталонных изображений; включение их в контекст запроса для сравнительного анализа Набор изображений, связанный с промптом и используемый при его выполнении
Назначение источников и расписаний Привязка промпта к камерам; запуск через интервалы в секундах, минутах или часах, в фиксированное время и по выбранным дням недели Автоматическое создание заданий для кадров назначенных камер
Событийный запуск Запуск промпта при поступлении события заданной категории; передача текущего и дополнительных кадров, времени и идентификатора исходного события Задание MLLM, связанное с контекстом события видеоаналитики
Ручное тестирование Загрузка и обработка отдельного кадра до включения автоматического запуска; просмотр ответа и диагностических сведений Результат контрольного выполнения промпта на выбранном изображении
Асинхронная и параллельная обработка Постановка запросов в очередь, распределение их между доступными экземплярами MLLM с учётом настроенной ёмкости, ведение состояний выполнения и ошибок Управляемая обработка нескольких поступивших заданий без блокирования пользовательского интерфейса
Структурированный анализ Формирование запроса из текста, изображений и схемы ответа; поддержка задач классификации, локализации объектов и проверки ранее зарегистрированного события; проверка ответа по ожидаемой структуре Валидированный результат JSON с признаком события или нарушения, описанием, категориями и, при локализации, координатами областей
Учёт и просмотр результатов Хранение отправленных промптов, параметров запуска, состояния, ответа и ошибки; просмотр результатов всех выполнений в едином интерфейсе Журнал выполнений с данными для анализа и диагностики
Формирование и проверка событий Передача положительного результата в хранилище событий; подтверждение, отклонение или удаление проверяемого события в соответствии с ответом MLLM Новое событие либо сохранённый результат проверки существующего события
Консолидация результатов Объединение и сопоставление действующих результатов одной категории от нескольких камер, назначенных одному объекту контроля Итоговый консолидированный результат после получения требуемого набора частных результатов
Программное управление Предоставление через API Платформы 4.0 операций управления подключениями, промптами, примерами, запусками и результатами Выполнение функций компонента из пользовательского интерфейса и интеграционных средств

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

flowchart LR CFG["Подключение, модель
и промпт"] --> START{"Условие запуска"} CAM["Камеры, расписания
и категории событий"] --> START START -->|ручной запуск| FILE["Загруженный кадр"] START -->|по расписанию| SNAP["Текущий кадр камеры"] START -->|по событию| EVENT["Кадр и контекст события"] REF["Эталонные изображения"] --> REQUEST["Мультимодальное задание"] FILE --> REQUEST SNAP --> REQUEST EVENT --> REQUEST REQUEST --> QUEUE["Очередь и распределение
по экземплярам MLLM"] QUEUE --> MLLM["Выполнение запроса MLLM"] MLLM --> VALIDATE{"Ответ соответствует
заданной структуре?"} VALIDATE -->|нет| ERROR["Состояние ошибки
и диагностика"] VALIDATE -->|да| RESULT["Сохранённый результат JSON"] RESULT --> VIEW["Просмотр результата"] RESULT --> DIRECT["Создание или проверка события"] RESULT --> CONS["Консолидация результатов"]

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

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

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

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

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

Тип конфигурации Состав серверов MLLM Предельный объём контекста Скорость обработки запросов
Тип 1 1 сервер: 48 ядер x86, 1 ускоритель класса NVIDIA H100 с 80 ГБ видеопамяти, 512 ГБ RAM, 1000 ГБ SSD До 32 784 токенов Не менее 0,15 запроса в минуту
Тип 2 1 сервер: 48 ядер x86, 8 ускорителей класса NVIDIA A30 с 24 ГБ видеопамяти каждый, 512 ГБ RAM, 1000 ГБ SSD До 8 192 токенов Не менее 1 запроса в минуту
Тип 3 2 сервера, каждый: 48 ядер x86, 4 ускорителя класса NVIDIA A30 с 24 ГБ видеопамяти каждый, 512 ГБ RAM, 1000 ГБ SSD До 4 096 токенов Не менее 6 запросов в минуту

Таблица 2.3.1 — Показатели назначения и соответствующие конфигурации сервера MLLM.

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

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

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

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

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

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

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

Работа компонента состоит из двух связанных циклов:

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

Общий алгоритм выполнения показан на схеме 3.1.

flowchart TD START(["Условие запуска"]) --> MODE{"Режим запуска"} MODE -->|ручной| UPLOAD["Загрузка отдельного кадра"] MODE -->|расписание| SNAPSHOT["Получение текущего кадра камеры"] MODE -->|категория события| TRIGGER["Текущий и дополнительные кадры,
контекст события"] MODE -->|проверка события| VERIFY["Кадр зарегистрированного события"] UPLOAD --> INPUT SNAPSHOT --> INPUT TRIGGER --> INPUT VERIFY --> INPUT["Проверка промпта, подключения,
назначения камеры и изображения"] INPUT -->|ошибка| INPUT_ERROR["Фиксация отказа входных данных"] INPUT -->|успешно| TASK["Создание задания
со статусом «ожидает»"] TASK --> DISPATCH{"Есть свободный
экземпляр MLLM?"} DISPATCH -->|нет| TASK DISPATCH -->|да| CONTEXT["Формирование текста, изображений,
параметров и схемы ответа"] CONTEXT --> CALL["Вызов выбранного экземпляра MLLM"] CALL -->|сетевая ошибка
или превышение времени| FAILED["Статус «ошибка»,
диагностическое сообщение"] CALL -->|ответ получен| JSON{"Ответ является JSON
требуемой структуры?"} JSON -->|нет| FAILED JSON -->|да| SAVE["Сохранение результата
со статусом «выполнено»"] SAVE --> ROUTE{"Способ применения"} ROUTE -->|просмотр| UI["Журнал выполнений"] ROUTE -->|итоговый результат| EVENT["Создание события"] ROUTE -->|частный результат| CONS["Ожидание результатов
других камер"] ROUTE -->|проверка события| CONFIRM["Подтверждение или отклонение
исходного события"] CONS -->|набор неполон
или устарел| WAIT["Ожидание либо удаление
устаревших данных"] CONS -->|набор полон| EVENT

Схема 3.1 — Общий алгоритм выполнения мультимодального задания.

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

3.1.1. Создание и проверка подключения к MLLM

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

  1. Пользователь с соответствующим разрешением задаёт наименование, поддерживаемый тип программного интерфейса, наименование и версию модели.
  2. Для подключения задаётся один или несколько экземпляров выполнения. Для каждого экземпляра указываются адрес API, допустимое число параллельных соединений и, если требуются, реквизиты аутентификации и прокси-сервер.
  3. Пользовательский интерфейс проверяет заполнение обязательных полей и передаёт данные через API-шлюз в inf-llm-integration.
  4. Сервис сохраняет подключение и экземпляры выполнения в PostgreSQL. Каждому объекту присваивается внутренний идентификатор.
  5. Техническая доступность проверяется обращением к служебной точке получения моделей либо контрольным мультимодальным запросом — в зависимости от интерфейса целевой MLLM. Проверяются разрешение имени и маршрутизация, установление защищённого соединения, аутентификация, наличие выбранной модели и получение ответа.
  6. При положительном результате пользователь оставляет или переводит подключение в активное состояние. При отрицательном результате подключение следует сохранить неактивным до устранения причины. Отключение запрещает назначение ему новых заданий, не удаляя конфигурацию и ранее полученные результаты.

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

3.1.2. Создание и версионирование промпта

При создании промпта пользователь задаёт наименование, описание, текст задания, тип обработки и подключение к MLLM. Для автоматического использования результата задаётся JSON Schema или эквивалентное описание обязательных полей. В схеме указываются признаки события и нарушения, описание и допустимые категории, а для локализации — координаты областей и их метки. Для проверки события задаётся структура решения о подтверждении или отклонении.

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

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

3.1.3. Назначение источников и условий запуска

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

Режим Условие создания задания Исходные данные
Ручной Пользователь выбирает активный промпт и загружает отдельный кадр Загруженное изображение и идентификатор промпта
Периодический Наступает заданный интервал в секундах, минутах или часах, фиксированное время либо выбранный день недели Текущий кадр назначенной камеры и время снимка
По категории события Исполняющий контур получает результат базовой видеоаналитики требуемой категории Текущий кадр, дополнительные кадры исходного события, камера, категория, идентификатор и фактическое время события
Проверка события Хранилище событий сообщает о регистрации события, для камеры и категории которого назначен активный проверочный промпт Изображение события, его категории, область локализации, идентификаторы и время

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

3.1.4. Формирование мультимодального запроса

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

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

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

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

3.1.5. Выполнение запроса и разбор ответа

После подготовки входных данных inf-llm-integration создаёт постоянную запись задания со ссылками на промпт, MLLM, камеру, изображение и время кадра. Диспетчер выбирает задания в состоянии ожидания и распределяет их по экземплярам выполнения. Число одновременно переданных заданий одному экземпляру не превышает настроенное значение его пропускной способности; остальные задания остаются в очереди.

Для назначенного задания создаётся запись выполнения с уникальным идентификатором, временем начала и исходным состоянием. Адаптер выбирается по типу подключения. При использовании поставляемого сервера запрос проходит через llm-agent, который формирует OpenAI-совместимые сообщения, подставляет изображения и схему ответа, после чего вызывает llm-vllm. Сервер модели возвращает ответ адаптеру, а затем — в inf-llm-integration.

Состояния исполнительного цикла приведены в таблице 3.1.1.

Состояние Содержание
Ожидает Задание зарегистрировано, но свободный экземпляр выполнения ещё не назначен
Выполняется Создана запись выполнения, запрос передан выбранному экземпляру MLLM
Выполнено Получен и успешно проверен структурированный ответ; результат и время окончания сохранены
Ошибка Недоступны входные данные или MLLM, превышено время ожидания, получен некорректный ответ либо возникла внутренняя ошибка
Отменено Активное выполнение остановлено по команде пользователя или управляющего API, если отмена допустима для текущего состояния

Таблица 3.1.1 — Состояния выполнения мультимодального задания.

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

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

3.1.6. Консолидация и применение результатов

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

  • если ответ является итоговым событием или нарушением и связан с камерой, inf-llm-integration формирует типизированное сообщение события с категориями, описанием, изображением, временем исходного кадра, идентификатором промпта и исходным JSON;
  • если ответ является частным нарушением и содержит правило консолидации, он передаётся в inf-llm-event-consolidation вместе с камерой, изображением, категорией и сроком актуальности;
  • если выполнялся проверочный промпт, результат передаётся хранилищу событий как решение о подтверждении или отклонении, комментарий и сведения о применённом промпте; при предусмотренном схемой решении событие может быть помечено на удаление;
  • если признаки события и нарушения отрицательны, результат остаётся в журнале выполнений и новое событие не создаётся.

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

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

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

Метод Реализация и назначение
Версионирование промпта При создании и каждом изменении текста формируется запись истории с временной меткой. Текущая редакция хранится в основной записи, предыдущие доступны для просмотра и прослеживаемости
Управление жизненным циклом Признаки активности и логического удаления исключают подключение или промпт из нового автоматического выполнения без немедленного физического удаления связанных данных
Планирование Интервалы, фиксированное время и дни недели преобразуются в конфигурацию камеры. Исполняющий контур проверяет условие на поступающих кадрах и создаёт задание при наступлении времени
Событийный запуск Категория результата базовой видеоаналитики сопоставляется с категорией триггера. В запрос передаются кадры и время исходного события, что сохраняет временную привязку результата MLLM
Асинхронная очередь Задание сохраняется до выделения исполнителя. Диспетчер периодически выбирает ожидающие записи, группирует их по MLLM и назначает свободным экземплярам
Ограничение параллелизма Для каждого экземпляра задаётся максимальное число соединений. Свободная ёмкость рассчитывается как разность лимита и числа активных запросов; избыток остаётся в очереди
Формирование мультимодального контекста Шаблон преобразуется в последовательность системных и пользовательских сообщений, текста, целевого, дополнительных и эталонных изображений. Целевое изображение сохраняет первое положение среди кадров события
Контроль контекста Применяется предельная длина, соответствующая выбранному типу оборудования и модели. Правила подсчёта токенов, состава визуальных токенов и резерва ответа фиксируются спецификацией целевой поставки
Структурированный вывод MLLM получает JSON Schema либо эквивалентное описание ответа. После получения выполняются разбор JSON, проверка обязательных полей, типов и категорий; непрошедший проверку ответ не используется для создания события
Классификация Определяется наличие события или нарушения на изображении, формируются описание и категории без обязательной локализации объектов
Локализация Дополнительно формируются координаты областей и метки. При включённой нормализации координаты приводятся к установленной системе изображения
Верификация события Кадр и, при необходимости, выделенная область ранее зарегистрированного события повторно анализируются MLLM; результатом является статус подтверждения или отклонения и комментарий
Консолидация Частные результаты группируются по объекту и категории, ограничиваются сроком актуальности и объединяются только при наличии результата от всех требуемых камер
Контроль состояния Выполнению присваивается UUID, сохраняются состояния, временные метки и ошибка. Изменения передаются пользовательскому интерфейсу асинхронным уведомлением и доступны через API
Ограничение повторной обработки Перед выполнением проверяются активность и назначение промпта камере; консолидация одной категории защищена блокировкой, а использованные частные записи удаляются. Эти меры не обеспечивают глобальную идемпотентность: повторно доставленное входное сообщение может создать новое задание, если отдельное правило дедупликации не установлено интеграционным контрактом

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

Структурная схема компонента и его окружения показана на схеме 3.2. Сплошной границей выделены составные части LPI-VAP-MLLM; внешние блоки относятся к Платформе 4.0 и предоставляют компоненту необходимые данные или принимают его результаты.

flowchart LR subgraph PLATFORM["Смежные компоненты Платформы 4.0"] UI["Веб-интерфейс
и API-шлюз"] CORE["LPI-VAP-CORE
единая точка входа,
роли и полномочия"] CAM["Управление камерами
и связями объектов"] FRAME["Получение кадров
и базовая видеоаналитика"] DTS["Временное хранилище
изображений"] DICT["Справочник моделей
и категорий"] EVENTS["Хранилище событий"] end subgraph COMPONENT["LPI-VAP-MLLM"] INT["inf-llm-integration
управление и диспетчеризация"] DB1[("PostgreSQL
конфигурация и выполнения")] AGENT["llm-agent
формирование запроса"] VLLM["llm-vllm
GPU-инференс"] CONS["inf-llm-event-consolidation
объединение результатов"] DB2[("PostgreSQL
частные результаты")] end CORE --> UI UI <-->|"GraphQL / внутренний RPC"| INT CAM -->|"назначения и расписания"| FRAME FRAME -->|"задание, UUID кадров"| INT DTS <-->|"получение и размещение изображений"| INT DICT -->|"модели и категории"| INT INT <-->|"прикладные данные"| DB1 INT -->|"HTTP JSON"| AGENT AGENT -->|"OpenAI-совместимый API"| VLLM VLLM -->|"структурированный ответ"| AGENT AGENT -->|"JSON"| INT INT -->|"итоговое событие"| EVENTS INT -->|"частный результат"| CONS CONS <-->|"состояние консолидации"| DB2 CAM -->|"состав камер объекта"| CONS CONS -->|"доказательные изображения"| DTS CONS -->|"консолидированное событие"| EVENTS EVENTS -->|"событие для проверки"| INT

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

Составная часть Назначение Основные входы Основные выходы и данные
inf-llm-integration Центральное управление подключениями, экземплярами выполнения, промптами, примерами и историей; приём заданий; очередь и диспетчеризация; проверка ответа; формирование событий и заданий консолидации Команды API, конфигурация камер и промптов, UUID и ссылки изображений, сообщения о событиях, справочники категорий, ответы адаптера MLLM Записи PostgreSQL о конфигурации, заданиях и выполнениях; состояния для интерфейса; запросы к MLLM; прямые события; сообщения консолидации
llm-agent Преобразование шаблона и входных данных в мультимодальные сообщения поддерживаемого API; подстановка изображений и схемы ответа; преобразование ответа модели в прикладной JSON HTTP-запрос с текстом, изображениями, параметрами, камерой и категорией OpenAI-совместимый запрос серверу модели; структурированный JSON для inf-llm-integration; постоянное прикладное хранилище не используется
llm-vllm Загрузка весов MLLM и выполнение генерации на одном или нескольких GPU Мультимодальные сообщения, параметры генерации и схема ответа через OpenAI-совместимый HTTP API Ответ модели; сведения о доступных моделях и готовности; веса и кэш модели размещаются на серверных технических средствах
inf-llm-event-consolidation Хранение действующих частных результатов, сопоставление камер с объектом, проверка полноты набора и формирование одного итогового события JSON-сообщения консолидации, изображения, камера, категория, срок актуальности, состав камер объекта Промежуточные записи PostgreSQL и рабочие изображения; итоговое событие с основным и дополнительными кадрами; удаление использованных или устаревших данных

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

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

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

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

Взаимодействующая программа или сервис Направление Передаваемые данные Протокол и инициатор
Веб-интерфейс и API-шлюз Платформы 4.0 Двустороннее Команды управления подключениями, промптами, примерами и запусками; списки, история, состояния и результаты HTTPS и GraphQL от браузера к API-шлюзу; внутренний типизированный RPC от шлюза к inf-llm-integration; инициатор — пользователь или программный клиент
LPI-VAP-CORE — единая точка входа и управление доступом В сторону пользовательского контура компонента Проверенный пользовательский контекст, сессия, роль и полномочия LPI-VAP-CORE взаимодействует с СУДИР по OIDC/OAuth 2.0 и передаёт контекст через защищённый контур Платформы 4.0; LPI-VAP-MLLM проверяет полномочие при каждом защищённом запросе
Средства управления камерами Двустороннее Назначения промптов, расписания, перечни камер промпта и связи камер с контролируемыми объектами GraphQL или внутренний RPC при сохранении формы; HTTP API по запросу консолидации; инициатор — пользователь либо модуль консолидации
Контур получения кадров и видеоаналитики В LPI-VAP-MLLM Задание выполнения, идентификаторы текущего и дополнительных кадров, камера, время, категория и идентификатор исходного события Сообщения Apache Kafka в типизированном или JSON-представлении; инициатор — расписание либо событийный блок исполняющего контура
Временное хранилище двоичных данных Двустороннее Получение кадра по UUID; размещение основного и дополнительных изображений итогового события Внутренний HTTP/Twirp API; инициатор — inf-llm-integration или inf-llm-event-consolidation
S3-совместимое объектное хранилище Двустороннее Рабочие копии кадров, загруженные примеры и изображения выполнений S3 API; инициатор — серверные составные части LPI-VAP-MLLM
Справочник моделей и категорий В LPI-VAP-MLLM Доступные первичные и вторичные категории и уведомления об их актуализации Внутренний RPC и сообщения Apache Kafka; инициатор — inf-llm-integration либо сервис справочника при обновлении
Сервер MLLM Двустороннее Перечень доступных моделей, текстовые и визуальные сообщения, параметры генерации, схема ответа и результат Защищённый OpenAI-совместимый HTTP API; инициатор — llm-agent или иной включённый в поставку адаптер
Хранилище событий Двустороннее Прямые и консолидированные события; уведомления о сохранённых событиях; решения о подтверждении или отклонении Apache Kafka для событий и уведомлений, внутренний RPC для изменения статуса; инициатор — LPI-VAP-MLLM или хранилище событий
PostgreSQL Двустороннее Подключения, экземпляры выполнения, промпты, история, очередь, результаты и промежуточные данные консолидации Сетевой протокол PostgreSQL; инициатор — соответствующая серверная составная часть
Apache Kafka Двустороннее Задания, обновления конфигурации, события, уведомления, прогресс и сообщения консолидации Протокол Kafka; публикация инициируется производителем события, получение — зарегистрированной группой потребителей
Redis Двустороннее Кратковременные двоичные данные и идентификаторы с ограниченным сроком жизни Сетевой протокол Redis через сервис временного хранения; инициатор — смежный сервис хранения данных

Таблица 3.4.1 — Связи LPI-VAP-MLLM с другими программами и инфраструктурными сервисами.

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

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

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

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

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

Управляющим сервисам выделяется доля ресурсов мастер-ноды, соответствующая позиции поставки LPI-VAP-MLLM (подраздел 4.3). LLM-нода предоставляется заказчиком в одном из трёх нормативных типов конфигурации (п. 4.3.2); выбор типа определяет показатели назначения подраздела 2.3. Качественные требования, минимально допустимые версии программной среды и удельные величины для расчёта ёмкости приведены в подразделе 4.4 в форме «не ниже». Приведённые характеристики являются требованиями к целевому контуру, а не описанием оборудования разработки.

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

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

Тип узла кластера Размещаемые составные части компонента Потребляемые ресурсы узла
Мастер-нода inf-llm-integration, llm-agent, inf-llm-event-consolidation; выделенные компоненту базы данных PostgreSQL, бакеты объектного хранилища, топики брокера сообщений и область временного хранилища изображений; маршруты веб-интерфейса и шлюза прикладных интерфейсов Процессорные ядра и оперативная память управляющих сервисов с резервом на одновременное кодирование изображений; дисковое пространство хранилищ конфигурации, результатов, эталонных изображений и промежуточных данных консолидации
LLM-нода llm-vllm — сервер мультимодальной модели Графические ускорители выбранного типа конфигурации и их видеопамять; процессорные ядра и оперативная память загрузки весов и обработки запросов; SSD для контейнерного образа, весов и кэша модели

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

Мастер-нода входит в состав инфраструктуры Платформы 4.0 и не выделяется под компонент отдельно. Веб-интерфейс, шлюз прикладных интерфейсов, средства аутентификации и разграничения доступа, PostgreSQL, объектное хранилище, брокер сообщений и временное хранилище предоставляются Платформой 4.0; компонент использует в них собственные базы данных, бакеты и топики. LLM-нода в позицию поставки LPI-VAP-CORE не входит и предоставляется для LPI-VAP-MLLM. Способ установки графических ускорителей должен обеспечивать их прямую доступность серверу MLLM, требуемую полосу PCI Express и согласованную работу драйвера, CUDA, NCCL и среды исполнения контейнеров. При виртуальном размещении должен быть предусмотрен поддерживаемый способ передачи ускорителя виртуальной машине или контейнеру без уменьшения доступной видеопамяти ниже значения выбранного типа конфигурации.

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

flowchart LR ARM["Рабочее место
веб-браузер"] INGRESS["Ingress и веб-шлюз
HTTPS, WebSocket"] subgraph MASTER["Мастер-нода Kubernetes"] INT["inf-llm-integration
управление и очередь"] AGENT["llm-agent
формирование запроса"] CONS["inf-llm-event-consolidation
консолидация"] STORE["PostgreSQL, MinIO, Kafka"] TEMP["Redis
временные изображения"] INT --> AGENT INT --> CONS INT --> STORE CONS --> STORE INT --> TEMP end subgraph LLM["LLM-нода Kubernetes (GPU)"] VLLM["llm-vllm
сервер MLLM"] WEIGHTS["Веса и кэш модели"] VLLM --> WEIGHTS end CORE["LPI-VAP-CORE
камеры, кадры, события"] BACKUP["Средства резервного копирования
в отдельном домене отказа"] ARM --> INGRESS --> INT AGENT --> VLLM INT <--> CORE CONS --> CORE STORE --> BACKUP

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

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

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

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

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

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

Группа данных Требование к размещению Порядок защиты
Подключения, промпты, версии, очередь и результаты выполнений Постоянный том PostgreSQL сервиса управления на SSD мастер-ноды Согласованное резервное копирование с объектным хранилищем изображений
Промежуточные данные консолидации Постоянный том PostgreSQL сервиса консолидации на SSD мастер-ноды Ограниченный срок актуальности; допускается не восстанавливать по регламенту
Эталонные изображения, примеры и файлы выполнений S3-совместимый бакет компонента на мастер-ноде Резервируется совместно с метаданными промптов и выполнений
Кадры и временные изображения Временное хранилище Redis мастер-ноды с ограниченным сроком жизни Не включается в резервную копию; недоступный к моменту обработки кадр не восстанавливается
Веса, токенизатор и кэш MLLM SSD LLM-ноды: слои контейнерного образа либо локальный репозиторий модели Восстанавливаются из поставочного комплекта или локального репозитория; резервируется источник, а не кэш
Очереди и уведомления Постоянные либо регламентированно восстанавливаемые области брокера сообщений на мастер-ноде Степень защиты определяется допустимостью потери незавершённых заданий
Контейнерные образы и журналы Системный накопитель узла с резервом для текущей и новой версии образов; отдельное централизованное или локальное хранилище журналов Образы восстанавливаются из поставочного комплекта; сроки хранения журналов устанавливаются эксплуатационным регламентом

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

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

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

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

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

Управляющие составные части компонента не требуют отдельных серверов: приведённые в п. 4.3.1 ресурсы выделяются им на мастер-ноде кластера Платформы 4.0. Сервер MLLM размещается на LLM-ноде, конфигурация которой выбирается заказчиком из нормативных типов п. 4.3.2.

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

Ресурс Значение Узел размещения На что расходуется
Процессорные ядра x86 Не менее 4 Мастер-нода Сервис управления подключениями, промптами и заданиями, шлюз формирования запроса и сервис консолидации; кодирование изображений для мультимодального запроса, проверка ответа по схеме, обслуживание выделенных компоненту баз данных и бакетов
Оперативная память Не менее 8 ГБ Мастер-нода Около 0,1 ГБ — фоновое потребление управляющих составных частей в состоянии готовности; остальной объём — одновременное кодирование изображений параллельных заданий, очередь и консолидация
Дисковое пространство Не менее 11 ГБ (SSD) Мастер-нода Не менее 1 ГБ — контейнерные образы управляющих сервисов; не менее 10 ГБ — начальное наполнение хранилищ (конфигурация, история выполнений, эталонные изображения и файлы результатов); дальнейший прирост — по числу промптов, выполнений и срокам хранения результатов
Графические ускорители Управляющим сервисам не требуются; серверу MLLM — по выбранному типу конфигурации LLM-ноды (таблица 4.3.2) LLM-нода Загрузка весов модели и выполнение мультимодальных запросов; ускорители заняты сервером модели постоянно

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

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

4.3.2. Типы конфигурации LLM-ноды

Нормативные типы конфигурации LLM-ноды и связанные с ними показатели назначения приведены в таблице 4.3.2.

Характеристика Тип 1 Тип 2 Тип 3
Количество серверов 1 1 2
Процессор на каждом сервере 48 ядер архитектуры x86 48 ядер архитектуры x86 48 ядер архитектуры x86
Графические ускорители на каждом сервере 1 × класса NVIDIA H100 8 × класса NVIDIA A30 4 × класса NVIDIA A30
Видеопамять одного ускорителя 80 ГБ 24 ГБ 24 ГБ
Оперативная память на каждом сервере 512 ГБ 512 ГБ 512 ГБ
Дисковое пространство на каждом сервере 1000 ГБ SSD 1000 ГБ SSD 1000 ГБ SSD
Предельный объём контекста До 32 784 токенов До 8 192 токенов До 4 096 токенов
Скорость обработки Не менее 0,15 запроса в минуту Не менее 1 запроса в минуту Не менее 6 запросов в минуту

Таблица 4.3.2 — Типы конфигурации LLM-ноды LPI-VAP-MLLM.

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

Характеристика одного ускорителя Класс NVIDIA H100 (тип 1) Класс NVIDIA A30 (типы 2 и 3)
Объём видеопамяти Не менее 80 ГБ Не менее 24 ГБ
CUDA Compute Capability Не ниже 9.0 Не ниже 8.0
Количество CUDA-ядер Не менее 14 592 Не менее 3 584
Количество Streaming Multiprocessors Не менее 114 Не менее 56
Количество Tensor Cores Не менее 456 Не менее 224
Пропускная способность видеопамяти Не менее 2 000 ГБ/с Не менее 900 ГБ/с
Аппаратная поддержка вычислений FP16, BF16, FP8, INT8 FP16, BF16, INT8
Производительность Tensor Core FP16/BF16 (без разреженности) Не менее 750 TFLOPS Не менее 160 TFLOPS
Производительность Tensor Core FP8 (без разреженности) Не менее 1 500 TFLOPS Не нормируется

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

Для типа 3 указанные CPU, GPU, RAM и SSD требуются на каждом из двух серверов; суммарно тип содержит 96 процессорных ядер, восемь ускорителей класса NVIDIA A30, 1024 ГБ оперативной памяти и 2000 ГБ SSD. Проект размещения должен предусматривать распределение запросов между серверами и сетевую связность, необходимую выбранному способу параллельного исполнения.

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

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

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

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

Ресурс Мастер-нода по позиции LPI-VAP-CORE Выделяется управляющим сервисам LPI-VAP-MLLM LLM-нода, тип 1 LLM-нода, тип 2 LLM-нода, тип 3 (2 сервера)
Процессорные ядра x86 48 4 48 48 96
Оперативная память, ГБ 128 8 512 512 1024
Дисковое пространство, ГБ 6000 (5000 HDD и 1000 SSD) 11 (SSD) 1000 (SSD) 1000 (SSD) 2000 (SSD)
Графические ускорители 1 × H100 8 × A30 8 × A30

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

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

  1. отдельные серверы под управляющие сервисы не требуются: их доля составляет около 8 % процессорных ядер и около 6 % оперативной памяти мастер-ноды минимальной конфигурации и предусматривается сверх минимальной конфигурации узла либо покрывается запасом ресурсов, заложенным проектом целевой поставки;
  2. LLM-нода предоставляется отдельно и целиком занята сервером модели; её ресурсы не участвуют в обеспечении показателей назначения Центрального модуля и не суммируются с вычислительными нодами видеоаналитики;
  3. для Центрального модуля LLM-нода является внешним ресурсом: при её отсутствии или недоступности события регистрируются без дополнительной мультимодальной проверки.

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

Показатели назначения задаются выбранным типом конфигурации LLM-ноды. В пределах типа фактический параллелизм определяется числом экземпляров выполнения MLLM и настроенной ёмкостью подключений (п. 2.2). Увеличение пропускной способности сверх выбранного типа выполняется дополнительными LLM-нодами или сменой типа по отдельному согласованию; ресурсы управляющих сервисов на мастер-ноде рассчитываются по профилю запросов. Порядок выбора и масштабирования приведён на схеме 4.2.

flowchart TB SEL{"Требуемые показатели:
длина контекста и скорость обработки"} T1["Тип 1: 1 сервер, 1 × H100
контекст до 32 784 токенов
не менее 0,15 запроса в минуту"] T2["Тип 2: 1 сервер, 8 × A30
контекст до 8 192 токенов
не менее 1 запроса в минуту"] T3["Тип 3: 2 сервера, 4 × A30 каждый
контекст до 4 096 токенов
не менее 6 запросов в минуту"] INST["Экземпляры выполнения MLLM
и ёмкость подключений:
параллелизм заданий"] NX["Дальнейшее масштабирование
дополнительными LLM-нодами
по отдельному согласованию"] MASTER["Ресурсы управляющих сервисов мастер-ноды:
рассчитываются по числу промптов, камер,
запросов в минуту и срокам хранения результатов"] SEL --> T1 SEL --> T2 SEL --> T3 T1 --> INST T2 --> INST T3 --> INST INST --> NX MASTER -.-> INST

Схема 4.2 — Выбор типа конфигурации LLM-ноды и масштабирование обработки.

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

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

Подраздел устанавливает требования, которые не нормированы подразделом 4.3: качественные требования к узлам, на которых размещается компонент, минимально допустимые версии программной среды, удельные величины для расчёта ёмкости и перечень параметров, которые определяются проектом поставки. Требования приведены раздельно по типам узлов кластера и сформулированы в форме «не ниже». Управляющие составные части обследованы в составе Платформы 4.0 на узле без графических ускорителей (два процессора Intel Xeon Gold 6454S — 64 физических ядра, 512 ГБ оперативной памяти, массив RAID 5 из корпоративных SSD); указанные ниже значения подтверждены этой проверкой и являются минимально допустимыми для целевой поставки.

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

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

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

Число LLM-нод и экземпляров выполнения MLLM определяется требуемыми показателями назначения и профилем запросов (п. 4.3.4).

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

Величина Значение Применение при проектировании
Суммарный объём контейнерных образов управляющих сервисов Не менее 1 ГБ (подтверждено 0,7 ГБ) без учёта образа сервера MLLM Расчёт дискового пространства мастер-ноды
Объём контейнерного образа сервера MLLM, весов, токенизатора и кэша модели По утверждённой модели: измеряется размер каталога модели или соответствующих слоёв образа Расчёт SSD LLM-ноды и времени запуска
Начальное наполнение хранилищ управляющих сервисов Не менее 10 ГБ (подтверждено 15 МБ метаданных и 243 МБ изображений и файлов) Расчёт ёмкости хранилищ мастер-ноды
Фоновое потребление оперативной памяти управляющими составными частями в состоянии готовности Около 0,1 ГБ Расчёт оперативной памяти мастер-ноды сверх объёма заданий
Дополнительная оперативная память на одно параллельное задание Не менее суммарного размера кодируемых изображений запроса с резервом на преобразование Расчёт оперативной памяти мастер-ноды по профилю параллелизма
Видеопамять сервера MLLM По выбранному типу конфигурации: 80 ГБ на ускоритель класса H100, 24 ГБ на ускоритель класса A30 Проверка возможности загрузки модели и длины контекста
Объём временных изображений Произведение числа параллельных заданий, числа изображений в запросе, их размера и срока жизни в временном хранилище Расчёт области Redis и объектного хранилища
Объём хранилищ метаданных Мал по отношению к изображениям; растёт пропорционально числу промптов, версий и выполнений Расчёт ёмкости SSD мастер-ноды и параметров резервного копирования
Запас свободного места на томах хранилищ Не менее 20 % Расчёт ёмкости SSD и объектного хранилища

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

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

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

Параметр Что требуется определить Как используется
Модель MLLM Точное наименование и версия, вариант квантования, размер весов, поддерживаемая длина контекста, число ускорителей на один экземпляр Проверка возможности загрузки модели, выбор типа конфигурации по п. 4.3.2, расчёт видеопамяти, места для образов и времени запуска
Профиль запросов Число активных промптов и камер, интервалы и триггеры, пиковое и среднее число запросов в минуту, требуемый параллелизм, допустимое время ожидания и размер очереди Расчёт числа экземпляров MLLM и резерва процессорных ресурсов и оперативной памяти мастер-ноды
Входные изображения Максимальные размер и разрешение кадра, число целевых, дополнительных и эталонных изображений в одном запросе, суточный объём ручных загрузок Расчёт сетевого трафика, мультимодального контекста, временного и объектного хранилищ
Конфигурация ускорителей LLM-ноды Способ установки или проброса, топология PCI Express, межсоединение ускорителей, режим разделения и резерв видеопамяти Определение тензорного параллелизма и устойчивой производительности
Сроки хранения Сроки хранения промптов и истории, изображений, результатов и журналов, правила очистки временных данных Расчёт постоянной и временной ёмкости, расписания очистки
Внешний программный интерфейс MLLM При его использовании — адреса и маршруты, пропускная способность канала, сертификаты, способ аутентификации и допустимость передачи изображений за пределы контура Определение сетевой схемы и мер защиты
Отказоустойчивость Допустимое время простоя, правила повторной постановки заданий, резервирование серверов, сети и хранилищ, значения RPO и RTO Выбор одноузловой или кластерной схемы LLM-ноды и порядка переключения
Информационная безопасность Требования к сегментации сети, средствам защиты, шифрованию, управлению секретами и физическому доступу Выбор сетевого и серверного оборудования и схемы размещения
Инженерная инфраструктура Форм-фактор серверов, доступные стойки и порты, характеристики электропитания, допустимая тепловая мощность и охлаждение Проверка возможности физической установки LLM-ноды с ускорителями
Мониторинг Контролируемые показатели, пороги и каналы оповещения Подбор средств контроля и ёмкости хранения метрик

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

Окончательная конфигурация определяется в следующем порядке:

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

До предоставления перечисленных сведений таблица 4.3.2 задаёт обязательный исходный профиль LLM-ноды, но не является полной спецификацией серверов, сети, хранилищ, резервного копирования и автоматизированных рабочих мест.

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

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

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

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

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

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

Пользователь вызывает функции LPI-VAP-MLLM в следующем порядке:

  1. запускает поддерживаемый веб-браузер и открывает адрес https://<адрес-Платформы-4.0>/;
  2. проходит единый вход: LPI-VAP-CORE при отсутствии действующей сессии перенаправляет браузер на страницу СУДИР, где пользователь вводит учётные данные;
  3. после возврата LPI-VAP-CORE формирует пользовательский контекст, затем пользователь открывает раздел LLM и выбирает страницу «Список LLM» либо «Список промптов»;
  4. выполняет разрешённое действие: просматривает, создаёт или изменяет подключение к MLLM, создаёт или изменяет промпт, назначает промпт камерам, запускает проверку на изображении либо открывает «Историю ответов»;
  5. после завершения работы выходит из Платформы 4.0 и закрывает браузер, если это предусмотрено локальным регламентом информационной безопасности.

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

LPI-VAP-MLLM не взаимодействует с СУДИР непосредственно и не обрабатывает учётные данные пользователя. Компонент получает от LPI-VAP-CORE проверенный контекст и авторизует запрошенную операцию.

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

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

Отображение пустого списка само по себе не является отказом, если запрос завершён успешно и в системе ещё не созданы соответствующие записи.

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

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

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

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

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

Этап Загружаемые средства Условие перехода к следующему этапу
1. Базовая инфраструктура Среда исполнения контейнеров и средства оркестрации Kubernetes, внутренние сети, постоянные тома, доступ к реестру образов, драйвер и средства предоставления графических ускорителей контейнерам Узлы доступны оркестратору; тома подключены; ускорители видны контейнеру сервера MLLM
2. Хранение и обмен PostgreSQL, S3-совместимое хранилище, Apache Kafka и Redis Платформы 4.0 Базы принимают соединения; объектное и временное хранилища доступны; брокер готов принимать и выдавать сообщения
3. Сервер MLLM llm-vllm Запрос перечня моделей возвращает утверждённый идентификатор модели; в журнале отсутствуют ошибки загрузки весов и нехватки видеопамяти
4. Смежные сервисы Средства управления камерами и получения кадров, справочник моделей и категорий, хранилище событий Сервисы отвечают; топики заданий и событий созданы
5. Управляющие сервисы llm-agent, inf-llm-integration, inf-llm-event-consolidation Миграции завершены; API отвечает; диспетчер и потребители сообщений зарегистрированы; пробный запрос шлюза достигает сервера MLLM
6. Внешний доступ Веб-интерфейс и API-шлюз Платформы 4.0 Страница входа открывается; защищённые маршруты подключений и промптов требуют действующую сессию; GraphQL-запросы и канал WebSocket маршрутизируются к сервису управления

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

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

flowchart TB G1["1. Базовая инфраструктура узлов
среда исполнения контейнеров и Kubernetes,
сети, тома, графические ускорители LLM-ноды"] G2["2. Хранение и обмен
PostgreSQL, объектное хранилище,
брокер сообщений, временное хранилище"] G3["3. Сервер MLLM
загрузка весов модели в видеопамять,
подготовка кэша выполнения"] 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; пользователь может просматривать подключения, промпты и историю выполнений в пределах назначенных прав;
  • полная функциональная готовность — дополнительно доступны сервер MLLM, шлюз формирования запроса, сервис консолидации, Kafka, Redis, объектное хранилище и смежные сервисы камер, кадров и событий; разрешены ручная проверка, автоматическое выполнение промптов и формирование событий.

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

Объект проверки Признак готовности
Контейнеры прикладных сервисов Требуемые контейнеры находятся в состоянии выполнения; отсутствуют циклические перезапуски; число перезапусков и последние журналы проверены
PostgreSQL Экземпляры сервиса управления и сервиса консолидации принимают соединения; миграции завершились без ошибки
Объектное и временное хранилища, Kafka Бакеты компонента доступны; временное хранилище отвечает; требуемые топики и группы потребителей созданы
Сервер MLLM Внутренний запрос перечня моделей возвращает утверждённый идентификатор модели; в журнале отсутствует ошибка загрузки весов или нехватки видеопамяти
Шлюз формирования запроса Сервис отвечает; метрики доступны; пробный запрос достигает сервера MLLM
Управление и очередь API сервиса управления отвечает; диспетчер и потребители Kafka зарегистрированы
Консолидация Сервис не перезапускается; база доступна; потребитель сообщений зарегистрирован
Веб-доступ Страница входа открывается; защищённые маршруты перенаправляют неаутентифицированный запрос на вход и открываются для пользователя с назначенной ролью; GraphQL-запросы выполняются, соединение WebSocket устанавливается
Функциональный контроль Ручная проверка утверждённого промпта на контрольном изображении: создано выполнение, получено конечное состояние и сохранён результат

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

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

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

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

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

Входные точки LPI-VAP-MLLM приведены в таблице 5.2.1. Пользовательские и прикладные точки публикуются единым шлюзом Платформы 4.0; внутренние точки не предназначены для непосредственного вызова с рабочего места пользователя.

Уровень доступа Входная точка Назначение и способ вызова
Пользовательский https://<адрес-Платформы-4.0>/login Единая точка входа LPI-VAP-CORE; при отсутствии сессии перенаправляет пользователя в СУДИР и после возврата формирует пользовательский контекст. Входной точкой LPI-VAP-MLLM не является
Пользовательский /llm, /llm/create, /llm/edit/<идентификатор> Просмотр, создание и изменение подключений к MLLM; доступ определяется ролевой моделью
Пользовательский /prompts, /prompts/create, /prompts/edit/<идентификатор> Просмотр, создание и изменение промптов, назначений и параметров обработки
Пользовательский /prompts/eventsHistory/<идентификатор> Просмотр истории ответов и ошибок выполнения выбранного промпта
Прикладной, защищённый POST /api/graphql Единая точка операций с подключениями, промптами, историей, ручными запусками, получением результата и отменой выполнения; запрос передаётся с действующим токеном пользователя или сервисной учётной записи
Прикладной, защищённый wss://<адрес-Платформы-4.0>/api/ws/ Получение уведомлений о ходе и результате асинхронной обработки; для незащищённого технологического контура допускается ws, если это прямо разрешено проектом поставки
Внутренний RPC-интерфейс inf-llm-integration Операции управления подключениями и промптами, создание задания, получение списка и результата выполнений, отмена задания; вызывается шлюзом API и смежными сервисами
Внутренний OpenAI-совместимые точки сервера MLLM GET /v1/models и POST /v1/chat/completions Контроль загруженной модели и выполнение мультимодального запроса; вызываются llm-agent либо иным утверждённым адаптером
Внутренний Настроенная точка формирования запроса llm-agent Подготовка сообщений, изображений, параметров генерации и схемы структурированного ответа; конкретный путь фиксируется конфигурацией поставки
Внутренний административный /metrics составных частей, для которых включён экспорт метрик Контроль доступности и текущей нагрузки системой мониторинга; не публикуется в пользовательскую сеть

Таблица 5.2.1 — Входные точки LPI-VAP-MLLM.

Через GraphQL выполняются следующие группы операций:

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

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

Логический канал Отправитель Получатель Содержание
Задание обработки изображения Средства видеоаналитики либо шлюз ручного запуска inf-llm-integration Идентификаторы промпта, камеры и изображений, контекст события
Обновление конфигурации камеры и промптов Средства управления камерами и промптами Средства получения кадров и видеоаналитики Активные назначения, расписания и условия запуска
Уведомление о сохранённом событии Хранилище событий inf-llm-integration Данные события и изображений для проверки мультимодальной моделью
Результат события inf-llm-integration Хранилище событий Категории, описание, признак события или нарушения и связанные изображения
Задание и результат консолидации inf-llm-integration и смежные средства inf-llm-event-consolidation и хранилище событий Частные результаты камер, окно консолидации и итоговое событие
Прогресс пользовательского выполнения Серверные составные части Шлюз WebSocket и веб-интерфейс Идентификатор выполнения, стадия, результат или ошибка

Таблица 5.2.2 — Асинхронные входные каналы LPI-VAP-MLLM.

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

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

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

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

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

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

Сбой обрабатывается с учётом недоступного звена:

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

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

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

Объём загружаемых контейнерных образов и фактическое потребление памяти зависят от утверждённой модели, типа конфигурации LLM-ноды, состава контейнерных образов и срока хранения результатов. Для управляющих составных частей подтверждены значения не менее 1 ГБ контейнерных образов, около 0,1 ГБ фонового потребления оперативной памяти и не менее 10 ГБ начального наполнения хранилищ; они являются минимально допустимыми («не менее») для целевой поставки, а удельные величины для расчёта ёмкости приведены в п. 4.4.2. Состав учитываемого объёма приведён в таблице 5.2.3.

Составляющая Когда загружается или растёт Порядок определения для целевой поставки
Контейнерные образы llm-vllm, llm-agent, inf-llm-integration, inf-llm-event-consolidation и их инфраструктуры При установке и обновлении Зафиксировать суммарный фактический размер образов по утверждённым версиям и контрольным суммам
Веса, токенизатор и кэш MLLM При сборке образа либо подготовке локального репозитория; в память — при старте llm-vllm Измерить размер каталога модели или соответствующих слоёв образа для утверждённой модели
Клиентские ресурсы При открытии веб-интерфейса и обновлении его версии Измерить передаваемый размер HTML, JavaScript, CSS, шрифтов и изображений с учётом настроенного сжатия
PostgreSQL При создании подключений, промптов, версий, заданий и результатов Рассчитать начальный объём и прирост по числу выполнений и сроку хранения; учесть индексы, журнал транзакций и резервные копии
Объектное и временное хранилища При загрузке контрольных изображений, подготовке кадров и сохранении рабочих копий Рассчитать по размеру и числу изображений, параллелизму, времени жизни и политике очистки
Apache Kafka и Redis При обмене заданиями, событиями и промежуточными данными Рассчитать по пиковой очереди, сроку хранения сообщений и допустимому времени восстановления потребителей
Журналы и диагностические данные В течение эксплуатации Рассчитать по уровню журналирования, ротации, сроку хранения и числу составных частей

Таблица 5.2.3 — Состав объёма LPI-VAP-MLLM.

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

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

Для каждого выбранного профиля подраздела 4.3 фиксируются:

  • объём каждого образа, модели, клиентского комплекта и постоянного тома;
  • оперативная память до запуска, после загрузки модели и при максимальной нормируемой параллельной нагрузке;
  • видеопамять каждого GPU после загрузки модели и на пике контрольной нагрузки;
  • максимальный размер кэша, временных изображений, очередей и журналов;
  • время загрузки модели до успешного ответа GET /v1/models;
  • резерв, необходимый для обновления и отката.

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

Для управляющих составных частей значения подтверждены обследованием: контейнерные образы — 0,7 ГБ, фоновое потребление оперативной памяти — около 0,1 ГБ, клиентские статические ресурсы — не более 39 МБ в несжатом виде, метаданные в реляционном хранилище — 15 МБ, изображения и файлы в объектном хранилище — 243 МБ. Эти значения приняты как минимально допустимые («не хуже») для целевой поставки. Для выбранной MLLM дополнительно должны быть определены идентификатор и версия модели, размер весов и образа сервера MLLM, фактическое и пиковое потребление оперативной памяти и видеопамяти, параметры параллелизма и кэша контекста, измеренное время загрузки модели и размер резерва для обновления. Эти значения определяются утверждённой моделью и типом конфигурации LLM-ноды по подразделу 4.3.

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

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

Входные данные LPI-VAP-MLLM образуют две группы: долговременная конфигурация и оперативные данные отдельного запуска. Конфигурация вводится пользователем или программным клиентом через защищённый API Платформы 4.0 и хранится до изменения или логического удаления. Оперативные данные поступают при ручном запуске, по расписанию либо при регистрации события и используются для формирования одного мультимодального запроса.

Группа Состав Источник Организация обработки
Команды управления Создание и изменение подключения или промпта, изменение активности, назначение камер, ручной запуск, отмена выполнения Веб-интерфейс или защищённый API Проверяются синхронно; длительное выполнение регистрируется как отдельное асинхронное задание
Параметры подключения Тип адаптера, адрес MLLM API, модель и версия, экземпляры выполнения, реквизиты доступа, прокси и предел параллелизма Администратор компонента, спецификация целевой поставки Хранятся как конфигурация; секретные значения предоставляются только уполномоченному серверному контуру
Параметры промпта Наименование, текст задания, тип анализа, подключение, JSON Schema, параметры координат и разметки, признаки активности Пользователь с правами настройки Текущая редакция участвует в выполнении; изменяемые параметры сохраняются в истории версий
Условия запуска Идентификаторы камер, тип расписания, интервал или время, дни недели, временной диапазон, категория события Пользователь и средства управления камерами Преобразуются в назначения камер; при наступлении условия создаётся задание
Изображения Целевой кадр, дополнительные кадры события, пользовательские и эталонные изображения Камера, хранилище событий, временное хранилище либо пользователь Двоичные данные временно сохраняются, а между составными частями передаётся UUID, защищённая ссылка или кодированное содержимое
Контекст события Идентификаторы события и сообщения, камера, время, первичная и вторичная категории, область локализации, состояние подтверждения Контур видеоаналитики и хранилище событий Связывается с заданием и используется при событийном запуске или верификации
Справочные и служебные данные Пользователь и роли, модели, категории, параметры целевой конфигурации, идентификатор корреляции Средства аутентификации, справочники и конфигурация Платформы 4.0 Проверяются до постановки задания и не подменяются свободным текстом пользователя

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

Логическая организация входов показана на схеме 6.1.

flowchart LR CFG["Подключение, промпт,
камера и условие запуска"] --> CHECK["Проверка и
нормализация"] IMG["Целевое и дополнительные
изображения"] --> CHECK EVENT["Контекст события
или команда пользователя"] --> CHECK DICT["Модели, категории,
права и лимиты"] --> CHECK CHECK --> TASK["Входное задание
LPI-VAP-MLLM"] TASK --> REQUEST["Мультимодальный запрос:
текст + изображения + схема"]

Схема 6.1 — Формирование входного задания компонента.

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

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

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

  1. пользователю или сервисной учётной записи назначаются права на просмотр и изменение подключений, промптов, расписаний и запусков;
  2. создаётся подключение к MLLM, указываются доступный сетевой адрес, модель, способ аутентификации и экземпляры выполнения; доступность подтверждается получением списка моделей либо контрольным запросом;
  3. создаётся непустой промпт, выбираются тип анализа и активное подключение; схема ответа разбирается как корректный объект JSON Schema, а перечисления категорий сверяются со справочником Платформы 4.0;
  4. проверяются существование и рабочее состояние камер, возможность получить кадр и передать его во временное хранилище;
  5. для автоматического режима задаётся ровно определимое условие запуска: интервал, фиксированное время, день недели или категория события; одна и та же камера не должна повторяться в разных строках расписания одного промпта;
  6. для ручного запуска выбирается основной файл изображения, а для событийного — доступное изображение события и его метаданные;
  7. оценивается суммарный объём текста, изображений и ожидаемого ответа. Он не должен превышать контекст выбранной модели; число одновременных запросов не должно превышать доступную ёмкость экземпляров выполнения;
  8. синхронизируется системное время составных частей, чтобы время кадра, события и выполнения можно было однозначно сопоставить.

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

Изображение должно декодироваться без ошибки, соответствовать разрешённому MIME-типу и не превышать лимиты целевой конфигурации. Ручная форма принимает файлы JPEG и PNG. Основное изображение обязательно; для промпта локализации при ручной проверке допускается не более трёх дополнительных изображений. Изображения с персональными или иными защищаемыми сведениями допускаются к обработке только по правилам информационной безопасности заказчика.

Для целевой поставки необходимо установить максимальные размер файла и разрешение изображения, допустимые MIME-типы автоматических кадров, предельное число эталонных и событийных изображений в запросе, максимальную длину текста и контекста, диапазон нормализованных координат, часовой пояс расписаний, перечень доступных моделей и категорий, лимиты параллелизма и ожидания, а также матрицу ролей (приложение Г). Если параметр не задан, ввод соответствующих данных не должен разрешаться на основании значения контура разработки.

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

Вид данных Формат передачи Обязательность и ограничения
Команды веб-интерфейса и API HTTPS; операции GraphQL с объектами JSON Обязательны действующий контекст аутентификации и поля выбранной операции; неизвестные идентификаторы и значения перечислений отклоняются
Наименование и текст Строка Unicode в UTF-8 Наименование промпта — от 1 до 150 символов после удаления крайних пробелов; текст задания не может быть пустым или состоять только из пробелов
Настройки подключения и промпта Объект JSON; в типизированном внутреннем обмене — соответствующее сообщение RPC Обязательность отдельных полей зависит от адаптера и типа промпта; секреты не передаются в открытых параметрах URL
Схема ответа Объект JSON Schema, в поле API — строка, содержащая сериализованный JSON Для структурированного результата должна быть синтаксически корректна, описывать объект и обязательные поля выбранного типа анализа
Числовой идентификатор Положительное целое число, в серверном контракте — до 64 разрядов Идентификаторы подключения, промпта и камеры должны ссылаться на существующие доступные сущности
UUID Строковое представление UUID Используется для изображения, выполнения, сообщения и корреляции запроса; пустая строка не заменяет отсутствующее необязательное значение
Признак Логическое значение JSON true или false Передаётся явно, если изменение признака входит в операцию; применяется к активности, нормализации координат и параметрам разметки
Время кадра или события Целое число секунд от начала эпохи Unix Относится к исходному кадру, а не ко времени приёма API; интерпретируется в UTC
Время расписания Строка HH:mm; диапазон — две строки начала и окончания Часы 0023, минуты 0059; часовой пояс закрепляется параметрами целевой поставки
День недели Массив целых значений от 1 до 7 1 — понедельник, 7 — воскресенье; используется для еженедельного запуска
Изображение ручного запуска multipart/form-data, файл JPEG/JPG или PNG Основной файл обязателен; размер проверяется по лимиту целевой конфигурации; после загрузки в команду выполнения передаётся UUID
Изображение внутреннего запроса UUID временного объекта, защищённая ссылка либо Data URI с Base64 и MIME-типом Конкретное представление выбирает адаптер; ссылка должна быть доступна только на срок выполнения
Область локализации Массив координат [x1, y1, x2, y2] либо список таких массивов Порядок координат фиксирован; система координат определяется признаком нормализации и контрактом целевой конфигурации
Сообщение очереди Типизированное двоичное сообщение либо JSON согласно интеграционному контракту Содержит только предусмотренные схемой поля; изменение формата требует согласованного обновления отправителя и получателя

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

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

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

6.4.1. Параметры подключения к MLLM

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

Поле Содержание Обязательность
name Уникально различимое наименование подключения, до 255 символов Обязательно
description Назначение и область применения подключения Необязательно
llm_driver Тип адаптера к MLLM API Обязательно; выбирается из поддерживаемого перечня
llm_model, llm_version Идентификатор модели и версия Обязательны, если модель не определяется самим адаптером; в объединённом поле интерфейса представляются как модель:версия
work_instances Один или несколько экземпляров выполнения Необходим хотя бы один для активного рабочего подключения
agent_url Базовый HTTP(S)-адрес программного интерфейса экземпляра Обязателен для поставляемого OpenAI-совместимого сервера и других сетевых адаптеров
token Токен доступа к экземпляру Условно обязателен по настройке аутентификации
basicauth_user, basicauth_password Имя и пароль базовой HTTP-аутентификации Необязательны; применяются совместно, если такой способ включён
url_proxy Адрес прокси-сервера Необязателен; задаётся только при установленном маршруте через прокси
max_connections Максимальное число одновременных запросов экземпляра Обязательное положительное целое число для рабочего экземпляра; значение определяется настройками целевой поставки
is_active Разрешение назначать подключению новые задания Обязательно при изменении состояния

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

Основным для поставляемого сервера llm-vllm является OpenAI-совместимый адаптер. Подключения иных типов допускаются, если соответствующий адаптер и его параметры включены в состав целевой поставки. Адрес должен разрешаться из серверного контура, сертификат — проходить установленную проверку, а указанная модель — присутствовать в ответе служебной точки моделей либо успешно обрабатывать контрольный запрос.

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

6.4.2. Текст, версия и схема ответа промпта

Поле Содержание Правило ввода
name Наименование промпта Обязательно; от 1 до 150 символов после удаления крайних пробелов
description Пояснение к назначению Необязательно
prompt_text Инструкция модели: наблюдаемые признаки, критерий решения и требуемое пояснение Обязательно; непустой текст UTF-8 без реквизитов доступа
prompt_type Тип анализа: classification — классификация, detection — локализация, verification — верификация события Обязательно; специализированный тип допускается только при наличии его обработчика в поставке
llm_id Идентификатор подключения Обязательно; подключение должно существовать, а для запуска — быть активным
json_schema Схема структурированного ответа Обязательна для автоматического использования результата; передаётся как сериализованный объект JSON Schema
normalize_coords Приведение координат локализации к согласованной системе Применяется к промптам локализации
draw_event_rect Нанесение области исходного события на изображение перед верификацией Применяется к промптам верификации
rect_color_hex Цвет области в формате #RRGGBB Условно обязателен при нанесении области
rect_thickness, rect_expand Толщина линии и расширение области, целые неотрицательные значения Условно обязательны при нанесении области; пределы задаются целевой конфигурацией
metadata Служебные параметры шаблона и числа входных изображений Необязательно; объект JSON, сериализованный в строку
is_active Разрешение автоматического выполнения текущей редакции Обязательно при изменении состояния

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

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

{
  "type": "object",
  "properties": {
    "is_event": { "type": "boolean" },
    "is_violation": { "type": "boolean" },
    "description": { "type": "string" },
    "primary_category": {
      "type": "string",
      "enum": ["<код основной категории>"]
    },
    "secondary_category": {
      "type": "string",
      "enum": ["<код вторичной категории>"]
    }
  },
  "required": [
    "is_event",
    "is_violation",
    "description",
    "primary_category",
    "secondary_category"
  ],
  "additionalProperties": false
}

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

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

6.4.3. Расписание, источники и условия запуска

Расписание передаётся группой, связанной с одним prompt_id. Группа содержит одну или несколько строк расписания и назначенные каждой строке камеры.

Поле Содержание Условие применения
prompt_id Идентификатор промпта Обязателен
camera_ids Массив идентификаторов камер Обязателен для автоматического запуска; камера должна существовать и быть доступна пользователю
type Тип запуска: через N секунд, через N минут, каждый час, каждый день, каждую неделю, по категории события либо по запросу Обязателен для строки расписания
interval_value или second_interval Положительный интервал Обязателен для соответствующего интервального типа
time Фиксированное время HH:mm Обязательно для ежедневного или еженедельного типа
week_day Дни недели от 1 до 7 Обязательны для еженедельного типа
time_range_start, time_range_end Разрешённый временной диапазон HH:mm Необязателен; применяется к типу, поддерживающему ограничение диапазоном
event_category Код категории исходного события Обязателен для событийного запуска и должен существовать в справочнике
frame_buffer_size Параметр числа или режима дополнительных кадров события Необязателен; используется только поддерживающим его исполнителем
is_crop, crop_cords Признак и координаты предварительной области кадра Необязательны; применяются совместно, если обработка области включена в поставке

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

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

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

6.4.4. Изображения и контекст обработки

Вход Содержание Правило использования
Основное изображение Текущий кадр, загруженный пользователем файл либо изображение события Обязательно для запуска; всегда занимает первое место среди анализируемых кадров
Дополнительные изображения Предыдущие или связанные кадры одного события Необязательны; следуют после основного в определённом источником порядке; при ручной локализации — не более трёх
Эталонное изображение Сохранённый пример с наименованием и поясняющим текстом Необязательно; включается в контекст только по настройке промпта
image_uuid UUID основного изображения во временном или объектном хранилище Обязателен в команде выполнения после загрузки двоичных данных
additional_image_uuids Упорядоченный массив UUID дополнительных изображений Необязателен
camera_id Числовой идентификатор камеры-источника Обязателен для автоматического и событийного запуска; для ручной проверки может отсутствовать
snapshot_timestamp Время получения исходного кадра в секундах Unix Обязательно; при ручной проверке клиент передаёт время выбранного кадра либо текущее время по установленному правилу
request_uuid Идентификатор корреляции команды Необязателен; используется для трассировки, но сам по себе не гарантирует идемпотентность

Таблица 6.4.4 — Изображения и метаданные запуска.

При ручном запуске файл сначала передаётся как multipart/form-data во временное хранилище, после чего его UUID включается в команду выполнения. При автоматическом запуске аналогичный UUID создаёт контур получения кадров. Перед отправкой в MLLM компонент получает двоичные данные и преобразует их в формат адаптера. Для OpenAI-совместимого запроса изображение может быть представлено как Data URI с Base64.

Контекст событийного запуска дополнительно содержит:

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

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

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

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

К управляющим входам относятся:

  • создание, изменение, включение, отключение и логическое удаление подключения;
  • создание и изменение промпта, сохранение новой редакции, изменение активности и логическое удаление;
  • создание, изменение и удаление эталонного примера;
  • сохранение назначений и расписаний;
  • создание ручного выполнения, получение его состояния и отмена по UUID;
  • повтор после ошибки как новое выполнение после проверки причины отказа.

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

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

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

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

Текстовые значения, JSON и JSON Schema кодируются в UTF-8. В HTTP API используется application/json, а для загрузки файлов — multipart/form-data. Во внутреннем обмене применяются типизированные RPC-сообщения и утверждённые схемы сообщений очереди; их двоичное представление не предназначено для ручного формирования.

Числовые идентификаторы передаются десятичными целыми значениями. UUID передаются канонической строкой с дефисами. Время кадра и события передаётся целым числом секунд Unix и относится к UTC; календарное время расписания — строкой HH:mm, дни недели — числами от 1 до 7. Значения перечислений должны соответствовать регистру и кодам программного контракта.

Изображения JPEG и PNG передаются двоичным содержимым при первичной загрузке. После регистрации между составными частями передаются UUID или защищённые ссылки. Если адаптер требует включить изображение в JSON, двоичные данные кодируются Base64 и предваряются корректным MIME-типом в Data URI. Base64 не считается способом шифрования и не может использоваться вместо защищённого транспортного соединения.

Координаты задаются числовыми массивами в порядке x1, y1, x2, y2. При включённой нормализации они переводятся в систему, установленную контрактом целевой модели; при выключенной — относятся к пикселям исходного изображения. Смешение систем координат в одном ответе или запросе не допускается.

Токены, пароли и реквизиты прокси передаются только по защищённому соединению, хранятся средствами защиты секретов, маскируются при отображении и исключаются из журналов. В документации и диагностических примерах вместо них используются обозначения <токен>, <пользователь> и <пароль>.

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

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

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

Группа Состав Получатель и срок существования
Сохранённая конфигурация Подключения, экземпляры выполнения, промпты, версии, примеры, назначения камер и расписания Администратор и пользователь компонента; хранится до изменения, логического удаления и последующей очистки по регламенту
Оперативное состояние UUID выполнения, состояние, время начала и окончания, ошибка Инициатор запуска и интерфейс истории; обновляется в ходе выполнения и сохраняется в журнале
Ответ MLLM Исходный ответ и результат его разбора по выбранной схеме Серверная проверка, журнал выполнения и пользователь с соответствующими правами
Прикладной результат Признаки события и нарушения, описание, категории, области локализации либо решение о подтверждении Пользователь, хранилище событий и другие прикладные составные части Платформы 4.0
Результат консолидации Частные результаты нескольких камер и сформированное по ним итоговое событие Модуль консолидации и хранилище событий; частные записи удаляются после объединения или истечения срока актуальности
Сообщение управления Идентификатор созданной сущности, логический статус операции и пояснение Веб-интерфейс или программный клиент; относится к одной синхронной операции
Диагностика и статистика Ошибка проверки или выполнения, число запросов и успешных обработок, временные ряды при включённом интерфейсе статистики Уполномоченный пользователь и средства мониторинга; срок хранения задаётся регламентом

Таблица 7.1.1 — Группы выходных данных LPI-VAP-MLLM.

Результат одного запуска организуется вокруг execution_uuid. Исходный ответ сохраняется отдельно от нормализованных полей. Это позволяет показать ответ для диагностики, но не делает непроверенный JSON допустимым прикладным результатом. Связь с созданным событием устанавливается по event_message_uuid.

flowchart LR MLLM["Исходный ответ MLLM"] --> PARSE{"Разбор и проверка
по схеме"} PARSE -->|ошибка| FAILED["Состояние failed,
диагностика"] PARSE -->|успешно| JOURNAL["Состояние generated,
запись в журнале"] JOURNAL --> DECISION{"Тип и содержание
результата"} DECISION -->|нет события| HISTORY["Только история
выполнения"] DECISION -->|событие| EVENT["Событие
Платформы 4.0"] DECISION -->|консолидация| CONS["Частный результат
и итоговое событие"] DECISION -->|верификация| VERIFY["Статус и комментарий
исходного события"]

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

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

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

Выход Формат Основные элементы
Ответ защищённого API Ответ GraphQL в JSON поверх HTTPS Объект data при успехе; массив errors при ошибке; возвращается только набор полей, запрошенный клиентом
Результат управляющей операции Объект JSON Идентификатор созданной или изменённой сущности либо status и необязательное пояснение msg
Страница списка Объект JSON Массив записей и целое значение total; состав страницы определяется входными параметрами пагинации
Принятый асинхронный запуск Объект JSON execution_uuid; означает регистрацию запуска, но не успешное завершение обработки
Сообщение о ходе выполнения JSON-сообщение асинхронного канала execution_uuid, status, error, start_at, finish_at
Запись выполнения Объект JSON Состояние, время, камера и изображения, типизированные поля ответа, исходный JSON, UUID события и диагностический текст
Структурированный ответ MLLM Объект JSON, соответствующий JSON Schema промпта Обязательные поля зависят от типа промпта; после проверки значения переносятся в типизированные поля записи выполнения
Исходный ответ MLLM Строка raw_json_response, содержащая JSON либо доступный фрагмент ответа при ошибке Предназначена для аудита и диагностики; перед прикладным использованием требует успешного разбора и проверки
Событие Платформы 4.0 Типизированное сообщение внутреннего обмена UUID сообщения, камера, время, изображение, категории, объекты, сведения о промпте и исходном ответе
Решение о верификации Типизированный вызов хранилища событий Идентификатор события, состояние подтверждения, комментарий, признак проверяющего и сведения о промпте; при отдельном решении — команда удаления
Сообщение консолидации JSON внутренней очереди Промпт и его структурированный ответ, изображение Base64, камера и временная метка
Изображение UUID объекта или защищённая HTTP(S)-ссылка Основное изображение и массив дополнительных изображений; доступ определяется правами и сроком хранения
Диагностическая запись Текст UTF-8 либо структурированная запись журнала Время, уровень, составная часть, идентификатор корреляции и обезличенное описание

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

Внутренние сообщения очереди и RPC не являются публичным API. Их структура может изменяться только согласованно во всех отправляющих и принимающих составных частях. Клиенту веб-интерфейса не требуется декодировать внутренний двоичный формат события.

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

7.3.1. Сведения о подключениях и промптах

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

Поле Содержание
llm_id Числовой идентификатор подключения
name, description Наименование и назначение
llm_driver Код используемого адаптера
llm_model, llm_version Идентификатор модели и её версия
is_active Разрешение назначать новые задания
is_deleted Признак логического удаления
work_instances Перечень экземпляров выполнения, их адреса и пределы параллелизма

Таблица 7.3.1 — Выходная запись подключения к MLLM.

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

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

Результат создания промпта содержит prompt_id. Полная запись промпта включает:

Группа полей Содержание
Идентификация prompt_id, наименование и описание
Задание Текст, тип промпта, llm_id, JSON Schema и служебные метаданные шаблона
Параметры результата Нормализация координат, нанесение области события, цвет, толщина и расширение прямоугольника
Состояние is_active, is_deleted, активность связанного подключения и наличие событийных выполнений
Источники Массив назначенных идентификаторов камер; подробные расписания возвращаются отдельной операцией управления камерами
Время created_at и changed_at в секундах Unix

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

История промпта возвращается упорядоченным набором редакций. Редакция содержит history_id, version_id, строковое обозначение версии, prompt_id, текст, время изменения, признак активности, JSON Schema, параметры координат и области верификации, а также метаданные. История расписаний в эту запись не входит.

Запись эталонного примера содержит example_id, наименование, поясняющий текст, UUID изображения, признаки активности и логического удаления, время создания и изменения. Ответ списка дополнительно содержит total. Ссылка на файл формируется только для пользователя, имеющего право его просмотра.

7.3.2. Состояние и результат выполнения промпта

После принятия ручного или автоматического запуска создаётся запись выполнения. Ручной асинхронный вызов немедленно возвращает execution_uuid, по которому клиент получает прогресс и конечный результат.

Поле Содержание
execution_uuid Уникальный идентификатор выполнения
request_uuid Необязательный идентификатор корреляции исходного запроса
status Текущее или конечное состояние выполнения
start_at, finish_at Время начала и окончания обработки в секундах Unix; окончание отсутствует до терминального состояния
snapshot_timestamp Время получения исходного кадра
camera_id Идентификатор камеры; для ручного файла без привязки может отсутствовать или иметь нулевое служебное значение
image_uuid, image_url UUID и защищённая ссылка основного изображения
additional_image_urls Упорядоченный массив ссылок дополнительных изображений
is_event, is_violation Логические признаки результата
primary_category, secondary_category Коды категорий из справочника Платформы 4.0
description Проверенное текстовое пояснение результата
raw_json_response Исходный либо нормализованный JSON-ответ MLLM в строковом представлении
event_message_uuid UUID сообщения, назначенный формируемому событию; отсутствует, если создание события не требовалось; наличие UUID само по себе не подтверждает сохранение события получателем
error_text Обезличенное описание ошибки; отсутствует при успешном выполнении

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

Публичные состояния приведены в таблице 7.3.4.

Код Содержание
started Выполнение принято и находится в очереди либо обрабатывается; состояние не подтверждает получение ответа MLLM
generated Ответ получен, разобран и сохранён; типизированный результат доступен для использования
failed Обработка завершена ошибкой; причина доступна в error_text, а полученный фрагмент ответа при наличии — в raw_json_response
canceled Выполнение отменено до штатного завершения; фиксируются время окончания и причина отмены

Таблица 7.3.4 — Состояния выполнения промпта.

Внутренние состояния очереди «ожидает», «выполняется», «завершено» и «ошибка» не должны подменять перечисление внешнего API. Веб-интерфейс может показывать дополнительные локальные этапы и процент выполнения, но конечным источником состояния остаётся запись выполнения.

История запусков возвращается постранично как execution_list и total. В интерфейсе для записи показываются дата, продолжительность, путь объекта, камера и её разрешение, категория, состояние, пояснение и основное изображение. Продолжительность вычисляется как разность finish_at и start_at и не сохраняется как независимое исходное значение.

7.3.3. Результаты классификации, локализации и верификации

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

  • is_event — является ли результат событием;
  • is_violation — является ли результат нарушением;
  • description — краткое объяснение решения;
  • primary_category — код основной категории;
  • secondary_category — код уточняющей категории.

Результат локализации дополнительно содержит объект detections с массивом областей bboxes и массивом меток labels. Элементы с одинаковым индексом относятся к одному объекту; число областей должно совпадать с числом меток. Пример результата имеет следующий вид:

{
  "is_event": true,
  "is_violation": true,
  "description": "Обнаружен признак контролируемой ситуации",
  "primary_category": "<код основной категории>",
  "secondary_category": "<код вторичной категории>",
  "detections": {
    "bboxes": [[10, 20, 110, 220]],
    "labels": ["<метка объекта>"]
  }
}

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

Промпт верификации возвращает:

Поле Содержание
comment Непустое текстовое обоснование решения
event_confirmation_status 1 — статус не определён, 2 — событие подтверждено, 3 — событие отклонено
delete_event Логическая команда пометить событие на удаление; возвращается только если поле предусмотрено схемой и обработчиком поставки

Таблица 7.3.5 — Выходные поля верификации события.

При обычном решении компонент передаёт статус и комментарий в хранилище событий с признаком автоматического проверяющего и сведениями о применённом промпте. При delete_event = true выполняется отдельная операция удаления по правилам хранилища событий. Отсутствие этого поля не должно трактоваться как команда удаления.

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

7.3.4. Консолидированные результаты и интеграционный обмен

Для активной камеры результат с is_event = true или is_violation = true преобразуется в сообщение события, если схема не предписывает консолидацию. Ручное выполнение без камеры сохраняется в истории, но не создаёт событие видеонаблюдения.

Элемент события Содержание
message_uuid Уникальный идентификатор сообщения и связь с event_message_uuid выполнения
Камера и время Идентификатор источника и время исходного кадра, а не время окончания MLLM
Изображения Основное изображение и, при наличии, дополнительные изображения с указанием их камер
Категории Проверенные основная и вторичная категории в структуре объектов; отдельный перечень обнаруженных категорий заполняется, если это предусмотрено интеграционным профилем
Объекты Основной объект и связанные вторичные объекты с категорией, пояснением и областью изображения
Тип события Событие или нарушение согласно логическому результату и интеграционному контракту
Сведения MLLM Идентификатор промпта и структурированный ответ в JSON

Таблица 7.3.6 — Состав события, сформированного по результату MLLM.

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

При консолидации частный выход содержит:

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

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

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

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

Успешная синхронная операция возвращает идентификатор объекта либо логический status = true. Для операции, не создающей сущность, может дополнительно возвращаться краткое поле msg. Ответ списка содержит записи и total. Принятие асинхронного запуска подтверждается UUID; окончательный успех подтверждается только состоянием generated.

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

Класс ошибки Выходные сведения и действие
Нарушение прав или сеанса Защищённый API возвращает отказ без данных объекта; пользователю предлагается восстановить сеанс либо обратиться за правами
Некорректное поле или идентификатор Возвращается ошибка проверки с указанием допустимого поля; внутренняя трассировка не раскрывается
Неактивный промпт или подключение Запуск отклоняется либо завершается ошибкой с указанием состояния конфигурации
Недоступное изображение Выполнение получает failed; сообщается отсутствие, истечение срока либо ошибка чтения объекта без раскрытия внутреннего пути
Недоступная MLLM или модель Фиксируется failed, время окончания и причина соединения, аутентификации, отсутствия модели или превышения ожидания
Превышение контекста или ресурса Возвращается отказ выполнения; автоматическое неконтролируемое усечение результата не выполняется
Некорректный ответ MLLM В error_text указывается нарушение JSON, обязательных полей, типов или категорий; доступный исходный фрагмент сохраняется в raw_json_response
Ошибка очереди, хранилища или публикации события Операция регистрируется как ошибочная либо повторяется по отдельно настроенной политике; сохранение события проверяется у получателя по event_message_uuid, поскольку наличие UUID в выполнении не является подтверждением доставки
Отмена пользователем Состояние меняется на canceled, фиксируются время и причина отмены

Таблица 7.3.7 — Выходные сообщения об ошибках.

Диагностический текст выполнения ограничивается серверным пределом; текущий контракт сохраняет не более 1024 символов описания ошибки. Пользовательское сообщение не должно содержать токены, пароли, реквизиты прокси, внутренние адреса, трассировку стека или полное содержимое защищаемого изображения. Подробности для технического персонала связываются с выполнением по UUID и помещаются в защищённый журнал.

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

Для целевой поставки необходимо утвердить сроки хранения конфигурации, версий, результатов, изображений и журналов, правила доступа к исходному JSON и изображениям, каталог пользовательских кодов и текстов ошибок, политику повторов и дедупликации, пороги и сроки хранения статистики, требуемые форматы выгрузки и отчётности и правила аудита административных изменений (приложение Г). Эти значения определяются требованиями заказчика, а не конфигурацией контура разработки.

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

Текст и ответы JSON кодируются в UTF-8. Внешний API передаёт JSON с MIME-типом application/json по защищённому HTTP-соединению. Отсутствующее необязательное значение передаётся как null либо не включается в запрошенный набор полей; пустая строка не должна использоваться как замена неизвестному идентификатору.

Числовые идентификаторы возвращаются десятичными целыми значениями. UUID передаются канонической строкой с дефисами. start_at, finish_at, snapshot_timestamp и временные метки статистики представлены целым числом секунд Unix в UTC. Веб-интерфейс может отображать их в выбранном пользователем формате и часовом поясе, не изменяя сохранённого значения.

Состояния выполнения кодируются строками нижнего регистра: started, generated, failed, canceled. Логические значения кодируются JSON-значениями true и false. Процент успешных запросов представляется числом от 0 до 100; правила округления задаются клиентом отображения.

Категории в API и интеграционных сообщениях передаются стабильными кодами справочника. Локализованные наименования формируются веб-интерфейсом и не заменяют код. Координаты передаются массивами чисел в порядке [x1, y1, x2, y2]; единицы определяются признаком нормализации. Метка в labels относится к области с тем же индексом в bboxes.

raw_json_response является строкой, внутри которой находится JSON в UTF-8. Клиент должен сначала разобрать строку как JSON и не использовать её как HTML. Типизированные поля записи выполнения имеют приоритет над повторным разбором исходного текста для прикладных решений.

Изображение предоставляется UUID либо защищённой ссылкой. Двоичное содержимое возвращается отдельным запросом с фактическим MIME-типом JPEG или PNG. Ссылка не должна раскрывать путь файловой системы или реквизиты доступа и действует в пределах установленных прав и срока хранения. Внутреннее сообщение консолидации может содержать Base64 без префикса Data URI; это не является форматом выдачи изображения пользователю.

События внутренней очереди кодируются утверждённым типизированным двоичным форматом, а сообщения, для которых контрактом установлен JSON, — UTF-8 JSON. Журналы не являются источником прикладного результата и не должны содержать секреты или полный защищаемый вход и выход MLLM.

Приложения

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

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

А.1. Схема результата классификации

{
  "type": "object",
  "properties": {
    "is_event": {
      "type": "boolean"
    },
    "is_violation": {
      "type": "boolean"
    },
    "description": {
      "type": "string"
    },
    "primary_category": {
      "type": "string",
      "enum": ["<код основной категории>"]
    },
    "secondary_category": {
      "type": "string",
      "enum": ["<код вторичной категории>"]
    }
  },
  "required": [
    "is_event",
    "is_violation",
    "description",
    "primary_category",
    "secondary_category"
  ],
  "additionalProperties": false
}

А.2. Схема результата локализации

{
  "type": "object",
  "properties": {
    "is_event": {
      "type": "boolean"
    },
    "is_violation": {
      "type": "boolean"
    },
    "description": {
      "type": "string"
    },
    "primary_category": {
      "type": "string",
      "enum": ["<код основной категории>"]
    },
    "secondary_category": {
      "type": "string",
      "enum": ["<код вторичной категории>"]
    },
    "detections": {
      "type": "object",
      "properties": {
        "bboxes": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 4,
            "maxItems": 4
          }
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["bboxes", "labels"],
      "additionalProperties": false
    }
  },
  "required": [
    "is_event",
    "is_violation",
    "description",
    "primary_category",
    "secondary_category",
    "detections"
  ],
  "additionalProperties": false
}

Массивы bboxes и labels должны иметь одинаковую длину. Каждая область задаётся как [x1, y1, x2, y2]. Диапазон координат определяется признаком normalize_coords и утверждённым контрактом целевой модели.

А.3. Схема результата верификации события

{
  "type": "object",
  "properties": {
    "comment": {
      "type": "string",
      "minLength": 1
    },
    "event_confirmation_status": {
      "type": "integer",
      "enum": [1, 2, 3]
    },
    "delete_event": {
      "type": "boolean"
    }
  },
  "required": [
    "comment",
    "event_confirmation_status"
  ],
  "additionalProperties": false
}

Значение 1 означает отсутствие определённого решения, 2 — подтверждение, 3 — отклонение события. Поле delete_event включается в схему только тогда, когда команда удаления поддерживается обработчиком и разрешена регламентом заказчика. Отсутствие поля не означает удаление.

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

  • схема хранится как корректный JSON в UTF-8;
  • обязательные поля соответствуют типу промпта;
  • значения enum содержат стабильные коды, а не локализованные подписи;
  • типы полей согласованы с серверным валидатором;
  • изменение схемы создаёт новую редакцию промпта и проверяется контрольным запуском до активации автоматической обработки.

Приложение Б (справочное). Жизненный цикл конфигурации и выполнения

Б.1. Подключение и промпт

flowchart LR CREATE_LLM["Создание подключения"] --> SAVED_LLM["Сохранено
is_active = true/false"] SAVED_LLM --> CHECK["Проверка адреса,
модели и доступа"] CHECK -->|успешно| ACTIVE_LLM["Активное подключение"] CHECK -->|ошибка| SAVED_LLM ACTIVE_LLM --> DISABLE_LLM["Отключение"] DISABLE_LLM --> SAVED_LLM SAVED_LLM --> DELETE_LLM["Логическое удаление"] ACTIVE_LLM --> CREATE_PROMPT["Создание промпта"] CREATE_PROMPT --> PROMPT["Текущая редакция
и история"] PROMPT --> TEST["Контрольный запуск"] TEST -->|успешно| ACTIVE_PROMPT["Активный промпт"] TEST -->|ошибка| EDIT["Изменение текста,
схемы или параметров"] EDIT --> PROMPT ACTIVE_PROMPT --> EDIT ACTIVE_PROMPT --> DISABLE_PROMPT["Отключение промпта"] DISABLE_PROMPT --> PROMPT PROMPT --> DELETE_PROMPT["Логическое удаление"]

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

Сохранение подключения не подтверждает его доступность. Активация выполняется после проверки целевого API и модели. Изменение текста, JSON Schema, нормализации координат или параметров области верификации сохраняется как новая редакция промпта. Расписание является текущим назначением и не восстанавливается автоматически из истории текста.

Б.2. Выполнение промпта

flowchart LR REQUEST["Команда или
условие запуска"] --> STARTED["started
принято или выполняется"] STARTED -->|ответ проверен| GENERATED["generated"] STARTED -->|ошибка| FAILED["failed"] STARTED -->|команда отмены| CANCELED["canceled"] GENERATED --> NO_EVENT["Запись в истории
без события"] GENERATED --> EVENT["Прямое событие"] GENERATED --> CONS["Частный результат
консолидации"] GENERATED --> VERIFY["Изменение статуса
исходного события"]

Схема Б.2 — Жизненный цикл выполнения промпта.

Состояния generated, failed и canceled являются терминальными. Повторный запуск после ошибки создаёт новое выполнение с новым UUID. Наличие event_message_uuid позволяет сопоставить выполнение с сообщением события, но не заменяет проверку сохранения события у получателя.

Приложение В (справочное). Типы запусков, состояния и сообщения

В.1. Типы условий запуска

Код API Числовое значение Условие Основные данные
EVERY_N_SECONDS 1 Истёк заданный интервал в секундах Промпт, камера, интервал и текущий кадр
EVERY_MINUTE 2 Наступила очередная минута Промпт, камера и текущий кадр
EVERY_N_MINUTES 3 Истёк заданный интервал в минутах Промпт, камера, интервал и текущий кадр
EVERY_HOUR 4 Наступил очередной час Промпт, камера и текущий кадр
EVERY_DAY 5 Наступило заданное время суток Промпт, камера, время HH:mm и текущий кадр
EVERY_WEEK 6 Наступили выбранные день недели и время Промпт, камера, дни от 1 до 7, время и текущий кадр
TRIGGER_CATEGORY 7 Получено событие заданной категории Промпт, камера, категория, время события, основной и дополнительные кадры
FRAME_COMPARISON 8 Выполнено условие сравнения кадров Промпт, камера и набор сравниваемых изображений; применяется только при наличии обработчика в поставке
UPON_REQUEST 9 Получена отдельная команда запуска Промпт, изображение и контекст программного запроса

Таблица В.1 — Типы условий запуска промпта.

Значение 0 зарезервировано для неопределённого типа и не является рабочим условием. Пользовательский ручной запуск реализуется отдельной командой и может соответствовать типу UPON_REQUEST только в том интеграционном профиле, где это явно предусмотрено. Поддержка FRAME_COMPARISON также подтверждается для целевой поставки отдельно.

В.2. Сводные состояния

Объект Состояние или признак Содержание
Подключение is_active = true Разрешено назначение новых заданий; доступность MLLM контролируется отдельно
Подключение is_active = false Новые задания не назначаются, конфигурация сохраняется
Подключение или промпт is_deleted = true Объект логически исключён из рабочих списков; связанные результаты сохраняются по регламенту
Промпт is_active = true Разрешено автоматическое выполнение текущей редакции при активном подключении
Промпт is_active = false Автоматический запуск запрещён; текст, версии и расписание сохраняются
Выполнение started Задание принято, ожидает ресурс либо выполняется
Выполнение generated Ответ успешно разобран и сохранён
Выполнение failed Обработка завершилась ошибкой
Выполнение canceled Обработка отменена пользователем или управляющим API
Верификация 1 Решение не определено
Верификация 2 Событие подтверждено
Верификация 3 Событие отклонено

Таблица В.2 — Состояния объектов LPI-VAP-MLLM.

В.3. Сообщение прогресса выполнения

{
  "execution_uuid": "00000000-0000-0000-0000-000000000001",
  "status": "generated",
  "error": "",
  "start_at": 1787904000,
  "finish_at": 1787904015
}

Поле finish_at отсутствует или равно null, пока выполнение не перешло в терминальное состояние. При failed поле error содержит обезличенное краткое описание причины. Сохранённая запись выполнения запрашивается отдельно по execution_uuid.

В.4. Пример записи успешного выполнения

{
  "execution_uuid": "00000000-0000-0000-0000-000000000001",
  "status": "generated",
  "start_at": 1787904000,
  "finish_at": 1787904015,
  "snapshot_timestamp": 1787903990,
  "camera_id": 101,
  "is_event": true,
  "is_violation": true,
  "primary_category": "<код основной категории>",
  "secondary_category": "<код вторичной категории>",
  "description": "Обнаружен признак контролируемой ситуации",
  "image_uuid": "00000000-0000-0000-0000-000000000002",
  "event_message_uuid": "00000000-0000-0000-0000-000000000003",
  "error_text": null
}

Значения идентификаторов, времени и категорий приведены только для пояснения структуры. Они не являются параметрами контура заказчика. Исходный ответ MLLM дополнительно возвращается в raw_json_response как строка с JSON.

В.5. Связь успешного результата с прикладным выходом

Результат выполнения Дальнейший выход
generated, оба логических признака ложны Запись остаётся в истории; событие не создаётся
generated, имеется событие или нарушение и задана камера Формируется прямое событие Платформы 4.0
generated, присутствует правило консолидации Сохраняется частный результат; итоговое событие создаётся после полного актуального набора камер
generated, тип промпта — верификация Изменяются статус и комментарий исходного события либо выполняется разрешённая команда удаления
failed или canceled Сохраняются состояние и диагностика; прикладное событие не создаётся

Таблица В.3 — Связь результата выполнения с прикладным выходом.

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

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

Группа Требуется установить Документ, в котором фиксируется результат
Идентификация поставки Обозначение редакции Платформы 4.0, версии LPI-VAP-MLLM, состав и версии контейнерных образов Формуляр и ведомость поставки
MLLM Наименование и версия модели, вариант квантования, размер весов, длина контекста, параметры генерации и число GPU на экземпляр Спецификация поставки
Системное ПО Версии «Московской серверной операционной системы», среды исполнения контейнеров и средств оркестрации Kubernetes, драйвера NVIDIA, CUDA и библиотек исполнения Формуляр и инструкция по установке
Технические средства Тип целевой конфигурации, модели CPU и GPU, число узлов, RAM и VRAM, дисковые и сетевые характеристики Спецификация технических средств
Топология и отказоустойчивость Распределение управляющих, вычислительных и хранилищных ролей, балансировка, резервирование и переключение при отказе Схема развёртывания и план обеспечения непрерывности
Сетевое взаимодействие Адреса целевых API, DNS, порты, доверенные сертификаты, прокси и правила межсетевого доступа Схема соединений и требования безопасности
Секреты Способы выдачи, хранения, смены и отзыва токенов, паролей и реквизитов прокси Политика управления секретами
Изображения Допустимые MIME-типы, максимальные размер и разрешение, число основных, дополнительных и эталонных изображений Спецификация API
Промпты и контекст Максимальная длина текста, метод подсчёта токенов, резерв ответа, допустимые схемы и число эталонных примеров Спецификация API
Категории и координаты Утверждённые справочники категорий, диапазон нормализованных координат и правила округления Спецификация API и описание структур данных
Расписания Минимальный интервал, часовой пояс, допустимое отклонение запуска, правила перехода через полночь и поддержка специальных типов Технологическая инструкция
Производительность Профиль нагрузки, число запросов в минуту, параллелизм, длина очереди, время ожидания и параметры прогрева Спецификация целевой поставки
Качество Контрольные выборки и целевые показатели по каждому прикладному промпту, допустимые ложные и пропущенные результаты Спецификация целевой поставки
Ошибки и повторы Каталог пользовательских ошибок, тайм-ауты, число и интервалы повторов, правила отмены и дедупликации Спецификация API и руководство администратора
Роли и аудит Матрица прав на подключения, промпты, расписания, запуски, результаты и исходный JSON; правила аудита изменений Модель доступа и требования безопасности
Хранение Сроки хранения конфигурации, версий, изображений, запусков, результатов, промежуточных данных, статистики и журналов Политика хранения и руководство администратора
Резервное копирование RPO, RTO, периодичность, глубина хранения и порядок контрольного восстановления План резервного копирования
Мониторинг Контролируемые показатели, пороги предупреждений, маршруты оповещения и срок хранения метрик Регламент мониторинга
Выгрузка и отчётность Необходимые форматы выгрузки истории, исходных и структурированных результатов и статистики Спецификация API и требования к отчётности
Приёмка Контрольные подключения, промпты, изображения, категории, ожидаемые результаты и критерии успешности Спецификация целевой поставки

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

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

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

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

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

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

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

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

flowchart TB
    UI["Веб-интерфейс<br/>Платформы 4.0"]
    subgraph MLLM["LPI-VAP-MLLM"]
        direction TB
        CONN["Подключения к MLLM<br/>и промпты"]
        QUEUE["Очередь заданий<br/>и диспетчеризация"]
        REQ["Формирование<br/>мультимодального запроса"]
        SRV["Сервер MLLM<br/>на графических ускорителях"]
        RES["Проверка и применение<br/>результата"]
        CONS["Консолидация результатов<br/>нескольких камер"]
        CONN --> QUEUE
        QUEUE --> REQ
        REQ --> SRV
        SRV --> REQ
        REQ --> RES
        RES --> CONS
    end
    UI --> CONN
    UI --> RES
    CORE["LPI-VAP-CORE<br/>доступ, камеры, кадры,<br/>события"] --> QUEUE
    RES --> CORE
    CONS --> CORE
MLLM-MER-002. Схема 1.2 — Уровни программного обеспечения, необходимого для функционирования компонента

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

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

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

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

flowchart LR
    CFG["Подключение, модель<br/>и промпт"] --> START{"Условие запуска"}
    CAM["Камеры, расписания<br/>и категории событий"] --> START
    START -->|ручной запуск| FILE["Загруженный кадр"]
    START -->|по расписанию| SNAP["Текущий кадр камеры"]
    START -->|по событию| EVENT["Кадр и контекст события"]
    REF["Эталонные изображения"] --> REQUEST["Мультимодальное задание"]
    FILE --> REQUEST
    SNAP --> REQUEST
    EVENT --> REQUEST
    REQUEST --> QUEUE["Очередь и распределение<br/>по экземплярам MLLM"]
    QUEUE --> MLLM["Выполнение запроса MLLM"]
    MLLM --> VALIDATE{"Ответ соответствует<br/>заданной структуре?"}
    VALIDATE -->|нет| ERROR["Состояние ошибки<br/>и диагностика"]
    VALIDATE -->|да| RESULT["Сохранённый результат JSON"]
    RESULT --> VIEW["Просмотр результата"]
    RESULT --> DIRECT["Создание или проверка события"]
    RESULT --> CONS["Консолидация результатов"]
MLLM-MER-004. Схема 3.1 — Общий алгоритм выполнения мультимодального задания

Расположение схемы: 3.1. Алгоритм программы.

flowchart TD
    START(["Условие запуска"]) --> MODE{"Режим запуска"}
    MODE -->|ручной| UPLOAD["Загрузка отдельного кадра"]
    MODE -->|расписание| SNAPSHOT["Получение текущего кадра камеры"]
    MODE -->|категория события| TRIGGER["Текущий и дополнительные кадры,<br/>контекст события"]
    MODE -->|проверка события| VERIFY["Кадр зарегистрированного события"]

    UPLOAD --> INPUT
    SNAPSHOT --> INPUT
    TRIGGER --> INPUT
    VERIFY --> INPUT["Проверка промпта, подключения,<br/>назначения камеры и изображения"]

    INPUT -->|ошибка| INPUT_ERROR["Фиксация отказа входных данных"]
    INPUT -->|успешно| TASK["Создание задания<br/>со статусом «ожидает»"]
    TASK --> DISPATCH{"Есть свободный<br/>экземпляр MLLM?"}
    DISPATCH -->|нет| TASK
    DISPATCH -->|да| CONTEXT["Формирование текста, изображений,<br/>параметров и схемы ответа"]
    CONTEXT --> CALL["Вызов выбранного экземпляра MLLM"]

    CALL -->|сетевая ошибка<br/>или превышение времени| FAILED["Статус «ошибка»,<br/>диагностическое сообщение"]
    CALL -->|ответ получен| JSON{"Ответ является JSON<br/>требуемой структуры?"}
    JSON -->|нет| FAILED
    JSON -->|да| SAVE["Сохранение результата<br/>со статусом «выполнено»"]

    SAVE --> ROUTE{"Способ применения"}
    ROUTE -->|просмотр| UI["Журнал выполнений"]
    ROUTE -->|итоговый результат| EVENT["Создание события"]
    ROUTE -->|частный результат| CONS["Ожидание результатов<br/>других камер"]
    ROUTE -->|проверка события| CONFIRM["Подтверждение или отклонение<br/>исходного события"]
    CONS -->|набор неполон<br/>или устарел| WAIT["Ожидание либо удаление<br/>устаревших данных"]
    CONS -->|набор полон| EVENT
MLLM-MER-005. Схема 3.2 — Логическая структура LPI-VAP-MLLM и связи с окружением

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

flowchart LR
    subgraph PLATFORM["Смежные компоненты Платформы 4.0"]
        UI["Веб-интерфейс<br/>и API-шлюз"]
        CORE["LPI-VAP-CORE<br/>единая точка входа,<br/>роли и полномочия"]
        CAM["Управление камерами<br/>и связями объектов"]
        FRAME["Получение кадров<br/>и базовая видеоаналитика"]
        DTS["Временное хранилище<br/>изображений"]
        DICT["Справочник моделей<br/>и категорий"]
        EVENTS["Хранилище событий"]
    end

    subgraph COMPONENT["LPI-VAP-MLLM"]
        INT["inf-llm-integration<br/>управление и диспетчеризация"]
        DB1[("PostgreSQL<br/>конфигурация и выполнения")]
        AGENT["llm-agent<br/>формирование запроса"]
        VLLM["llm-vllm<br/>GPU-инференс"]
        CONS["inf-llm-event-consolidation<br/>объединение результатов"]
        DB2[("PostgreSQL<br/>частные результаты")]
    end

    CORE --> UI
    UI <-->|"GraphQL / внутренний RPC"| INT
    CAM -->|"назначения и расписания"| FRAME
    FRAME -->|"задание, UUID кадров"| INT
    DTS <-->|"получение и размещение изображений"| INT
    DICT -->|"модели и категории"| INT
    INT <-->|"прикладные данные"| DB1
    INT -->|"HTTP JSON"| AGENT
    AGENT -->|"OpenAI-совместимый API"| VLLM
    VLLM -->|"структурированный ответ"| AGENT
    AGENT -->|"JSON"| INT
    INT -->|"итоговое событие"| EVENTS
    INT -->|"частный результат"| CONS
    CONS <-->|"состояние консолидации"| DB2
    CAM -->|"состав камер объекта"| CONS
    CONS -->|"доказательные изображения"| DTS
    CONS -->|"консолидированное событие"| EVENTS
    EVENTS -->|"событие для проверки"| INT
MLLM-MER-006. Схема 4.1 — Размещение составных частей LPI-VAP-MLLM на узлах кластера Платформы 4.0

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

flowchart LR
    ARM["Рабочее место<br/>веб-браузер"]
    INGRESS["Ingress и веб-шлюз<br/>HTTPS, WebSocket"]
    subgraph MASTER["Мастер-нода Kubernetes"]
        INT["inf-llm-integration<br/>управление и очередь"]
        AGENT["llm-agent<br/>формирование запроса"]
        CONS["inf-llm-event-consolidation<br/>консолидация"]
        STORE["PostgreSQL, MinIO, Kafka"]
        TEMP["Redis<br/>временные изображения"]
        INT --> AGENT
        INT --> CONS
        INT --> STORE
        CONS --> STORE
        INT --> TEMP
    end
    subgraph LLM["LLM-нода Kubernetes (GPU)"]
        VLLM["llm-vllm<br/>сервер MLLM"]
        WEIGHTS["Веса и кэш модели"]
        VLLM --> WEIGHTS
    end
    CORE["LPI-VAP-CORE<br/>камеры, кадры, события"]
    BACKUP["Средства резервного копирования<br/>в отдельном домене отказа"]

    ARM --> INGRESS --> INT
    AGENT --> VLLM
    INT <--> CORE
    CONS --> CORE
    STORE --> BACKUP
MLLM-MER-007. Схема 4.2 — Выбор типа конфигурации LLM-ноды и масштабирование обработки

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

flowchart TB
    SEL{"Требуемые показатели:<br/>длина контекста и скорость обработки"}
    T1["Тип 1: 1 сервер, 1 × H100<br/>контекст до 32 784 токенов<br/>не менее 0,15 запроса в минуту"]
    T2["Тип 2: 1 сервер, 8 × A30<br/>контекст до 8 192 токенов<br/>не менее 1 запроса в минуту"]
    T3["Тип 3: 2 сервера, 4 × A30 каждый<br/>контекст до 4 096 токенов<br/>не менее 6 запросов в минуту"]
    INST["Экземпляры выполнения MLLM<br/>и ёмкость подключений:<br/>параллелизм заданий"]
    NX["Дальнейшее масштабирование<br/>дополнительными LLM-нодами<br/>по отдельному согласованию"]
    MASTER["Ресурсы управляющих сервисов мастер-ноды:<br/>рассчитываются по числу промптов, камер,<br/>запросов в минуту и срокам хранения результатов"]

    SEL --> T1
    SEL --> T2
    SEL --> T3
    T1 --> INST
    T2 --> INST
    T3 --> INST
    INST --> NX
    MASTER -.-> INST
MLLM-MER-008. Схема 5.1 — Порядок запуска серверных составных частей (остановка выполняется в обратном порядке)

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

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

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

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

sequenceDiagram
    actor U as Пользователь
    participant UI as Веб-интерфейс
    participant CORE as LPI-VAP-CORE<br/>единая точка входа
    participant GW as API-шлюз
    participant INT as Сервис управления<br/>inf-llm-integration

    U->>UI: Открыть раздел «LLM» или «Промпты»
    UI->>CORE: Проверить сессию и разрешения
    alt Сессия отсутствует или истекла
        CORE-->>UI: Требуется вход через СУДИР
        UI-->>U: Страница входа
    else Сессия действительна
        UI->>GW: GraphQL-запрос списка и справочников
        GW->>INT: Получить подключения, промпты, состояния
        INT-->>GW: Данные раздела
        GW-->>UI: Данные раздела
        UI->>GW: Установить соединение WebSocket
        GW-->>UI: Канал уведомлений о ходе выполнений
        UI-->>U: Список и доступные команды
    end
MLLM-MER-010. Схема 6.1 — Формирование входного задания компонента

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

flowchart LR
    CFG["Подключение, промпт,<br/>камера и условие запуска"] --> CHECK["Проверка и<br/>нормализация"]
    IMG["Целевое и дополнительные<br/>изображения"] --> CHECK
    EVENT["Контекст события<br/>или команда пользователя"] --> CHECK
    DICT["Модели, категории,<br/>права и лимиты"] --> CHECK
    CHECK --> TASK["Входное задание<br/>LPI-VAP-MLLM"]
    TASK --> REQUEST["Мультимодальный запрос:<br/>текст + изображения + схема"]
MLLM-MER-011. Схема 7.1 — Формирование выходных данных запуска

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

flowchart LR
    MLLM["Исходный ответ MLLM"] --> PARSE{"Разбор и проверка<br/>по схеме"}
    PARSE -->|ошибка| FAILED["Состояние failed,<br/>диагностика"]
    PARSE -->|успешно| JOURNAL["Состояние generated,<br/>запись в журнале"]
    JOURNAL --> DECISION{"Тип и содержание<br/>результата"}
    DECISION -->|нет события| HISTORY["Только история<br/>выполнения"]
    DECISION -->|событие| EVENT["Событие<br/>Платформы 4.0"]
    DECISION -->|консолидация| CONS["Частный результат<br/>и итоговое событие"]
    DECISION -->|верификация| VERIFY["Статус и комментарий<br/>исходного события"]
MLLM-MER-012. Схема Б.1 — Жизненный цикл подключения и промпта

Расположение схемы: Б.1. Подключение и промпт.

flowchart LR
    CREATE_LLM["Создание подключения"] --> SAVED_LLM["Сохранено<br/>is_active = true/false"]
    SAVED_LLM --> CHECK["Проверка адреса,<br/>модели и доступа"]
    CHECK -->|успешно| ACTIVE_LLM["Активное подключение"]
    CHECK -->|ошибка| SAVED_LLM
    ACTIVE_LLM --> DISABLE_LLM["Отключение"]
    DISABLE_LLM --> SAVED_LLM
    SAVED_LLM --> DELETE_LLM["Логическое удаление"]
    ACTIVE_LLM --> CREATE_PROMPT["Создание промпта"]
    CREATE_PROMPT --> PROMPT["Текущая редакция<br/>и история"]
    PROMPT --> TEST["Контрольный запуск"]
    TEST -->|успешно| ACTIVE_PROMPT["Активный промпт"]
    TEST -->|ошибка| EDIT["Изменение текста,<br/>схемы или параметров"]
    EDIT --> PROMPT
    ACTIVE_PROMPT --> EDIT
    ACTIVE_PROMPT --> DISABLE_PROMPT["Отключение промпта"]
    DISABLE_PROMPT --> PROMPT
    PROMPT --> DELETE_PROMPT["Логическое удаление"]
MLLM-MER-013. Схема Б.2 — Жизненный цикл выполнения промпта

Расположение схемы: Б.2. Выполнение промпта.

flowchart LR
    REQUEST["Команда или<br/>условие запуска"] --> STARTED["started<br/>принято или выполняется"]
    STARTED -->|ответ проверен| GENERATED["generated"]
    STARTED -->|ошибка| FAILED["failed"]
    STARTED -->|команда отмены| CANCELED["canceled"]
    GENERATED --> NO_EVENT["Запись в истории<br/>без события"]
    GENERATED --> EVENT["Прямое событие"]
    GENERATED --> CONS["Частный результат<br/>консолидации"]
    GENERATED --> VERIFY["Изменение статуса<br/>исходного события"]

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

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

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

Рабочая редакция 0.2 уточняет границу интеграции с СУДИР: единый вход выполняет LPI-VAP-CORE, а LPI-VAP-MLLM получает пользовательский контекст и проверяет полномочия на операции. Рабочая редакция 0.3 отражает выравнивание содержания и оформления с описаниями Центрального модуля, компонентов управления моделями и среды разработки сценариев: компонент определён как расширение программного продукта, целевое развёртывание приведено к кластеру Kubernetes Платформы 4.0 с размещением сервера модели на LLM-ноде, добавлены схемы уровней программного обеспечения, масштабирования и загрузки сессии, приведены к единому виду функциональные блоки, разделы о технических средствах, порядок загрузки и лист регистрации; служебные примечания об основаниях разделов исключены. Она не является зарегистрированным изменением утверждённого оригинала. При выпуске утверждаемой редакции необходимо:

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

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