Бенчмарк показал: OpenVINO fp16 даёт 3.7x ускорение, но теряет качество на русской разговорной речи. CTranslate2 int8_float32 — оптимальный баланс. Следующий шаг — DirectML бэкенд для AMD Radeon iGPU. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.6 KiB
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 на том же бэкенде |
Ключевые наблюдения:
- OpenVINO fp16 хорошо распознаёт «чёткие» англоязычные термины (DWH, NiFi, FineBI), но ломается на быстрой разговорной русской речи ("датарентген" → "госпиталин ген").
- large-v3 через OpenVINO fp16 деградирует сильнее medium — ошибки округления накапливаются в большей модели.
- 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-квантизации.
Приоритет реализации:
- DirectML бэкенд (Radeon iGPU, потенциально Intel Arc)
- Ryzen AI NPU (XDNA) — когда tooling от AMD дозреет
Последствия
- Дефолты не меняются — обратная совместимость сохранена
- Пользователи с AMD получают рекомендацию
--compute-type int8_float32в документации - Архитектура (ADR-003) уже поддерживает добавление DirectML как нового бэкенда