# GigaAM Large: Trivy, поставка и проверка

Состояние на 31 октября 2026, после адресной поставки и продолжения браузерной приёмки. ASR с Large работает на H100; backend и Front Chat Agent обновлены. Проверка следующей кодовой сборки также прошла. Браузерная приёмка отмечена отдельно ниже.

## Почему публикацию блокировал Trivy

Корпоративная сборка проверяет все выбранные образы перед общей публикацией. Блокер был в установленных зависимостях и базах, а не в весах GigaAM. Первая подтверждённая ошибка job 26920 — пять HIGH в `pyannote_diarization`. После неё обнаруживались следующие уязвимые зависимости в других образах.

Исправлены закреплённые версии: msgpack 1.2.3, setuptools 80.10.2, urllib3 2.8.0, Hydra 1.3.8, Lightning 2.6.6, fsspec 2026.6.0, Transformers 5.10.4, filelock 4.2.4, certifi 2026.10.19, aiohttp 3.14.4. Из LinTO удалён `uv` после установки зависимостей; из worker — ненужные в runtime установщики. Корректность зависимостей проверена до удаления установщиков. Полный перечень попыток и причин сохранён в [progress.json](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/progress.json>).

В worker Python обновлён до 3.11, как требуется исправленному filelock. Torch 2.8.0/cu126, CTranslate2 4.8.2 и faster-whisper 1.2.1 сохранены. Дублирующая CUDA-база заменена Python slim; используются закреплённые CUDA-библиотеки Torch с зарегистрированными путями `ldconfig`.

Последний конкретный блокер worker: aiohttp 3.14.3, три HIGH — CVE-2026-111064, CVE-2026-111066 и GHSA-2g87-pp6c-29x5. Установлена 3.14.4. [Advisory](<https://github.com/advisories/GHSA-2g87-pp6c-29x5>).

Сканирование большого GPU-образа также превышало стандартные пять минут. В проектном `docker/Dockerfile.build` установлен `TRIVY_TIMEOUT=15m`. Политика **HIGH/CRITICAL, ignore-unfixed, exit-code 1** сохранена. Исключений CVE и отключения сканирования нет. Корневой `.gitlab-ci.yml` не изменён. [Параметры Trivy](<https://trivy.dev/docs/latest/references/configuration/cli/trivy_image/>).

## Исходники и опубликованные образы

- [MR ASR !8](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/merge_requests/8>) слит. Исходник работающего приложения: `8041b370e36cd8e5a9878f072cb264f790973d1d`.
- [Main pipeline 5639](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/pipelines/5639>), [build 27284](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/jobs/27284>): **SUCCESS**, все **8 образов прошли Trivy и опубликованы**. Build job 1792,5 с; из них сканирование восьми образов — 805,3 с. Это длительность CI, не скорость распознавания.
- Образы: `linto_stt_whisper_ffmpeg`, `pyannote_diarization`, `sherpa_onnx_diarization`, `sortformer_diarization`, `stt_whisper_to_nats`, `voice_status`, `webrtc_live_bridge`, `webrtc_streaming_asr`.
- Кодовая база worker закреплена на digest `5629b619aef9b0e5813afa254a69cc22b508e51f095a4964683311145c17677d`; LinTO — `b0b756141504c6d5396b19bf117b449d00e43b8f6db478eabae99beb6e3d4e8b`. Обе из проверенного main/source 8041b37.
- Последующие изменения затрагивают только Docker-рецепты: закрепление этих баз, восстановление исходника LinTO перед повторным применением патча, повторное использование каталога результатов worker tests. Последний SHA: `17f8ae32cc83e891cc6ba39c9b41885d95c0e1c7`.
- От исходного `ca436b4d` до `17f8ae3`: **19 файлов, +203 / −67 строк**. В том числе добавление Large и устранение блокеров публикации. SHA-256 корневого CI: `c32b7c0bfb9da207bd64901dee38fcd53bcfe733152bd26d9fd935b64204a339` — неизменён.

## Что действительно работает

| Часть | Подтверждённое состояние |
|---|---|
| H100 `webrtc-asr_streaming` | **3.1.344**, source `8041b37`, точный digest `5629b619…` |
| Модели worker | Turbo, Russian, GigaAM v3 RNNT, **GigaAM Large CTC**; `ready=true`, `accepts_requests=true` |
| ASR bridge | Source `8041b37`, digest `d0da979d7edbb60ee8e4dce5b017ac2b59046eed2771839ac5141b4e29cc9a29`; [refresh 27289](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/jobs/27289>) SUCCESS |
| Gateway, LLM, Agent, Core | Source `6236a3c`; [refresh 27192](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27192>) SUCCESS |
| Audio Ingress | Source `b11b3dd`, OCI version `5.1.1079`, digest `f9fa7787…`; [refresh 27397](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27397>) SUCCESS |
| Front / Compare / Monitor | Source `b11b3dd`, OCI version `5.1.1079`, digest `d0aadb6d…`; [refresh 27396](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27396>) SUCCESS |
| Приём запросов | Восстановлен: [resume 27194](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27194>) SUCCESS |

H100 обновлён по заранее подготовленному digest. Docker фиксирует завершённый rollout за **32,475 с**. Это время обновления worker, не весь интервал закрытого admission. Настройки worker, кроме image, сохранены; конфигурации 52 соседних сервисов не изменены. Штатная поставка bridge проверила область изменений среди 190 сервисов.

LinTO, файловая транскрипция и сервисы диаризации **не перезапускались** в этом выпуске: их исправленные образы опубликованы, но эти независимые runtime не обновлялись. `rag-stack`, инфраструктура, GPU-разметка и корневые CI-файлы не изменены.

Полные digest Chat Agent: [front-prepared-images.json](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/front-prepared-images.json>). Логи и результаты CI лежат рядом с этим отчётом.

![Подтверждённая версия и готовность четырёх моделей на H100](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/runtime-h100.jpg>)

## Проверки и память Large

1. 15 адресных проверок после исправления aiohttp и реальный HTTP `/healthz` с корректным освобождением сервера. NATS в этой узкой локальной проверке был подставным; это не проверка транспорта.
2. В финальном образе: **46 тестов** — 41 bridge/контракты и 5 worker. После изменения загрузчика — 8 адресных модельных тестов. Пять обязательных checks Chat Agent реально прошли на `d8f9399`, pipeline 5621; пропущенные jobs других pipeline не засчитывались.
3. GPU: оба GigaAM, Turbo и Russian вернули непустой текст. Исправлена несовместимость RNNT с meta-инициализацией Transformers 5.10.4: модели загружаются напрямую через PyTorch после проверки хешей, с `strict=True`. Вендорный код модели не переписывается.
4. Large ревизии `3905cd51c3ed4e88c8edf33f3302969ba480a327` проверена рядом с ранее работающими моделями. Пик зарезервированной PyTorch памяти — **3,38 ГиБ**, после контрольного прогона свободно **8,05 ГиБ**. После поставки и прогрева четырёх моделей свободно **9,12 ГиБ**. Запас выше согласованных 2 ГиБ. Это разные моменты измерения, а не сравнение одной и той же нагрузки.
5. На одном PCM 3,025 с чистые вызовы Large заняли **194,1 и 15,2 мс**; контрольный пример 33 с — 185,3 мс. Загрузка модели — 5595,1 мс. Эти числа не включают браузер/транспорт, не являются p95, WER/CER или сравнительным benchmark. Подробности: [gpu-candidate.json](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/gpu-candidate.json>).

**Ограничение качества:** на короткой фразе Large вернула «сколько будет а плюс», пропустив слова. Штатный декодер производителя на том же PCM дал тот же текст после удаления краевого пробела. Сравнение исходных строк отличалось именно завершающим пробелом. **Turbo оставлена по умолчанию.** Large доступна для отдельного сравнения; превосходство качества не заявляется.

## Проверка следующих выпусков

Переиспользование опубликованного digest проверено отдельно: pipeline 5641, build 27286 — **11,512 с и 0 application rebuild**, затем адресный preflight того же bridge.

После закрепления баз выявлены и исправлены две ошибки именно повторной кодовой сборки: повторное применение LinTO-патча к уже изменённым файлам и существующий `/test-results` в worker-базе. [Pipeline 5648](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/pipelines/5648>), build 27294: **SUCCESS, 46 тестов и Trivy всех 5 выбранных образов**. Build job 442,2 с: до начала Trivy — 28,7 с, сканирование — 411,4 с, завершение job — 2,1 с. Preflight 27295 также SUCCESS. Использован `CI_SKIP_PUSH=1`: приложения не перепубликовывались и не перезапускались; preflight проверил ранее опубликованный bridge 8041b37 по точному digest. Это контроль будущего кодового выпуска, а не второй runtime rollout.

## Что пока не подтверждено

- Файлы расширения **2.2.1** установлены по прежнему пути `локальный источник, ID, permissions и CSP сохранены. Предыдущий пакет сохранён в `локальный источник **Перезагрузка и активная версия пользовательской панели не проверены.**
- CI ZIP расширения: jobs 27230 и 27279 собрали пакет, но upload артефакта завершился DNS-ошибкой `gitlab` в runner helper. Локальный ZIP готов. Этот отдельный инфраструктурный блокер не менялся и не выдаётся за успех публикации артефакта.


## Браузерная приёмка 31 октября

**Monitor PASS:** исторический request `c1715cf4-213d-5b5b-93c2-3e02938585c0`, исходный PCM16 48 кГц, диапазон 17.144–20.448 с (3.304 с), без контекста. Large вернула «найди формулу и поставь на нее бэкграундом кота». Чистое время модели **152.86 мс**, final виден через **0.91 с**, слот освобождён через **1.00 с**. Повтор не выполняет команд чата. Подтверждена совместимость чтения старого PCM-архива. Есть ошибка текста «форму» → «формулу»; Turbo остаётся по умолчанию.

![Результат Large в Monitor](#archive-availability)

**Compare до исправления очереди:** один синтетический WAV пропущен через браузерный захват, Silero и WebCodecs Opus. Это проверка веб-пути, не физического микрофона. Полученная запись 21.930667 с включает примерно 14.6 с установочной тишины до WAV; речь занимает сохранённую фразу 16.856–19.872 с. Large и Turbo получили один образец (`6bb83281613ba55848e05311503deddcfa03c766568624f378a2a9ef9c6f85f8`).

| Модель | Текст | Чистое время модели | Полный диагностический запуск, включая подготовку и завершение |
|---|---|---:|---:|
| GigaAM Large CTC | шла саша по шоссе и сосала чупа чупс | 168.09 мс | 3077.9 мс |
| Whisper Turbo | Шла Саша по шоссе и сосала чупа-чупс. | 160.30 мс | 2002.4 мс |

Один короткий замер не доказывает преимущество модели. Исходный PCM — 2 105 344 байта; переданные Opus-пакеты — 44 264 байта (1097 пакетов). Снижение на 97.90%, в 47.56 раза, относится именно к этому образцу с длинной тишиной. Это экономия трафика, не ускорение модели. Подробные независимые стадии — [browser-large-turbo.json](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/browser-large-turbo.json>).

**Обнаруженный дефект:** третий запуск, Whisper Russian, прервался после 601 из 1097 пакетов: `audio_queue_overflow`. Готовая запись передаётся без задержек 1×, а подписка Ingress вмещала 256 пакетов / 32 КиБ, как для микрофона. После закрытия владельца поздний RPC границы вернул `audio_upgrade_required`, который скрыл первичную ошибку в UI. Исходное доказательство сохранено: [browser-large-russian.json](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/browser-large-russian.json>).

**Адресная правка:** [MR !28](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/28>), commit `b7923b2eeb5dc534a8cc76b69234f6b3ff85b1fe`, main `21d9e3c93cbe284b3bc2e70136cbc20029c2293e`. Четыре файла, **+65 / −9 строк**. Только для готовой Opus-записи Compare очередь ограничена 1600 пакетами / 256 КиБ — достаточно одному образцу до 30 с. Лимиты микрофона сохранены. Compare сохраняет первую ошибку из всех трёх фактических форматов событий. Новых соединений, RPC, задержек или очередей не добавлено.

Локально: 12 тестов Compare и типизация; адресные тесты аудио/Opus; отдельная реальная NATS-проверка полностью поставленного в очередь 30-секундного образца PASS. Новый тест включён в существующий integration suite, чтобы не расширять зависимости отдельного browser-auth образа. В CI 5650 Python: 232 passed / 120 skipped, 10 subtests; реальные NATS/PostgreSQL integration: 87 тестов PASS. Frontend обнаружил сдвиг ссылки схемы на исходник; [MR !29](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/29>) исправил только номер строки 79 → 83. Финальный main `b11b3dd18a5fb5c57d8cdc059a1aa8eeae4e715f`, суммарно **5 файлов, +66 / −10**. В pipeline 5652 повторён только frontend: 480 тестов, типизация, runtime-settings PASS. Python/integration/browser/Ruby jobs 5652 явно пропущены по неизменённым входам; это не повторное выполнение suites. Корневой CI неизменён, индекс Repowise обновлён без генерации документов.


**Повтор после исправления Ingress:** тот же образец и все 1097 пакетов / 44 264 байта. Russian, RNNT и LinTO успешно завершены, переполнения нет. Везде один вызов модели; слот диагностики освобождён. Модель и границы сохранены в JSON, речь пользователя/физический микрофон не использовались.

| Модель | Чистая модель | От конечной границы до показа текста | Весь запуск с подготовкой и завершением |
|---|---:|---:|---:|
| Large CTC | 168.09 мс | 325.3 мс | 3077.9 мс |
| Turbo | 160.30 мс | 301.9 мс | 2002.4 мс |
| Russian | 290.40 мс | 443.2 мс | 2020.9 мс |
| GigaAM v3 RNNT | 187.80 мс | 334.0 мс | 2059.3 мс |
| LinTO | 171.87 мс | 506.6 мс | 1989.6 мс |

Large/Turbo — успешные запуски до изменения лимита, остальные — после. Подготовка первого запуска включает VAD/Opus, следующие используют их результат. Поэтому полный запуск не является сравнением чистой скорости моделей. [Точные результаты и ссылки на JSON](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/browser-model-results.json>).

Сборка [27354](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27354>): SUCCESS, **71.22 с, только Front и Audio Ingress**, один production bundle Front. Preflight [27370](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27370>): SUCCESS, оба digest подготовлены до обновления. Ingress [27397](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27397>): SUCCESS, **54.12 с job целиком**, подготовленный digest `f9fa7787…`. Соседние сервисы сохранены штатной проверкой области изменений, приём запросов восстановлен. [Полные digest](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/compare-opus-prepared-images.json>).


Front [27396](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/27396>): **SUCCESS, 59.73 с job целиком**, digest `d0aadb6d…`. Оба новых образа имеют source `b11b3dd` и OCI label version `5.1.1079`, сформированные штатным build-labels. В jobs активации повторного `chat_pull` нет: использованы подготовленные digest. Это не время модели или пользовательской фразы.

**Свежая страница после поставки PASS:** повторный синтетический захват 7.488 с, 48 кГц, входы Large/Turbo совпали по хешам. Large: «шла саша по шоссе и сосала чупа чупс», **20.10 мс** модель / **166.0 мс** от границы до показа / **2071.7 мс** весь запуск. Turbo: «Шла Саша по шоссе и сосала чипа-чопс.», **159.59 мс** модель / **306.8 мс** от границы до показа / **1525.2 мс** весь запуск. Здесь у Turbo есть ошибка «чупа-чупс» → «чипа-чопс». Это новый захват с другим диапазоном (2.392–5.376 с), не идентичный предыдущим 21.9 с; результаты не объединяются в benchmark или p95. Разброс Large между короткими вызовами 20–168 мс также не превращаем в обещание скорости.

Трафик свежего образца: **718 848 → 29 221 байт**, −689 627 байт (**−95.94%, 24.60× меньше**); 375 Opus-пакетов. Одно кодирование, второй запуск использовал готовые пакеты и границы. [JSON итогового Front](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/browser-final-front.json>). После перезагрузки ошибок приложения в console не было; две старые записи о закрытом канале расширения относятся к 21:16 UTC, до поставки. Все временные изменения тестового getUserMedia удалены, тестовые дорожки и AudioContext закрыты. В пользовательские панели и микрофон вмешательства не было.

![Результат свежей страницы Compare](</experiments/voice-ai/archive/v/10/30/gigaam-large-delivery/compare-large-final-20261031.jpg>)

Финальный статус: блокеры Trivy устранены, ASR с Large опубликован и работает; Compare и Monitor проверены в браузере. Дополнительно исправлен выявленный дефект очереди загрузки готовой записи. Не подтверждена только активация ранее установленного пакета расширения 2.2.1; это не требуется для выполненной проверки веб-пути. CI ZIP остаётся отдельным ранее описанным ограничением загрузки артефактов runner.
