Углубить module выполнения транскрипции для развития ONNX #56
Notifications
Due Date
No due date set.
Depends on
#2 Сделать CUDA необязательной и включаемой явно на Linux/WSL и Windows
ddmitry/local-transcriber
Reference: ddmitry/local-transcriber#56
Reference in new issue
Block a user
Проблема и результат
CLI согласует
model,backend,model_path,actual_deviceи переносит их между файлами после fallback. Для ONNX выбранные настройки живут отдельно от загруженной модели, а принятыйcpu_threadsне применяется. Это затрудняет развитие поддерживаемых моделей и вариантов исполнения.Нужен deep module выполнения распознавания: один владелец согласованного состояния на запуск, один external interface для одиночного файла и батча. CLI получает результат и сведения о выполнении, без внутренних handles и ручного переноса состояния.
Согласованная спецификация — источник решений и полной матрицы поведения. Реализовывать после #2: CUDA и автоматический ONNX CPU уже должны иметь определённую политику.
Объём
transcribeна один interface; сохранить прогресс, прерывание и семантику ошибок. Backend остаётся internal seam с существующими adapters.--verboseпоказывать нужные для удалённой диагностики версии runtime/providers. Наличие provider не называть доказательством выполнения графа на GPU/NPU.Критерии приёмки
uv run pytest; реальные модели для автоматических проверок не загружаются.Границы и коммиты
Одна задача, несколько связных коммитов: module выполнения; переход callers; настройки/диагностика ONNX; проверки и документация. Это ориентир группировки, не отдельные обязательные тикеты; каждый коммит должен оставлять рабочее состояние.
Вне задачи: исправление качества диаризации (см. #54/#55), возобновление обработки, новый универсальный каталог возможностей, иерархия providers, внедрение CoreML/Windows ML. Сведения о совместимости на Mac не выводить из mock-тестов.
Реализация в PR #58:
Transcriberкак единственный владелец выполнения, бюджет потоков ONNX для ASR и VAD, диагностика в--verbose. Критерии приёмки отмечены; заметка с находками двух слепых ревью и решениями по ним — в описании PR.Живой прогон финального HEAD
63307feперед merge (ONNX CPU,--verbose --threads 4, батч из двух записей по ~15 мин изtmp/transcriber-model-comparison):user 18m28sприreal 4m31s— четыре ядра загружены, как запрошено.--verboseпечатаетПотоки (запрошено): 4, onnxruntime 1.28.0 / onnx_asr 0.12.0, providers ASR и VAD раздельно,intra_op_threads: 4.Итого: 2 обработано, 0 ошибок.uv run pytest -q— 535 passed, 2 skipped. ruff: 28 находок против 34 на master, новых нет.Не проверялись вживую (только тесты с подменёнными движками):
--diarize, OpenVINO, CUDA.Справка по потокам: при
--threads 0onnxruntime сам создаёт потоки по числу физических ядер с привязкой к ним; явное значение фиксирует число и отключает привязку (threading).