Задержка, топология развёртывания и выбор между реальным временем и пакетной обработкой

Автор: Николай СапуновОбновлено: август 202622 мин чтения
Содержание статьи +

TL;DR

Любая ИИ-фича в видео-продукте живёт внутри треугольника: latency-бюджет (сколько времени у вас есть на ответ), топология развёртывания (где работает модель – на устройстве пользователя, на edge-узле или в облаке) и поза real-time vs batch (модель ждёт полный вход или обязана выдавать частичные ответы потоком). Три выбора не независимы – выберите любые два, и третий зафиксирован. Большинство проектов проваливается не на выборе неправильной модели, а на неверном масштабировании треугольника: live-субтитры с бюджетом 200 мс, поставленные в облачный регион в 1500 км от пользователя, сожгут бюджет на одном сетевом round-trip – как бы быстро Whisper ни работал. В статье – инженерная арифметика треугольника: конкретные latency-числа, расчёт стоимости минуты для каждой топологии и дерево решений, превращающее любой feature-request в план развёртывания за пять минут.

Зачем это вам

Если вы шипите видео-продукт, следующая ИИ-фича, которую вы одобрите, пройдёт через три архитектурных решения задолго до того, как инженер напишет первую строчку. Насколько быстро должен прийти ответ? Где в сети живёт модель? Видит ли модель вход как поток или как готовый файл? Эти три числа определяют вашу стоимость минуты, privacy-поставку, операционную сложность и переживёт ли фича первые продакшен-выходные. Эта статья – шпаргалка, которой должны делиться продукт, инженерия и финансы – чтобы на следующий вопрос «можем ли мы добавить эту ИИ-фичу?» ответ приходил за день, а не за квартал.

Треугольник

Три выбора лежат в сердце любой видео-ИИ-фичи. Выберите любые два – третий вынуждается.

Latency-бюджет – время между приходом входа и уходом ответа. Для real-time-звонка – 100–200 мс end-to-end. Для резюме встречи – пять минут. Для индекса поиска по архиву – часы. Бюджет ставит пользовательский опыт, а не модель – модель должна вписаться в бюджет, не наоборот.

Топология развёртывания – где модель физически работает. В 2026 году существует четыре слоя: on-device (телефон, ноутбук, камера пользователя), edge (сервер в той же метро-зоне, что и пользователь, – CDN-узел, региональный GPU-пул, 5G MEC-площадка), in-region cloud (GPU-гиперскейлера на том же континенте) и cross-region cloud (GPU где-то ещё на планете). Каждый слой добавляет фиксированную стоимость в миллисекундах и меняет стоимость минуты на порядок.

Поза real-time vs batch – обязана ли модель выдавать частичные ответы, пока вход ещё идёт, или может ждать весь вход до старта. Streaming Whisper эмитит partial-транскрипты раз в 300 мс; batched Whisper ждёт окончания записи и выдаёт идеальный транскрипт. Streaming- и batch-версии одной и той же модели – это разные инженерные deliverables, с разными код-путями и разными envelope качества.

Треугольник тугой. Бюджет 100 мс вынуждает модель в on-device или edge, что вынуждает маленькую модель, что вынуждает real-time-streaming с ухудшенным качеством. Бюджет 5 минут позволяет in-region cloud, позволяет крупную модель, позволяет batched-обработку с пиковым качеством. Попробуйте нарушить любую вершину – две другие сломаются.

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

Вершина 1 – Latency-бюджет

Latency – это время от «пользователь что-то сделал» до «результат показан пользователю». Для видео-ИИ-фич бюджет ставит то, что пользователь делает, а не то, на что способна модель.

Real-time-разговорная фича – live-субтитры, live-перевод, ИИ-агент в звонке – имеет бюджет 200–500 мс end-to-end. Выше – мозг пользователя регистрирует лаг, и фича ощущается сломанной. Live-субтитры конкретно нуждаются в partial-словах внутри 300 мс от речи и в финализированном тексте внутри одной секунды; streaming-ASR-сообщество называет это partial_latency и final_latency, и бюджет на оба числа стабилен с 2020 года.

Near-real-time-фича – in-call action items, mid-meeting-резюме, live-модерация – имеет бюджет 1–10 секунд. Пользователь ещё внутри сессии, но соглашается на пару секунд задержки, потому что результат обогащает звонок, а не управляет им. Большинство «умных meeting»-фич живёт здесь.

Post-session-фича – резюме встречи, главы, highlight-ролик, полнокачественный транскрипт – имеет бюджет 30 секунд – 5 минут. Пользователь оффлайн, листает meetings-страницу, ожидая, что результат готов к моменту клика в запись. Быстрее 30 секунд – впустую потраченная инженерия; медленнее 5 минут – support-тикеты.

Архивная фича – мультимодальный поисковый индекс, brand-safety-проход по VOD-каталогу, генерация эмбеддингов для рекомендаций – имеет бюджет часы и дни. Работа оффлайн, батчится, переиграется периодически. Latency измеряется в «успел ли ночной джоб закончиться к 6 утра».

Числа ниже квантуют, что каждый бюджет физически разрешает. Они приходят из production-развёртываний, не из standalone-бенчмарка модели.

ФичаБюджетЖёсткий верхний пределИсточник предела
Live-субтитры (partial)300 мс500 мсЧитатель успевает за речью
Live-субтитры (final)1.0 с1.5 сUI-обновление ощущается живым
Live-перевод800 мс1.5 сТуда-обратно в разговоре
ИИ-агент в звонке200–500 мс800 мсЕстественная очередь реплик
Размытие фона, на кадр33 мс50 мс30 fps capture loop
In-call action items3–10 с30 сСкролл бокового панеля
Резюме встречи30 с – 5 мин10 минОткрытие страницы записи
Highlight-ролик1–10 мин30 минNotification UX
Индекс поиска по архивучасыnightlyРитм ежедневной пересборки

Бюджет – это первый вход, который вы записываете. Каждое другое решение в этой статье от него зависит.

Вершина 2 – Топология развёртывания

Зная бюджет, вы выбираете слой, в котором живёт модель. У каждого слоя – фиксированная сетевая стоимость в миллисекундах и фиксированный envelope стоимости минуты.

Слой A – On-device

Модель работает на железе пользователя – GPU/NPU телефона, GPU/CPU ноутбука, браузер через WebGPU, SoC IP-камеры, AR/VR-гарнитура. Сетевая стоимость – ноль; round-trip никогда не покидает устройство.

Что здесь живёт: размытие фона, виртуальные фоны, on-device-шумодав, beauty-фильтры, коррекция взгляда, on-device wake-word detection, маленькие ASR-модели для live-субтитров, простые object-detection-префильтры для surveillance-камер. Общее свойство – модель помещается в десятки–сотни мегабайт и работает в watt-классе мощности.

Рантаймы – самый нижний слой стека, который неинженер может услышать. На Apple-устройствах это Core ML; на Android – LiteRT (прежде TensorFlow Lite); в браузере – WebGPU плюс ONNX Runtime Web или transformers.js; на Linux edge-устройствах – TensorRT (NVIDIA Jetson) или OpenVINO (Intel) или QNN (Qualcomm). Google LiteRT в 2025 году собрал кросс-платформенную GPU-историю – теперь он бьёт OpenCL, Metal, Vulkan и WebGPU через один ML Drift-бэкенд, и GPU-делегат работает в 1.4 раза быстрее предыдущего TFLite GPU-делегата (Google Developers Blog, 2025).

Экономика инвертирована относительно облака. Операционная стоимость за минуту – ноль; каждый цикл выполняется на железе, которое купил клиент. Платите вы за это инженерной сложностью на запуске: модель шипится на каждую поддерживаемую платформу (iOS, Android, Chrome, Safari, Edge, Electron), держится достаточно маленькой, чтобы работать на худшем железе из install-базы, и грациозно деградирует, когда GPU занят.

Слой B – Edge

Модель работает на сервере, географически близком к пользователю, – та же метро-зона или страна, обычно 5–30 мс round-trip. Четыре под-типа edge в 2026 году: CDN edge-узел (Cloudflare Workers AI, Akamai EdgeWorkers AI, Fastly Compute), площадка 5G mobile edge compute (MEC), региональный GPU-пул (ближайший к пользователю регион гиперскейлера или региональный облачный провайдер) и on-premise-инфраструктура для enterprise-инсталляций.

Что здесь живёт: live-субтитры в региональном звонке, контент-модерация в региональном SFU, real-time-перевод, LiveKit Agents worker, заходящий в звонок, surveillance-аналитика на локальном сервере объекта, telemedicine-инференс на стойке внутри здания больницы. Общее свойство – round-trip-latency достаточно мала для real-time, но железо общего назначения и шарится.

Edge получил больше всего внимания в 2026 году, потому что cost-saving-история самая сильная. NVIDIA AI Grid reference design – распределённый edge-инференс через телеком-сети – рапортует 76% более низкую стоимость инференса в burst-трафике и sub-500 мс latency-цель, стабильно достигаемую через географии (NVIDIA GTC 2026). Surveillance-развёртывание из 1000 камер, гоняющих детекцию на edge, режет нагрузку на backbone с десятков гигабит до однозначных, потому что сеть несёт наверх только алёрты и короткие клипы, а не сырое видео.

Trade-off – надёжность и патчинг. Упавший CDN edge-узел переключается на следующий регион – добавляя 30–80 мс round-trip – что может сломать live-translation, если бюджет был тугой. Edge – самый уязвимый слой к операционному разрыву между «демо работает» и «продакшен в масштабе переживает региональный outage».

Слой C – In-region cloud

Модель работает на GPU-гиперскейлера на том же континенте, что и пользователь, – AWS us-east-1 для США, eu-west-1 для Европы. Сетевой round-trip – 30–100 мс в зависимости от расположения пользователя и ISP.

Что здесь живёт: большинство production-AI-API, которым не нужен sub-200-мс-бюджет, batched ASR для post-call-транскриптов, проходы video VLM по записанным встречам, вызовы generative video API (Sora, Runway, Veo), генерация эмбеддингов для архивного поиска. Общее свойство – модель слишком большая для CDN edge, но latency-бюджет терпит континентальный round-trip.

Рантаймы здесь – те inference-серверы, которые ML-команды реально сравнивают: vLLM для LLM и VLM (42 000 запросов в месяц и растёт в 2026 – de-facto serving-движок для open-weights LLM), Triton Inference Server для смешанных развёртываний, TensorRT-LLM для NVIDIA-specific-сжатия и managed-предложения типа Modal, Replicate, Together ИИ и Fireworks – «я не хочу сам запускать serving-слой».

Облако – место, где счётчик стоимости минуты самый видимый. NVIDIA L4 on-demand за $0.65/час – это $0.011/минуту; A100 за $1.50/час – $0.025/минуту; H100 за $2.50/час – $0.042/минуту. Реальная стоимость за минуту видео зависит от того, сколько потоков делят GPU: модель сегментации 720p30 обслуживает сотни одновременных потоков на одном L4, а 4K-генеративная video-модель занимает весь H100 на один 10-секундный клип.

Слой D – Cross-region cloud

Модель работает в регионе на другом континенте от пользователя. Сетевой round-trip – 100–300 мс. Почти никогда не правильный ответ для видео-фич, но иногда вынужден регулированием (единственная EU-hosted-модель живёт в eu-central-1) или доступностью модели (фронтир-модель развёрнута только в us-west-2).

Что здесь живёт: редкие fallback-пути, регулятивные edge-кейсы, ограничения доступности модели во время launch-окна. Если ваша real-time-фича рутинно зависит от cross-region – архитектура неправильная; нужно либо гонять меньшую модель in-region, либо признать, что фича не real-time.

Рисунок 1. Четыре слоя топологии стэкуются от нулевой сети on-device вверх через metro-edge, in-region cloud и cross-region cloud. Каждый слой добавляет фиксированную стоимость в сетевых миллисекундах и меняет envelope стоимости минуты.

Вершина 3 – Real-time vs batch

Когда бюджет и топология закреплены, третье решение – streaming-модель или batch. Эти позы – разные deliverables, не разные конфигурации одной модели.

Real-time-модель (streaming) эмитит частичные ответы, пока вход ещё приходит. Whisper-streaming эмитит partial-транскрипты раз в 300 мс; Pyannote-streaming эмитит метки диаризации кадр за кадром; streaming video VLM эмитит бегущее описание сцены, пока приходят кадры. У real-time три жёстких свойства: обязан выдать partial-ответ до прихода полного входа; обязан уважать фиксированный latency-бюджет вне зависимости от нагрузки модели; и его отказы мгновенно видны пользователю (5-секундный stall в live-субтитрах – это support-тикет).

Batch-модель ждёт полный вход. Batched Whisper-Large-v3 ждёт окончания записи, гоняет модель end-to-end и выдаёт транскрипт качества, которого никакая streaming-версия не достигнет. У batch – инверсные свойства: терпит неограниченную длину входа; может вставать в очередь при пиках; и его отказы выглядят как «результат пришёл позже, чем оператор ожидал» – раздражает, не фатально.

Три инженерных следствия идут из разницы. Во-первых, одно и то же имя модели (Whisper, Pyannote, Qwen-VL) имеет два различных production-развёртывания – разные код-пути, разные chunking-стратегии, разные beam search-настройки и заметно разные envelope качества. Во-вторых, тот же продукт почти всегда хочет оба: live-субтитры во время звонка (real-time, быстро-и-грубо) плюс чистый транскрипт после звонка (batch, медленно-и-точно). Делайте оба и переключайте пользователя на стыке. В-третьих, относиться к live-результату как к архивному – самая частая ошибка в этом слое – вы оставляете в записи перманентно ухудшенный транскрипт.

Арифметика 30 fps беспощадна. На 30 fps у системы есть 33 мс на обработку каждого кадра. Если inference занимает дольше, система либо дропает кадры (видимый jitter), либо вводит лаг (видимая задержка), либо оба (Ultralytics, Real-Time Inference glossary, 2026). YOLO26-N, вышедшая в январе 2026, дала 43% ускорения CPU-инференса над YOLO11-N именно чтобы влезть в этот бюджет на устройствах без GPU.

Решение – не «или-или», а «в какой пропорции». Telemedicine-продукт хочет real-time live-субтитры в консультации, batched-диаризацию и кодирование карты после консультации и nightly-архивный проход для billing-аудита. Три deliverables, три разных развёртывания, одна общая product-поверхность.

Рисунок 2. Real-time- и batch-ИИ – это разные инженерные deliverables. То же имя модели (Whisper, Pyannote, Qwen-VL) живёт в двух production-развёртываниях с разными код-путями и разными envelope качества.

Треугольник на практике – три разобранных примера

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

Пример 1 – Live-субтитры в звонке 1-на-1

UX: субтитры появляются на экране, пока говорящий говорит, partial-слова – внутри 300 мс, финализированные – внутри 1 секунды.

Треугольник:

  • Бюджет – partial_latency 300 мс, final_latency 1.0 с.
  • Топология – edge или in-region cloud. On-device не подходит: модели нужно >100 МБ, а самые мелкие on-device-ASR заметно хуже по WER.
  • Поза – streaming.

Production-стек: Deepgram Nova-3 или AssemblyAI Universal-Streaming на стороне API (оба указывают около 300 мс partial-latency под продакшен-нагрузкой в 2026); либо self-hosted Whisper-medium-streaming на региональном L4 с chunked-overlap-обёрткой (faster-whisper или WhisperX). Round-trip-оверхед in-region добавляет 30–80 мс, комфортно внутри бюджета. Стоимость – около $0.0048 за минуту аудио для Deepgram Nova-3 или примерно $0.001/мин self-hosted при высокой утилизации. (Источник: публичная страница цен Deepgram, 2026.)

Пример 2 – Размытие фона в звонке

UX: размытие включается мгновенно, лицо пользователя остаётся чётким, фон сглажен, дропов кадров нет, видимого лага нет.

Треугольник:

  • Бюджет – 33 мс на кадр на 30 fps.
  • Топология – on-device. Edge не подходит: 50-мс round-trip съедает весь бюджет кадра.
  • Поза – real-time, кадр за кадром.

Production-стек: MediaPipe Selfie Segmentation v2 через WebGPU в Chrome/Edge, Core ML в Safari/macOS, LiteRT на Android. Per-кадр compute – ≈3 мс на M-классе GPU ноутбука, ≈8 мс на среднем Android-устройстве. Операционная стоимость минуты – $0, модель работает на железе, которое клиент уже имеет. Инженерная стоимость на запуске – per-platform-сборки и graceful degrade на слабом железе. Это канонический on-device-кейс.

Пример 3 – Резюме встречи после звонка

UX: когда пользователь открывает страницу встречи после звонка, резюме, главы и action items уже там.

Треугольник:

  • Бюджет – 30 секунд – 5 минут.
  • Топология – in-region cloud.
  • Поза – batch.

Production-стек: джоб подбирает запись из object storage по окончании сессии; гоняет Whisper-Large-v3 batched на региональном A100; прогоняет транскрипт через фронтир-LLM (GPT-5 / Claude Opus 4 / Gemini 2.5 Pro) для резюме и глав; пишет результат назад в метаданные записи. Стоимость на час встречи – примерно $0.10–0.30 в зависимости от выбранной LLM. (Источник: публичные цены каждого вендора в 2026.) Джоб прерывистый и очередируемый; если очередь пиково растёт в часы встреч, результаты приходят на 5 минут позже вместо 30 секунд – без user-visible-поломки.

Дерево решений – превращение feature-request в развёртывание

В продакшене вы не выводите треугольник с нуля для каждой фичи. Вы идёте по дереву решений. Дерево ниже сжимает три вершины в пятишаговую процедуру.

Шаг 1. Какой UX-latency-бюджет? Выберите: ≤500 мс (real-time-разговорный), 1–30 с (near-real-time), 30 с – 10 мин (post-session), часы–дни (архив).

Шаг 2. Зная бюджет, какой максимально допустимый сетевой round-trip? Вычтите round-trip из бюджета, чтобы получить inference-окно. Для бюджетов ≤500 мс inference-окно настолько тугое (≤100 мс после вычитания любой сети), что модель обязана быть on-device или edge.

Шаг 3. Зная inference-окно и размер нужной модели, какой топологический слой подходит? Модель сегментации в 50 МБ помещается on-device; VLM на 7 миллиардов параметров – на региональный A100; LLM на 70 миллиардов – на H100. Если модель не помещается ни в один слой, бюджет неправильный или модель неправильная – выберите меньшую модель или более медленную фичу.

Шаг 4. Зная топологию, какой envelope стоимости минуты при ожидаемом concurrency? On-device – $0; edge GPU – $0.0003–0.003/мин на поток в зависимости от железа и утилизации; cloud GPU – $0.001–0.05/мин на поток. Умножьте на ожидаемое число одновременных потоков для месячного счёта.

Шаг 5. Streaming или batch? Если пользователь видит partial-выход до конца входа – streaming. Иначе – batch – и помните, что streaming- и batch-версии одной модели – это разные deliverables.

Если вы не можете ответить на все пять шагов без противоречия, фича ещё не имеет deployable-формы – отступите и уточните product spec.

Рисунок 3. Пятишаговое дерево решений превращает любой новый feature-request в план развёртывания. Если на какой-то шаг нельзя ответить без противоречия, у фичи ещё нет deployable-формы.

Частые ошибки – три повторяющихся паттерна

Три ошибки топологии повторяются в видео-ИИ-проектах. Каждая лечится перерисовкой треугольника, а не настройкой модели.

Первая – on-device-как-cloud: модель гоняют в облаке, потому что «ИИ-команда работает в облаке», когда правильный ответ был on-device. Размытие фона – учебниковый случай: рендеринг в облачном GPU стоит $0.001–0.01/мин на поток и добавляет сетевой round-trip, а та же модель on-device стоит ноль и не имеет latency. Ошибка усугубляется со скейлом; лекарство – нарисовать треугольник до того, как ИИ-команда возьмёт фичу.

Вторая – live-резюме: пытаются сделать резюме в real-time, когда правильный ответ – batched post-call. Live-резюме всегда хуже post-call (вход неполный) и стоит больше (модель работает непрерывно, а не один раз). Лекарство – оставить streaming для субтитров и action items, переместить резюме в post-call batch.

Третья – cross-region по умолчанию: каждую модель развёртывают в us-east-1, потому что там команда, а потом европейские пользователи получают 200-мс трансатлантический round-trip. Для real-time-фич это фатально. Лекарство – развернуть регионально и принять операционную сложность, либо признать, что фича не real-time для пользователей вне региона.

Где здесь Фора Софт

Фора Софт шипит видео-продукты с 2005 года – видеоконференции, OTT, live-streaming, surveillance, e-learning, телемедицина, AR/VR – и проходила треугольник latency-топология-поза для каждой ИИ-фичи в этих продуктах. В конференциях мы шипим on-device-размытие и on-device-шумодав на capture-слое, edge-ASR для live-субтитров и перевода, региональные batch-джобы для post-call-резюме. В surveillance мы гоняем многоуровневую архитектуру: edge-префильтр, региональное подтверждение, облачный архивный аудит. Треугольник из этой статьи – тот же, который мы рисуем на доске в начале каждого AI-engagement: до выбора модели, до прайсинга, до первого PR.

Главное

  • У каждой ИИ-фичи есть latency-бюджет, топология развёртывания и поза real-time vs batch; выберите любые два – третий вынуждается.
  • Latency-бюджет ставит UX, а не модель – модель должна вписаться в бюджет.
  • В 2026 году существует четыре слоя топологии: on-device, edge, in-region cloud, cross-region cloud – каждый добавляет фиксированную сетевую стоимость и меняет стоимость минуты на порядок.
  • Real-time- и batch-версии одной модели – разные deliverables; почти любой продукт хочет оба, переключаясь на стыке сессии.
  • Пятишаговое дерево решений превращает любой feature-request в план развёртывания; если шаг не отвечается, нужно дорабатывать product spec, а не ИИ-команду.

Что читать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.