Migración de Whisper de CPU a GPU#
Esta guía describe cómo trasladar el servicio de reconocimiento de voz Whisper de CPU a una GPU NVIDIA en la instalación cliente de Sherpa AI Server. No es necesario cambiar los demás servicios ni el modo de inicio de LLM seleccionado.
Requisitos#
Antes de cambiar, asegúrese de que:
- en el servidor haya instalada una GPU NVIDIA con suficiente memoria de video;
nvidia-smidetecte la tarjeta gráfica;- estén instalados NVIDIA Container Toolkit y la compatibilidad con GPU NVIDIA en Docker;
- la imagen
aiserver-whisper:latestya esté descargada; - el modelo Whisper esté descomprimido en
./whisper/models.
Verificación del acceso de Docker a la GPU#
nvidia-smi
Si nvidia-smi no detecta la GPU o Docker no está configurado para funcionar con NVIDIA Container Toolkit, primero resuelva ese problema. De lo contrario, el contenedor de Whisper no se iniciará en modo GPU.
Configuración de docker-compose.yml#
Abra docker-compose.yml y busque el servicio aiserver-whisper:
aiserver-whisper:
container_name: aiserver-whisper
image: aiserver-whisper:latest
En el bloque del servicio, descomente las variables WHISPER_DEVICE, CUDA_DEVICE_INDEX y la sección deploy. La configuración final debe verse así:
aiserver-whisper:
container_name: aiserver-whisper
image: aiserver-whisper:latest
restart: unless-stopped
profiles: ["whisper", "full"]
environment:
- WHISPER_MODEL=${WHISPER_MODEL:-base}
- WHISPER_MODEL_DIR=/models
- WHISPER_API_KEY=${WHISPER_API_KEY:-}
- WHISPER_DEVICE=cuda:0
- CUDA_DEVICE_INDEX=0
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
ports:
- 3005:8000
volumes:
- ./whisper/models:/models:ro
WHISPER_DEVICE=cuda:0 selecciona explícitamente la primera GPU disponible para el contenedor. CUDA_DEVICE_INDEX se usa como configuración de reserva cuando WHISPER_DEVICE no está presente; en el Compose del cliente, mantenga los índices alineados. Si Whisper debe usar otra GPU, especifique, por ejemplo, cuda:1 y CUDA_DEVICE_INDEX=1.
Importante: cuando LLM, Whisper y BGE Reranker se ejecutan al mismo tiempo, tenga en cuenta el consumo total de VRAM. La falta de memoria de video puede provocar el error
CUDA out of memory.
Verificación de la configuración#
Antes de reiniciar, compruebe la sintaxis del archivo Compose:
docker compose --profile whisper config --quiet
El comando finaliza sin salida si la configuración es correcta.
Reinicio de Whisper en modo GPU#
Vuelva a crear solo el contenedor de Whisper para que se apliquen las nuevas variables de entorno y la reserva de GPU:
docker compose --profile whisper up -d --force-recreate aiserver-whisper
Un docker compose restart normal no es suficiente: ese comando no aplica cambios de configuración del contenedor.
Verificación del estado y los registros#
docker compose --profile whisper ps aiserver-whisper
docker compose --profile whisper logs --tail=100 aiserver-whisper
El contenedor aiserver-whisper debe estar en estado Up.
Verificación del dispositivo seleccionado#
Whisper publica información de diagnóstico en el endpoint /health:
curl -sS http://127.0.0.1:3005/health
Respuesta esperada:
{
"status": "healthy",
"device": "cuda:0",
"cuda_available": true,
"cuda_device_count": 1
}
La cantidad de GPU disponibles puede variar. Las señales clave de un cambio exitoso son que device comience con cuda y que cuda_available sea true.
Mientras se ejecuta la transcripción, también verifique el uso de la GPU:
watch -n 1 nvidia-smi
Posibles problemas#
could not select device driver "nvidia"#
Docker no detecta el runtime de NVIDIA. Compruebe la instalación de NVIDIA Container Toolkit y luego ejecute:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Después de reiniciar Docker, vuelva a crear el contenedor de Whisper.
cuda_available es false#
Compruebe nvidia-smi, la configuración de NVIDIA Container Toolkit y la presencia de la sección deploy.resources.reservations.devices en la configuración final:
docker compose --profile whisper config
CUDA out of memory#
No hay suficiente memoria de video libre en la GPU seleccionada. Detenga los procesos innecesarios de GPU, elija otra GPU o reduzca el modelo Whisper mediante la variable WHISPER_MODEL en .env.
Reversión a CPU#
Para volver Whisper a CPU:
- Comente o elimine
WHISPER_DEVICE,CUDA_DEVICE_INDEXy la seccióndeploydel servicioaiserver-whisper. - Verifique la configuración y vuelva a crear el contenedor:
docker compose --profile whisper config --quiet
docker compose --profile whisper up -d --force-recreate aiserver-whisper
curl -sS http://127.0.0.1:3005/health
Después de la reversión, /health debe devolver "device":"cpu" y "cuda_available":false.