From b28bc632bbd74edbee38d5cb824af126e78132ab Mon Sep 17 00:00:00 2001 From: Serge Zaigraeff Date: Wed, 4 Feb 2026 22:13:46 +0300 Subject: [PATCH] add device selector --- app/core/transcriber.py | 23 ++++++++++++++++------- config.json | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/core/transcriber.py b/app/core/transcriber.py index 9fa0822..905bd6c 100644 --- a/app/core/transcriber.py +++ b/app/core/transcriber.py @@ -83,13 +83,22 @@ class WhisperTranscriber: Объект устройства PyTorch. """ if torch.cuda.is_available(): - # Проверяем, доступна ли GPU с индексом 1 - if torch.cuda.device_count() > 1: - logger.info("Используется CUDA GPU с индексом 1 для вычислений") - return torch.device("cuda:1") - else: - logger.info("Доступна только одна CUDA GPU, используется GPU с индексом 0") - return torch.device("cuda:0") + # Получаем device_id из конфигурации, по умолчанию 0 + device_id = self.config.get("device_id", 0) + + # Проверяем, что device_id является целым числом + if not isinstance(device_id, int): + logger.warning(f"device_id должен быть целым числом, получено: {device_id}. Используем значение по умолчанию 0") + device_id = 0 + + # Проверяем, доступен ли запрошенный GPU + device_count = torch.cuda.device_count() + if device_id >= device_count: + logger.warning(f"Запрошенный GPU с индексом {device_id} недоступен. Доступно GPU: {device_count}. Используем GPU с индексом 0") + device_id = 0 + + logger.info(f"Используется CUDA GPU с индексом {device_id} для вычислений") + return torch.device(f"cuda:{device_id}") elif hasattr(torch.backends, "mps") and torch.backends.mps.is_available(): logger.info("Используется MPS (Apple Silicon) для вычислений") # Обходное решение для MPS diff --git a/config.json b/config.json index 3404917..198c728 100644 --- a/config.json +++ b/config.json @@ -12,6 +12,7 @@ "norm_level": "-0.55", "compand_params": "0.3,1 -90,-90,-70,-50,-40,-15,0,0 -7 0 0.15", "audio_speed_factor": 1.0, + "device_id": 0, "file_validation": { "max_file_size_mb": 500, "allowed_extensions": [".wav", ".mp3", ".ogg", ".flac", ".m4a", ".oga"],