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>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
e6210fc73f
commit
6f7e61c779
@@ -0,0 +1,59 @@
|
|||||||
|
# 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 как нового бэкенда
|
||||||
Reference in New Issue
Block a user