Torch not compiled with CUDA enabled — kompleksowy przewodnik po diagnostyce i naprawie

W świecie uczenia maszynowego i głębokiego uczenia PyTorch jest jednym z najpopularniejszych narzędzi. Jednak często użytkownicy spotykają się z problemem „Torch not compiled with CUDA enabled”, czyli sytuacją, w której PyTorch działa wyłącznie na CPU, nie wykorzystując mocy karty graficznej. Taki błąd może być frustrujący, zwłaszcza gdy planujesz trenować duże modele lub pracować z bibliotekami, które intensywnie korzystają z GPU. W poniższym artykule wyjaśnimy, co oznacza komunikat Torch not compiled with CUDA enabled, dlaczego się pojawia oraz jak skutecznie go rozwiązać. Opracujemy praktyczne kroki, porady dotyczące doboru wersji CUDA i PyTorch, a także scenariusze, w których warto pozostawić pracę na CPU i kiedy realnie uruchomić CUDA.

Torch not compiled with CUDA enabled — co to znaczy?

Komunikat Torch not compiled with CUDA enabled pojawia się, gdy środowisko PyTorch zostało zbudowane bez wsparcia dla CUDA, czyli bez możliwości uruchamiania operacji na karcie graficznej Nvidia. W praktyce oznacza to, że funkcje wykorzystujące GPU, takie jak trening sieci neuronowych na kartach CUDA, nie będą działać lub będą wywoływać błędy. W takiej sytuacji PyTorch może działać poprawnie na CPU, ale pełne możliwości przyspieszenia zmienią się na ograniczenia związane z prędkością i skalowalnością. Zrozumienie przyczyny tego stanu to pierwszy krok do naprawy.

Dlaczego CUDA ma znaczenie dla PyTorch?

CUDA to framework i zestaw narzędzi stworzonych przez firmę Nvidia, które umożliwiają programistom uruchamianie obliczeń na GPU. W kontekście PyTorch CUDA pozwala na szybkie trenowanie i inferencję modeli dzięki masowej równoległości. Brak CUDA w środowisku PyTorch oznacza ograniczenie do CPU, co może prowadzić do znacznego wydłużenia czasu treningu oraz mniejszych możliwości w zakresie rozmiarów modeli i zestawów danych. Dlatego również w artykule skupiamy się na tym, jak zapewnić kompatybilność PyTorch z CUDA, a kiedy warto rozważyć alternatywy.

Jak sprawdzić, czy PyTorch ma CUDA wbudowane

Najpierw warto samodzielnie zweryfikować wersję PyTorch i jej wsparcie CUDA. Poniższe komendy pomagają szybko zdiagnozować sytuację:

  • Uruchom python w konsoli i wpisz:
    import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available())
  • Sprawdź, czy torch.version.cuda zwraca numer wersji CUDA. Jeżeli polecenie zwraca None, oznacza to, że PyTorch nie ma wsparcia CUDA zbudowanego w pakiecie.
  • Jeżeli torch.cuda.is_available() zwraca False, mimo że torch.version.cuda ma numer wersji, problem może być związany z konfiguracją sterowników, środowiskiem lub niekompatybilnością wersji PyTorch i CUDA.

W skrócie: jeśli masz komunikat Torch not compiled with CUDA enabled, najczęściej trzeba wymienić instalację PyTorch na wersję z obsługą CUDA lub upewnić się, że środowisko CUDA jest poprawnie zainstalowane i zgodne z wybraną wersją PyTorch.

Typowe scenariusze prowadzące do błędu Torch not compiled with CUDA enabled

1) Zainstalowany PyTorch bez wsparcia CUDA (CPU-only)

Najczęściej spotykany scenariusz. PyTorch może być zainstalowany tylko z wersją przeznaczoną dla CPU, co skutkuje brakiem możliwości wykorzystania CUDA. Często użytkownicy przypadkowo instalują CPU-only wersję PyTorch podczas konfigurowania środowiska, zwłaszcza gdy nie planowali od razu uruchomienia na GPU lub gdy operacja instalacyjna nie wykryła karty Nvidia w czasie instalacji.

2) Niekompatybilna kombinacja PyTorch i CUDA

Nawet jeśli posiadasz kartę CUDA i sterowniki, nie zawsze wersje PyTorch i CUDA będą ze sobą kompatybilne. Na przykład PyTorch z wybraną wersją CUDA 11.7 może nie działać poprawnie z CUDA Toolkit 11.5 na twoim systemie, co prowadzi do sytuacji, w której PyTorch nie wykrywa GPU, a użytkownik widzi komunikat Torch not compiled with CUDA enabled.

3) Nieaktualne lub niekompatybilne sterowniki Nvidia

Wielu użytkowników zapomina, że aktualne sterowniki Nvidia są kluczowe dla prawidłowego działania CUDA. Stare sterowniki mogą powodować, że GPU nie będzie widziane lub że CUDA nie będzie działać poprawnie, co skutkuje błędami podczas uruchamiania operacji na GPU.

4) Problemy w środowisku wirtualnym

W środowiskach takich jak Conda, virtualenv czy Docker, nieprawidłowo skonfigurowane zależności lub brak dostępu do biblioteki CUDA w środowisku mogą skutkować tym, że PyTorch nie rozpoznaje GPU nawet jeśli system ma zainstalowane CUDA i sterowniki.

5) Nieprawidłowe instalacje CUDA toolkit i cudatoolkit

W niektórych przypadkach CUDA toolkit nie jest zainstalowany, nie znajduje się w ścieżkach systemowych, albo wersje cudatoolkit nie odpowiadają wersji CUDA używanej przez PyTorch. To powoduje, że PyTorch nie potrafi uruchomić operacji na GPU.

Jak naprawić problem Torch not compiled with CUDA enabled — praktyczny plan działania

Opcja 1: Zainstaluj PyTorch z obsługą CUDA

Najpewniejsza i najbardziej rekomendowana droga to zainstalowanie PyTorch z obsługą CUDA odpowiednią do twojej karty i systemu operacyjnego. Wybór wersji CUDA zależy od twojego środowiska i źródeł, z których instalujesz PyTorch (Conda, Pip). Poniżej znajdziesz przewodnik krok po kroku.

  • Sprawdź, jaka wersja CUDA jest kompatybilna z twoją kartą Nvidia. Najczęściej będzie to CUDA 11.x lub CUDA 12.x w zależności od sprzętu i sterowników.
  • Wybierz sposób instalacji:
    • Conda (zalecane dla łatwej zgodności):
    • Uruchom polecenie dopasowane do twojej wersji CUDA, na przykład:
      conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
    • Pip (dla środowisk nietrzymanych):
    • Wersje PyTorch z obsługą CUDA dostępne są na stronie PyTorch. Przykład polecenia:
      pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
  • Po instalacji uruchom:
    python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
  • Jeżeli torch.cuda.is_available() zwraca True, masz pewność, że CUDA działa prawidłowo wraz z PyTorch.

Ważne: zawsze dopasuj cudatoolkit do wersji CUDA, która jest zgodna z twoimi sterownikami Nvidia. Niektórestarsze karty mogą nie obsługiwać najnowszych wersji CUDA, dlatego warto sprawdzić specyfikację swojego sprzętu i dokumentację PyTorch dotyczącą kompatybilnych wersji.

Opcja 2: Użycie PyTorch bez CUDA (CPU-only)

Jeśli nie możesz uzyskać CUDA lub Twoje środowisko ogranicza dostęp do GPU, możesz wybrać instalację CPU-only i kontynuować pracę na CPU. Wówczas operacje na GPU nie będą wykonywane, ale nadal możesz trenować modele o mniejszych rozmiarach i eksperymentować z architekturami. Aby zainstalować wersję CPU-only, użyj standardowej instalacji PyTorch bez określania cudatoolkit:

pip3 install torch torchvision torchaudio

Po instalacji sprawdź, czy GPU nie jest wymuszany w Twoim skrypcie. Możesz użyć warunku:

if not torch.cuda.is_available(): print("Uruchamiasz program na CPU.")

Jak wybrać właściwą wersję CUDA dla Twojego systemu

Wybierając wersję CUDA, warto wziąć pod uwagę trzy czynniki: wersję sterowników Nvidia, wersję CUDA Toolkit oraz wersję cudatoolkit w PyTorch. Oto praktyczne wskazówki:

  • Sprawdź aktualną wersję sterowników Nvidia na swoim urządzeniu. Najnowsze sterowniki często zapewniają lepsze wsparcie dla CUDA i stabilności działania.
  • Przemyśl integrację CUDA Toolkit ze środowiskiem deweloperskim. W wielu przypadkach PyTorch dostarcza cudatoolkit w zestawie przez instalację, co upraszcza konfigurację.
  • Dobierz CUDA Toolkit do wersji PyTorch, którą planujesz zainstalować. Najnowsze wersje PyTorch wspierają różne wersje CUDA; upewnij się, że wybrana kombinacja jest kompatybilna.

Diagnostyka po instalacji — co sprawdzić?

Po zakończonej instalacji warto potwierdzić kilka kluczowych punktów, aby mieć pewność, że Torch not compiled with CUDA enabled nie będzie już problemem:

  • Uruchom testową sesję Pythona i sprawdź, czy torch.cuda.is_available() zwraca True.
  • Sprawdź wersje:
    • torch.__version__ — wersja PyTorch
    • torch.version.cuda — wersja CUDA zintegrowana z PyTorch
    • nvcc --version (jeśli dostępny) — wersja CUDA Toolkit zainstalowana w systemie
  • Wypróbuj mały skrypt, który alokuje tensor na GPU i wykonuje prostą operację, np. dodawanie lub mnożenie, aby zweryfikować, że GPU jest aktywne.

Najczęściej zadawane pytania dotyczące Torch not compiled with CUDA enabled

Czy mogę używać PyTorch z GPU nawet na laptopie z dedykowaną kartą?

Tak, o ile masz zainstalowaną wersję PyTorch z obsługą CUDA i aktualne sterowniki Nvidia. W przypadku laptopów często trzeba zadbać o ustawienia zasilania, aby GPU był aktywny w trybie wysiłkowym, a nie ograniczany przez tryb energooszczędny. Bez CUDA-enabled PyTorch nie będziesz w pełni wykorzystywać karty graficznej w procesie treningu.

Co zrobić, jeśli system nie widzi karty Nvidia po instalacji?

Sprawdź, czy kernel/sterowniki są poprawnie zainstalowane, czy CUDA Toolkit jest zgodny z wersją sterowników i czy nie ma konfliktów wersji. Uruchom komendy typu nvidia-smi (Linux/Windows) — jeśli nie zwraca informacji o GPU, problem może leżeć w sterownikach lub w konfiguracji PCIe. Wtedy warto zaktualizować sterowniki i ponownie uruchomić instalację PyTorch z obsługą CUDA.

Czy mogę użyć PyTorch z CUDA bez instalowania cudatoolkit?

Tak w pewnych scenariuszach, gdy PyTorch jest zbudowany z własnym cudatoolkit. Jednak najczęściej konieczne będzie zainstalowanie właściwej wersji cudatoolkit dopasowanej do systemu i wersji PyTorch. Zawsze postępuj zgodnie z oficjalną dokumentacją PyTorch dla wybranej wersji i platformy.

Praktyczne wskazówki dotyczące konfiguracji środowiska

Porządek instalacyjny: Conda vs Pip

Conda często zapewnia prostszy sposób utrzymania zgodności między PyTorch, CUDA i sterownikami. W wielu przypadkach wystarczy wybrać jedną wersję cudatoolkit, a Conda zadba o kompatybilność. Wersje pip wymagają staranniejszego dopasowania poszczególnych pakietów i źródeł, ale daje większą elastyczność w środowiskach wirtualnych.

Krok po kroku: konfiguracja środowiska na Linuxie

  • Zweryfikuj kartę graficzną i sterowniki za pomocą lspci | grep -i nvidia i nvidia-smi.
  • Zainstaluj CUDA Toolkit zgodny z wymaganą wersją PyTorch (jeśli nie korzystasz z cudatoolkit dostarczanego przez PyTorch).
  • Utwórz nowe środowisko w Conda lub venv i zainstaluj PyTorch z obsługą CUDA, dopasowaną do systemu.
  • Uruchom testowy skrypt w Pythonie, aby potwierdzić dostęp do GPU.

Krok po kroku: konfiguracja środowiska na Windowsie

  • Sprawdź kompatybilność sterowników i wersji CUDA.
  • Zainstaluj odpowiednią wersję cudatoolkit w środowisku Conda lub wybierz odpowiednią paczkę PyTorch z obsługą CUDA dla Windows.
  • Przetestuj środowisko komendą python -c "import torch; print(torch.cuda.is_available())".

Przykłady praktyczne i testy

Praktyczne testy pomagają zweryfikować skuteczność naprawy. Oto kilka scenariuszy do przetestowania:

  • Test 1: Uruchom prosty model sieci neuronowej na CPU i na GPU (po zainstalowaniu CUDA). Porównaj czas treningu na małych zestawach danych.
  • Test 2: Uruchom model z warstwami konwolucyjnymi na GPU, używając dużych zestawów danych. Sprawdź, czy operacje CUDA są wykorzystywane (profiling narzędzi Nvidia może pomóc).
  • Test 3: Zmieniaj wersje CUDA i cudatoolkit w środowisku Conda, aby zobaczyć, jak wpływa to na stabilność i wydajność. Zawsze zaczynaj od wersji kompatybilnych z Twoim sprzętem.

Najważniejsze zasady, które warto zapamiętać

  • Wybór wersji PyTorch z obsługą CUDA powinien być dopasowany do wersji CUDA Toolkit oraz sterowników Nvidia w systemie.
  • Jeżeli pojawi się komunikat Torch not compiled with CUDA enabled, najczęściej wystarczy ponownie zainstalować PyTorch z opcją CUDA lub zaktualizować sterowniki i CUDA Toolkit.
  • Środowiska wirtualne mogą wprowadzać dodatkowe złożoności — zawsze testuj operacje CUDA po instalacji w nowym środowisku.
  • W przypadku problemów z kompatybilnością z kartą graficzną lub systemem operacyjnym, wybierz wersję PyTorch CPU-only i rozważ alternatywy, takie jak trening na mniejszym modelu lub użycie chmury z dostępem do GPU.

Podsumowanie

Problemy związane z błędem Torch not compiled with CUDA enabled są powszechne, ale zwykle łatwe do zdiagnozowania i naprawy. Kluczowe kroki to: sprawdzenie wersji PyTorch i CUDA, upewnienie się, że środowisko CUDA jest poprawnie zainstalowane, oraz wybranie odpowiedniej kombinacji PyTorch i CUDA podczas instalacji. Dla wielu użytkowników instalacja PyTorch z obsługą CUDA za pomocą Conda okazuje się najszybszą i najpewniejszą drogą do uruchomienia całej stacki na GPU. Dzięki temu możesz w pełni wykorzystać potencjał swojego sprzętu, skracając czas treningu i umożliwiając eksperymenty z większymi modelami i zestawami danych. Torch not compiled with CUDA enabled nie musi już być barierą — wystarczy systematyczne podejście i właściwy zestaw narzędzi.