Documentación Administración
Aceleración por GPU
Acelera el análisis del espectáculo de luces con una tarjeta gráfica NVIDIA. Rainy funciona sin una.
Analizar una canción para su espectáculo de luces lleva un tiempo, y la mayor parte se va en un paso: separar los tonos sostenidos de una canción de sus golpes percusivos. Rainy puede ejecutar ese paso en una GPU NVIDIA. El resto del análisis se ejecuta en el procesador. Las puntuaciones coinciden con el dispositivo que realiza la separación, salvo por el redondeo.
El soporte de GPU es opcional. Sin una GPU utilizable, Rainy usa el procesador y ejecuta ese paso en varios núcleos.
Qué acelera y qué no
El soporte de GPU solo afecta al análisis del espectáculo de luces, y únicamente al paso de separación que hay dentro, que ocupa unos dos tercios del tiempo de análisis.
No cambia:
- el espectáculo de luces en sí, que se ejecuta en tu navegador,
- el escaneo, los metadatos, las imágenes de artistas, las letras ni las importaciones,
- la reproducción ni los resultados de un análisis. Un análisis con GPU y uno con CPU producen las mismas puntuaciones, salvo por el redondeo de coma flotante.
Si solo quieres espectáculos de luces más rápidos en un servidor sin GPU, no hace falta nada. Rainy ya usa todos los núcleos disponibles, hasta 8 por defecto.
Requisitos
- Una GPU NVIDIA con un driver reciente. No necesitas instalar aparte un toolkit de CUDA en el sistema.
- Una versión de PyTorch compilada con CUDA instalada en el mismo entorno de Python que ejecuta Rainy. El paquete estándar de PyTorch en algunas plataformas solo incluye CPU, así que instala la versión CUDA de forma explícita:
sh
pip install torch --index-url https://download.pytorch.org/whl/cu126
- Una versión de PyTorch que soporte tu GPU. Rainy lo comprueba para cada GPU y omite las que no puede usar. Las tarjetas antiguas, como la Tesla V100 (capacidad de cómputo 7.0), pueden necesitar una versión anterior de PyTorch que todavía incluya sus kernels.
Para confirmar que PyTorch ve tu GPU, ejecuta:
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
Usar la GPU en Docker
El compose.yaml incluido pide a Docker todas las GPU NVIDIA para el servicio app. Para que funcione:
- Instala el NVIDIA Container Toolkit en el equipo anfitrión.
- Añade una versión de PyTorch compilada con CUDA a la imagen. La imagen por defecto no incluye PyTorch. Por ejemplo, añade
pip install torch --index-url https://download.pytorch.org/whl/cu126al Dockerfile. - Vuelve a compilar y reinicia el contenedor.
Sin PyTorch en la imagen, Rainy usa el procesador. Si tu equipo anfitrión no tiene el toolkit de NVIDIA, elimina el bloque deploy: de compose.yaml, o Docker no podrá iniciar el contenedor.
Elegir el dispositivo
Define RAINY_LIGHTSHOW_DEVICE en tu archivo .env o en el entorno.
| Valor | Qué hace Rainy |
|---|---|
auto (por defecto) |
Usa la GPU útil con más memoria, si hay alguna. Si no, usa el procesador. |
cpu |
Nunca usa una GPU. |
cuda |
Igual que auto: usa una GPU útil, eligiendo la que tenga más memoria si hay varias. Si no, usa el procesador. |
cuda:N |
Usa solo la GPU número N, empezando por 0. Si esa GPU no existe o no es utilizable, Rainy usa el procesador. |
Rainy comprueba cada GPU antes de usarla. Una GPU solo se usa cuando su versión de PyTorch la soporta y una prueba breve en esa GPU produce los mismos resultados que el procesador. Una GPU que no supere alguna de las dos comprobaciones se omite, y Rainy registra el motivo.
RAINY_LIGHTSHOW_THREADS define cuántos hilos del procesador usa la ruta de CPU. Por defecto es el número de núcleos, hasta 8.
Rainy elige la GPU cuando se ejecuta el primer análisis del espectáculo de luces, no cuando arranca el servidor. La línea del dispositivo aparece en el registro en ese momento.
Comprobar qué usa Rainy
Analiza una canción y después busca esta línea en el registro del servidor:
[lightshow-accel] analysis device: cuda:0 (NVIDIA GeForce RTX 4060 Ti)
Una ejecución en el procesador registra algo como esto en su lugar, con el motivo:
[lightshow-accel] analysis device: cpu (CPU x8 threads) — no CUDA GPU visible to PyTorch
Cuando algo sale mal
Rainy nunca hace fallar un análisis por culpa de la GPU. En su lugar, recurre al procesador.
| Mensaje del registro | Qué significa |
|---|---|
no CUDA GPU visible to PyTorch |
PyTorch es solo de CPU, falta el driver o es demasiado antiguo, o el contenedor no puede acceder a la GPU. |
PyTorch unavailable |
PyTorch no está instalado. Es opcional. |
is sm_XX but this PyTorch build only has … |
La versión de PyTorch no tiene kernels para esa GPU. Instala una versión que liste su valor sm_XX. |
failed the self-test |
La GPU o el driver produjeron un error o resultados distintos. Actualiza el driver o prueba otra versión de PyTorch. |
GPU out of memory on this track |
Esa pista era demasiado grande para la memoria de la GPU. Se analizó en el procesador. No hay nada que hacer. |
GPU disabled, using CPU |
Se produjo un error de GPU durante el análisis. La GPU permanece desactivada hasta que se reinicie Rainy. |
Tras corregir un problema de driver o de PyTorch, reinicia Rainy. La elección del dispositivo se hace una vez por ejecución.