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