Wszystkie strony Akceleracja GPU

Dokumentacja Administracja

Akceleracja GPU

Przyspiesz analizę pokazu świateł dzięki karcie graficznej NVIDIA. Rainy działa również bez niej.

Analiza utworu pod kątem pokazu świateł trwa chwilę, a większość czasu zajmuje jeden etap: rozdzielenie długo trwających tonów utworu od jego uderzeń perkusyjnych. Rainy może wykonać ten etap na karcie NVIDIA GPU. Cała reszta analizy działa na procesorze. Partytury są zgodne, niezależnie od urządzenia, które wykonuje rozdzielanie, z dokładnością do zaokrągleń zmiennoprzecinkowych.

Obsługa GPU jest opcjonalna. Bez użytecznego GPU Rainy korzysta z procesora i rozkłada ten etap na kilka rdzeni.

Co przyspiesza, a czego nie

Obsługa GPU wpływa tylko na analizę pokazu świateł, a dokładnie na etap rozdzielania wewnątrz niej, który zajmuje około dwóch trzecich czasu analizy.

Nie zmienia ona:

  • samego pokazu świateł, który działa w przeglądarce,
  • skanowania, metadanych, zdjęć wykonawców, tekstów ani importów,
  • odtwarzania ani wyników analizy. Analiza na GPU i na CPU dają te same partytury, z wyjątkiem zaokrągleń zmiennoprzecinkowych.

Jeśli chcesz tylko szybszych pokazów świateł na serwerze bez GPU, nie potrzebujesz niczego więcej. Rainy już wykorzystuje wszystkie dostępne rdzenie, domyślnie do 8.

Wymagania

  • Karta NVIDIA GPU z aktualnym sterownikiem. Nie potrzebujesz osobno zainstalowanego zestawu CUDA w systemie.
  • Wersja PyTorch z CUDA zainstalowana w tym samym środowisku Pythona, które uruchamia Rainy. Standardowa paczka PyTorch na niektórych platformach działa tylko na CPU, więc zainstaluj wersję CUDA wprost:

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

  • Wersja PyTorch obsługująca Twoją kartę GPU. Rainy sprawdza to dla każdej karty i pomija te, których nie może użyć. Starsze karty, takie jak Tesla V100 (compute capability 7.0), mogą wymagać starszej wersji PyTorch, która nadal zawiera ich jądra.

Aby sprawdzić, czy PyTorch widzi Twoją kartę GPU, uruchom:

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

Użycie GPU w Dockerze

Dołączony compose.yaml prosi Dockera o wszystkie karty NVIDIA GPU dla usługi app. Aby to zadziałało:

  1. Zainstaluj NVIDIA Container Toolkit na hoście.
  2. Dodaj do obrazu wersję PyTorch z CUDA. Domyślny obraz nie zawiera PyTorch. Na przykład dodaj do Dockerfile pip install torch --index-url https://download.pytorch.org/whl/cu126.
  3. Zbuduj obraz i uruchom kontener ponownie.

Bez PyTorch w obrazie Rainy korzysta z procesora. Jeśli host nie ma NVIDIA Container Toolkit, usuń blok deploy: z compose.yaml, bo inaczej Docker nie uruchomi kontenera.

Wybór urządzenia

Ustaw RAINY_LIGHTSHOW_DEVICE w pliku .env lub w środowisku.

Wartość Co robi Rainy
auto (domyślnie) Używa użytecznego GPU z największą ilością pamięci, jeśli takie jest. W przeciwnym razie używa procesora.
cpu Nigdy nie używa GPU.
cuda To samo co auto: używa użytecznego GPU, a przy kilku wybiera to z największą ilością pamięci. W przeciwnym razie używa procesora.
cuda:N Używa tylko GPU o numerze N, liczonym od 0. Jeśli ten GPU nie istnieje lub nie nadaje się do użycia, Rainy korzysta z procesora.

Rainy sprawdza każdy GPU przed jego użyciem. GPU jest używane tylko wtedy, gdy jego wersja PyTorch go obsługuje i krótki test na tym GPU daje te same wyniki co procesor. GPU, które nie przejdzie któregokolwiek sprawdzenia, jest pomijane, a Rainy zapisuje powód w logu.

RAINY_LIGHTSHOW_THREADS określa, ile wątków procesora używa ścieżka procesora. Domyślnie to liczba rdzeni, najwyżej 8.

Rainy wybiera GPU przy pierwszej analizie pokazu świateł, a nie w chwili startu serwera. Wiersz z urządzeniem pojawia się wtedy w logu.

Sprawdzanie, czego używa Rainy

Przeanalizuj utwór, a następnie poszukaj tej linii w logu serwera:

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

Analiza na procesorze zapisuje zamiast tego coś w rodzaju tej linii, wraz z powodem:

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

Gdy coś idzie nie tak

Rainy nigdy nie przerywa analizy z powodu GPU. Zamiast tego przechodzi na procesor.

Komunikat w logu Co oznacza
no CUDA GPU visible to PyTorch PyTorch działa tylko na CPU, sterownik brakuje lub jest zbyt stary, albo kontener nie ma dostępu do GPU.
PyTorch unavailable PyTorch nie jest zainstalowany. To opcjonalne.
is sm_XX but this PyTorch build only has … Dana wersja PyTorch nie ma jąder dla tego GPU. Zainstaluj wersję, której lista zawiera wartość sm_XX.
failed the self-test GPU albo sterownik zwróciły błąd lub inne wyniki. Zaktualizuj sterownik albo wypróbuj inną wersję PyTorch.
GPU out of memory on this track Ten utwór był za duży dla pamięci GPU. Został przeanalizowany na procesorze. Nie trzeba nic robić.
GPU disabled, using CPU Podczas analizy wystąpił błąd GPU. GPU pozostaje wyłączone, aż Rainy zostanie uruchomiony ponownie.
Po naprawie problemu ze sterownikiem lub PyTorch uruchom Rainy ponownie. Wybór urządzenia jest dokonywany raz na przebieg.

Powiązane