3 performance
AI Wiki Bot edited this page 2026-09-16 19:34:21 +00:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Производительность

Назначение

Сервер GigaAM-Multilingual ASR оптимизирован для быстрого распознавания речи в реальном времени.本页 рассматривает факторы, влияющие на скорость обработки аудио, и помогает выбрать оптимальную конфигурацию под конкретные требования к задержке и качеству.

Ключевой метрикой производительности является RTF (real-time factor) — отношение времени распознавания к длительности аудиозаписи. Чем ниже RTF, тем быстрее система обрабатывает речь. Например, RTF = 0.1 означает, что одна минута аудио распознаётся за шесть секунд.

Сравнение GPU и CPU

Выбор вычислительной платформы определяется параметром GIGAAm_CUDA (Конфигурация).

Платформа Типичный RTF (large, int8) Время на 1 минуту аудио Требования
NVIDIA A2 (CUDA 13) 0.02–0.05 1–3 секунды Драйвер NVIDIA ≥ 580, nvidia-container-toolkit
CPU (16 ядер) 0.10–0.16 6–10 секунд Многопоточность, AVX2/AVX-512

Особенности работы на GPU

При использовании графического процессора ONNX Runtime применяет CUDA Execution Provider. В Dockerfile базовым образом выступает nvidia/cuda:13.3.1-runtime-ubuntu24.04, а библиотека cuDNN 9 устанавливается через pip-колесо nvidia-cudnn-cu13. Это позволяет избежать зависимости от системных пакетов CUDA в контейнере.

Для включения GPU достаточно установить переменную окружения GIGAAm_CUDA=1 или оставить значение auto (по умолчанию). Сервер автоматически обнаружит доступные устройства CUDA. Если GPU недоступен, следует явно указать GIGAAm_CUDA=0 для перехода на CPU без попыток загрузки CUDA-библиотек.

Особенности работы на CPU

На процессоре ONNX Runtime использует ThreadPool и оптимизированные SIMD-инструкции. Производительность линейно зависит от числа физических ядер и пропускной способности памяти. Для CPU-развёртывания рекомендуется использовать серверные процессоры с большим количеством потоков и высокой частотой.

Выбор размера модели

Доступны две модели Conformer CTC, конвертированные в формат ONNX с int8-квантизацией (Обзор проекта):

Модель Параметры Размер (int8) Качество Скорость Имя в API
Large 600M ~591 МБ Высокое (WER kk CV: 13.8%) Медленнее gigaam-multilingual-large-ctc
Small 220M ~225 МБ Среднее Быстрее (~2.5×) gigaam-multilingual-ctc

Рекомендации по выбору

  1. Интерактивные приложения (голосовые помощники, субтитры): выбирайте small на GPU или large на мощном GPU. Цель — RTF < 0.1 для ощущения мгновенного ответа.

  2. Пакетная обработка (транскрипция архивов, телефонные записи): используйте large для максимального качества. При обработке больших объёмов предпочтительна GPU-платформа.

  3. Ограниченные ресурсы (VGA, edge-устройства): применяйте small на CPU. Убедитесь, что доступно не менее 4 ГБ оперативной памяти.

  4. Ограниченный VRAM: если видеопамять занята другими сервисами, загружайте только одну модель через переменную MODELS=gigaam-multilingual-large-ctc или MODELS=gigaam-multilingual-ctc. Обе модели по умолчанию резидентны в памяти.

Управление моделями

Список загружаемых моделей задаётся переменной MODELS (Конфигурация). Формат: alias=имя-в-onnx-asr, несколько моделей разделяются запятой. Каждая модель размещается в отдельной подпапке {MODEL_DIR}/<имя>/, что предотвращает конфликты при glob-подборе файлов ONNX.

Пример загрузки только малой модели:

MODELS=gigaam-multilingual-ctc docker compose up -d

Оптимизация производительности

Квантизация

По умолчанию используется int8-квантизация (QUANTIZATION=int8), которая снижает потребление памяти и ускоряет вычисления на 30–50% по сравнению с fp32 без существенной потери качества. Для экспериментов с точностью можно установить QUANTIZATION="" (пустая строка) для запуска в fp32.

VAD и длинные записи

Для аудио длительностью более пяти минут включён Silero VAD, который сегментирует запись на фрагменты длиной CHUNK_SECONDS (по умолчанию 300 секунд). Это позволяет:

  • Ограничивать пиковое потребление памяти;
  • Обрабатывать записи до одного часа (MAX_DURATION=3600);
  • Получать метки времени для каждого сегмента.

Для коротких записей (< 30 секунд) VAD можно отключить установкой CHUNK_SECONDS=0, что немного снизит задержку первого токена.

Параллелизм запросов

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

  • Разверните несколько реплик контейнера с балансировщиком нагрузки;
  • Используйте GPU с достаточным VRAM для параллельных батчей (если поддерживается драйвером).

Мониторинг

Эндпоинт GET /health возвращает текущее состояние сервера, включая список загруженных моделей. В ответе на запрос транскрипции присутствует поле latency_s с временем обработки конкретного запроса, а также _rtf с рассчитанным real-time factor.

Пример ответа:

{
  "text": "...",
  "model": "gigaam-multilingual-large-ctc",
  "latency_s": 1.2,
  "_rtf": 0.03
}

Дополнительные ресурсы