Параллельный запуск ASR и диаризации: политика и бюджет CPU #21
Notifications
Due Date
No due date set.
Blocks
Depends on
#17 Свести решения карты в ADR и спеку
ddmitry/local-transcriber
#14 Выбрать единицу привязки спикера к тексту
ddmitry/local-transcriber
Reference: ddmitry/local-transcriber#21
Reference in New Issue
Block a user
Часть карты: Карта: диаризация спикеров в транскрипте (#8)
Question
Стоит ли запускать независимые проходы распознавания и диаризации параллельно,
и при каких условиях это быстрее и безопаснее последовательного режима?
Решение о пословной привязке сохраняет проходы независимыми до финального
сведения и поэтому не блокирует параллельность. На слабом Intel baseline
последовательная обработка часа занимает около 23 минут; идеальный нижний
предел ограничен диаризацией и составляет около 13,6 минуты, но прямого замера
параллельного режима нет.
Нужно определить:
проектный
cpu_threads, а оба runtime могут занять все доступные ядра;корректного последовательного baseline;
Ответ фиксирует политику оркестрации и критерий приёмки, но не реализует её.
Решение
Первая реализация использует только последовательный пайплайн для всех устройств:
ASR выполняется первым: при окончательной ошибке распознавания дорогая диаризация не запускается, а возможный GPU→CPU fallback завершается до её старта.
--threads=N— единый бюджет текущего CPU-прохода. Значение целиком получает сначала ASR, затем диаризация; делить его между ними не нужно, поскольку проходы не пересекаются.0оставляет дефолты библиотек. То, что ONNX ASR и OpenVINO сейчас не применяют этот параметр, остаётся существующим пробелом реализации, а не основанием для второй ручки.Параллельного auto-режима и ресурсного fallback в первой реализации нет. Последовательный режим является baseline для CPU, CUDA и OpenVINO независимо от фактического устройства.
Будущая оптимизация
Создана отдельная задача #22, к которой возвращаемся только после реализации и стабилизации основного пайплайна. Параллельность допускается отдельно по фактическому классу устройств после benchmark на трёх записях: не менее 20% выигрыша end-to-end, идентичный результат, отсутствие OOM/крашей/новых fallback и приемлемый измеренный peak RSS. Первый кандидат — CUDA+CPU.