Files
local-transcriber/docs/adr/004-compute-type-defaults.md
Dmitriy DementievandClaude Opus 4.6 6f7e61c779 docs(adr): ADR-004 — дефолты compute_type и стратегия ускорения
Бенчмарк показал: OpenVINO fp16 даёт 3.7x ускорение, но теряет качество
на русской разговорной речи. CTranslate2 int8_float32 — оптимальный баланс.
Следующий шаг — DirectML бэкенд для AMD Radeon iGPU.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:58:12 +03:00

3.6 KiB
Raw Permalink Blame History

ADR-004: Дефолты compute_type и стратегия ускорения

Статус: Принято Дата: 2026-03-23

Контекст

После внедрения OpenVINO (ADR-003) дефолты compute_type выбирались из соображений скорости: fp16 для OpenVINO, float32 для CPU. Бенчмарк на реальной записи совещания (14:41, русский, 3 участника, AMD Ryzen 7 8845H) показал, что квантизация существенно влияет на качество распознавания русской речи.

Результаты бенчмарка (medium модель)

Бэкенд + compute_type Время Качество
OpenVINO fp16 ~240с Среднее — грубые ошибки на нечёткой речи
CTranslate2 int8_float32 ~599с Отличное — на уровне облачного Whisper.ai
CTranslate2 float32 ~881с Отличное (эталон)
OpenVINO fp16, large-v3 ~503с Плохое — хуже medium на том же бэкенде

Ключевые наблюдения:

  1. OpenVINO fp16 хорошо распознаёт «чёткие» англоязычные термины (DWH, NiFi, FineBI), но ломается на быстрой разговорной русской речи ("датарентген" → "госпиталин ген").
  2. large-v3 через OpenVINO fp16 деградирует сильнее medium — ошибки округления накапливаются в большей модели.
  3. CTranslate2 int8_float32 (mixed precision: int8 матрицы, float32 аккумулятор) даёт качество, сопоставимое с float32, при 1.5x ускорении.

Решение

Дефолт для CPU: оставить float32

int8_float32 показал отличные результаты, но выборка одна. Оставляем float32 как безопасный дефолт — пользователи, которым важна скорость, могут явно указать --compute-type int8_float32.

OpenVINO — оставить как есть

OpenVINO fp16 остаётся дефолтом для OpenVINO-бэкенда. Это осознанный trade-off: 3.7x ускорение за счёт потери качества на сложных участках. Для случаев, когда нужно максимальное качество, пользователь выбирает --device cpu.

Направление ускорения: DirectML

Для получения скорости GPU при сохранении качества float16 — нужен новый бэкенд на базе onnxruntime-directml. DirectX 12 работает с любым GPU на Windows, включая AMD Radeon iGPU. Float16 на реальном GPU (аппаратный) не имеет проблем CPU-квантизации.

Приоритет реализации:

  1. DirectML бэкенд (Radeon iGPU, потенциально Intel Arc)
  2. Ryzen AI NPU (XDNA) — когда tooling от AMD дозреет

Последствия

  • Дефолты не меняются — обратная совместимость сохранена
  • Пользователи с AMD получают рекомендацию --compute-type int8_float32 в документации
  • Архитектура (ADR-003) уже поддерживает добавление DirectML как нового бэкенда