Totes les pàgines Acceleració per GPU

Documentació Administració

Acceleració per GPU

Accelera l'anàlisi de l'espectacle de llums amb una targeta gràfica NVIDIA. Rainy funciona sense una.

Analitzar una cançó per al seu espectacle de llums triga una estona, i la major part del temps va a un pas: separar els tons sostinguts d'una cançó dels cops percussius. Rainy pot executar aquest pas en una GPU NVIDIA. La resta de l'anàlisi s'executa al processador. Les partitures coincideixen amb el dispositiu que fa la separació, llevat d'arrodoniments de coma flotant.

El suport de GPU és opcional. Sense una GPU utilitzable, Rainy fa servir el processador i executa aquest pas en diversos nuclis.

Què accelera i què no

El suport de GPU només afecta l'anàlisi de l'espectacle de llums, i només el pas de separació que hi ha dins, que ocupa al voltant de dos terços del temps d'anàlisi.

No canvia:

  • l'espectacle de llums en si, que s'executa al teu navegador,
  • l'escaneig, les metadades, les imatges d'artistes, les lletres o les importacions,
  • la reproducció o els resultats d'una anàlisi. Una anàlisi amb GPU i una anàlisi amb CPU produeixen les mateixes partitures, llevat d'arrodoniments de coma flotant.

Si només vols espectacles de llums més ràpids en un servidor sense GPU, no cal res. Rainy ja utilitza tots els nuclis disponibles, fins a 8 per defecte.

Requisits

  • Una GPU NVIDIA amb un controlador recent. No cal instal·lar a part un CUDA toolkit al sistema.
  • Una build de PyTorch amb CUDA instal·lada al mateix entorn de Python que executa Rainy. El paquet estàndard de PyTorch en algunes plataformes només és per a CPU, de manera que cal instal·lar explícitament la build amb CUDA:

sh pip install torch --index-url https://download.pytorch.org/whl/cu126

  • Una build de PyTorch que admeti la teva GPU. Rainy ho comprova per a cada GPU i omet les que no pot utilitzar. Les targetes més antigues, com la Tesla V100 (capacitat de computació 7.0), poden necessitar una build més antiga de PyTorch que encara inclogui els seus kernels.

Per confirmar que PyTorch veu la teva GPU, executa:

python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"

Utilitzar la GPU a Docker

El compose.yaml inclòs demana a Docker totes les GPU NVIDIA per al servei app. Perquè això funcioni:

  1. Instal·la el NVIDIA Container Toolkit a l'amfitrió.
  2. Afegeix una build de PyTorch amb CUDA a la imatge. La imatge per defecte no inclou PyTorch. Per exemple, afegeix pip install torch --index-url https://download.pytorch.org/whl/cu126 al Dockerfile.
  3. Torna a construir i reinicia el contenidor.

Sense PyTorch a la imatge, Rainy utilitza el processador. Si el teu amfitrió no té el toolkit de NVIDIA, elimina el bloc deploy: de compose.yaml, o Docker no podrà iniciar el contenidor.

Triar el dispositiu

Defineix RAINY_LIGHTSHOW_DEVICE al teu fitxer .env o a l'entorn.

Valor Què fa Rainy
auto (per defecte) Utilitza la GPU utilitzable amb més memòria, si n'hi ha una. Si no, utilitza el processador.
cpu No utilitza mai una GPU.
cuda Igual que auto: utilitza una GPU utilitzable, escollint la que té més memòria si n'hi ha diverses. Si no, utilitza el processador.
cuda:N Utilitza només la GPU número N, començant per 0. Si aquesta GPU no hi és o no es pot utilitzar, Rainy fa servir el processador.

Rainy comprova cada GPU abans d'utilitzar-la. Una GPU només s'utilitza quan la seva build de PyTorch la admet i una prova curta en aquella GPU produeix els mateixos resultats que el processador. Una GPU que falla alguna de les dues comprovacions s'omet, i Rainy registra el motiu.

RAINY_LIGHTSHOW_THREADS defineix quants fils del processador utilitza la ruta del processador. Per defecte és el nombre de nuclis, fins a 8.

Rainy tria la GPU quan s'executa la primera anàlisi d'espectacle de llums, no quan el servidor s'inicia. La línia del dispositiu apareix al registre en aquell moment.

Comprovar què utilitza Rainy

Analitza una cançó i després busca aquesta línia al registre del servidor:

[lightshow-accel] analysis device: cuda:0 (NVIDIA GeForce RTX 4060 Ti)

Una execució amb processador registra en canvi alguna cosa com això, amb el motiu:

[lightshow-accel] analysis device: cpu (CPU x8 threads) — no CUDA GPU visible to PyTorch

Quan alguna cosa va malament

Rainy mai no fa fallar una anàlisi per culpa de la GPU. Recorre al processador en lloc d'això.

Missatge del registre Què vol dir
no CUDA GPU visible to PyTorch PyTorch és només per a CPU, el controlador falta o és massa antic, o el contenidor no pot arribar a la GPU.
PyTorch unavailable PyTorch no està instal·lat. És opcional.
is sm_XX but this PyTorch build only has … La build de PyTorch no té kernels per a aquesta GPU. Instal·la una build que indiqui el seu valor sm_XX.
failed the self-test La GPU o el controlador han produït un error o resultats diferents. Actualitza el controlador o prova una altra build de PyTorch.
GPU out of memory on this track Aquella pista era massa gran per a la memòria de la GPU. Es va analitzar al processador. No cal fer res.
GPU disabled, using CPU Ha passat un error de GPU durant l'anàlisi. La GPU queda desactivada fins que Rainy es reinicia.
Després de solucionar un problema de controlador o de PyTorch, reinicia Rainy. L'elecció del dispositiu es fa una sola vegada per execució.

Relacionat