feat(config): добавлена поддержка устройства openvino в конфиге и auto-detect

- Зачем:
  - подготовка к OpenVINO бэкенду: config и utils должны знать о новом устройстве.
- Что:
  - config.py: openvino добавлен в _VALID_DEVICES и DEVICE_DEFAULTS (model=medium, compute_type=int8).
  - utils.py: detect_device() расширен цепочкой CUDA → OpenVINO → CPU; _is_openvino_available() проверяет архитектуру (x86_64/AMD64) и наличие openvino_genai.
  - cli.py: --device help text обновлён (auto|cpu|cuda|openvino).
  - добавлены тесты: config с openvino device, device defaults, auto-detect приоритет.
- Проверка:
  - uv run pytest -v — 103 passed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-21 23:22:13 +03:00
co-authored by Claude Opus 4.6
parent 4c5399c2fc
commit fae25a7fb3
5 changed files with 63 additions and 4 deletions
+17 -2
View File
@@ -1,6 +1,7 @@
"""Утилиты для валидации входных файлов, определения устройства и работы с путями."""
import glob
import platform
import shutil
import subprocess
import warnings
@@ -15,16 +16,30 @@ SUPPORTED_EXTENSIONS = {
def detect_device(requested: str = "auto") -> str:
"""Определяет устройство для вычислений.
При ``requested="auto"`` проверяет наличие ``nvidia-smi`` в PATH
и возвращает ``"cuda"`` или ``"cpu"``. Явное значение возвращается как есть.
При ``requested="auto"`` проверяет: CUDA → OpenVINO → CPU.
Явное значение возвращается как есть.
"""
if requested != "auto":
return requested
if shutil.which("nvidia-smi") is not None:
return "cuda"
if _is_openvino_available():
return "openvino"
return "cpu"
def _is_openvino_available() -> bool:
"""Проверяет доступность OpenVINO: x86/AMD64 архитектура + пакет установлен."""
if platform.machine().lower() not in {"x86_64", "amd64"}:
return False
try:
import openvino_genai # noqa: F401
return True
except ImportError:
return False
def get_gpu_name() -> str | None:
"""Возвращает название GPU через ``nvidia-smi`` (для метаданных транскрипта)."""
try: