Голосовые системы

Chat Agent 2.6.0 · проверка устойчивости

Продуктовая ревизия Chat Agent 178546a4 проверена в изолированном checkout. Финальная ревизия MR a619fa19 дополнительно удерживает образ до публикации и сверяет digest без отдельной загрузки артефакта. Ревизия композиции H100 ac9da70. MR Chat Agent !74, MR rag-stack !7.

Исправления

Область Дефект или лишняя работа Изменение
Fish Закреплённый голос приводил к ошибке проверки многозначного тензора Передаются списки текста и тензоров. Пустой transcript и неверная длина кодов отклоняются до запуска
Gateway При запоздалой публикации ошибки старая озвучка могла остановить новую Старое задание снимается до сетевого ожидания, подтверждённое завершение worker не порождает cancel
Gateway Новый request_id становился ожидаемым только после остановки предыдущего Выбор нового запроса делается до первого сетевого ожидания
Gateway Флаги отправки, окончания синтеза и фаза могли расходиться Одна фаза синтеза. Успешное проигрывание по-прежнему подтверждается отдельно
Gateway При ошибке подтверждения подписка на worker оставалась зарегистрированной Подписка удаляется при неудачном handshake
Gateway Неполный или повторный ответ мог портить порядок и состояние Отрицательные номера и тела в служебных сообщениях отклоняются, повторы не двигают фазу назад
Offscreen Подписка прежнего владельца могла пережить его переподключение У каждой регистрации есть удаление именно своей подписки
Offscreen Запоздалая ошибка позиции могла остановить следующее задание Ошибка применяется только к своему ещё активному потоку
Offscreen Блокировка autoplay оставляла подписку готовой и запускала бесполезный синтез для новых ответов Снимается готовность панели до повторного включения пользователем
Плеер Неподвижный плеер посылал четыре одинаковых запроса в секунду При неизменной позиции один heartbeat в две секунды. После end запросы позиции прекращаются
Плеер Повтор мог снова открыть закрытое задание. Пустой медиапоток мог зависнуть Повторы завершённого задания игнорируются, закрытие MediaSource и отсутствие декодируемого звука дают ошибку
NATS Служебные события первого PCM и первого блока шли и в журнал, и в плеер Плеер получает только нужные состояния и данные, Monitor сохраняет измерения
NATS Команды позиции создавали диагностические пакеты и меняли родительский ID запроса Диагностика управления звуком записывается в Gateway только на значимых переходах, при пересылке WebM переиспользуется заголовок
Worker Неизменная позиция будила кодировщик без нового кредита Heartbeat продлевает аренду, передача просыпается при продвижении позиции
Worker Отмена могла оставить непрочитанный stdout FFmpeg, отказ запуска кодировщика выглядел как сбой модели При отмене канал дочитывается и процесс завершается. Ошибка запуска кодировщика имеет свой код
Микрофон Отказ одной операции mute мог вернуть управление до завершения остальных Проигрывание начинается после окончания всех операций mute. Невалидный запрос на микрофон не останавливает звук
CPU PCM создавал лишнюю копию при ограничении амплитуды. Ошибка аргументов пилота выявлялась после загрузки модели Амплитуда ограничивается в существующем буфере, проверка аргументов выполняется до загрузки
Образ Registry обрывал загрузку крупных слоёв весов Девять слоёв весов примерно по 1 ГиБ. Tensor bytes сохраняются, индекс переписывается при сборке. Код копируется после весов для переиспользования слоёв
CI После завершения Trivy локального тега больше не было Docker-контейнер без сети удерживает точный ID образа до push. Локально проверены сканирование по ID и восстановление тега
CI После успешной публикации job падала на загрузке дублирующего текстового артефакта из-за DNS Digest сверяется по ответу registry и RepoDigests прямо в журнале job

Проверки

  • Python 254 прошло, 4 пропущено, 12 подтестов прошло. PostgreSQL и NATS в отдельных локальных контейнерах — 129 прошло, 3 пропущено, 10 подтестов прошло.
  • Frontend 617 прошло. Проверены типизация, runtime-настройки, сборка Front и ZIP 2.6.0. Панель проверена в обеих темах в Chromium.
  • Сквозной локальный прогон в Chromium через NATS WebSocket проверил порядок от widget_stage done до WebM/Opus. Получен один текст, выполнен один синтез, воспроизведение началось до завершения синтеза, ended дошёл до Gateway. Вместо Fish в этом прогоне использовался тестовый звук. Микрофонные callbacks проверены синтетически.
  • Отдельно проверены ранняя выдача WebM настоящим FFmpeg, адресность, повтор финального события, пропуск блока, отмена и задержка освобождения CPU-слота.
  • Тест неподвижного плеера подтвердил 4 запроса позиции за 8 секунд против 32 при прежнем интервале. Это измерение числа запросов, задержку речи оно не измеряет.
  • На закреплённом Fish с Torch 2.10 CPU воспроизведён сбой старого prompt_tokens. Новый вход проходит проверку и доходит до подготовки модели. Заголовки закреплённых весов проверены, переразбиение проверено на тензорах через Safetensors.

Поставка

  • Все пять штатных проверок, сборка CPU-образа, Trivy и публикация успешно завершены для a619fa19. Registry и Docker подтвердили sha256:7d18a14777dde91cfd7acfb8fed937b074308c6b8d9678c4b23741b9b1c7ebb8. Pipeline 5908.
  • Chat Agent main d7b849f6. rag-stack main fc8b307a. Оба MR объединены после проверок и подтверждения digest.
  • Две штатные попытки скачать образ на H100 остановились на HEAD манифеста с proxyconnect tcp 72.56.73.217:1195: i/o timeout. До скачивания слоёв и запуска CPU-пилота дело не дошло. Пик RAM, качество BF16/FP32 и задержка Fish на H100 не измерены. Первая попытка, повтор.
  • Пакет 2.6.0 собран локально, SHA-256 ab82c90e21bed32a38b5c8fb39100380d132884199aeeb4e3dcdc0a8d9b5af9f. ZIP и локальная панель проверены. Пользовательский Chrome ещё не обновлён.

Повторная загрузка Fish через GitLab

  • Ещё один штатный pull на H100 завершился тем же тайм-аутом прокси. Применена схема резервной загрузки, использованная для ASR. Runner скачал OCI-слои из registry и передал образ на H100 по существующему SSH. Повтор pull, MR !8.
  • rag-stack main 1a11c704. Preload завершился успешно. Docker на H100 подтвердил sha256:7d18a14777dde91cfd7acfb8fed937b074308c6b8d9678c4b23741b9b1c7ebb8, ревизию a619fa19d2a4db3dfed473758c32d44f3811997c и linux/amd64. Job 31241.
  • Эталонный WAV сгенерирован на CPU. SHA-256 его манифеста 7fccfdddc1933d211b4198cc24d7ef20fd39f87d44fa6a0922d7992fcfa55587. Загрузка WAV как GitLab-артефакта упала на DNS для gitlab, поэтому запись не прослушана. Job 31242.
  • В первых четырёх BF16-прогонах первый PCM получен через 11,815, 16,146, 18,221 и 32,614 с после начала синтеза. RTF составил 5,92, 5,70, 6,13 и 6,38. Уже первые фразы превышают целевые пределы 2,5 с и 0,8. Это время CPU-синтеза, без браузерного буфера. На момент фиксации полный BF16-прогон продолжается, FP32 и production-путь не проверены. Job 31243.

Исходник

Скачать Markdown · К материалам исследования