CUDA-Umgebung korrekt aufsetzen: Treiber, Toolkit, cuDNN und PyTorch auf Ubuntu
Treiber zuerst, dann PyTorch mit dem passenden CUDA-Paket, Toolkit und cuDNN nur bei Bedarf: So richten Sie auf Ubuntu Server eine CUDA-Umgebung mit PyTorch 2.15, CUDA 13 und Treiberzweig 580 ein und prüfen jede Schicht einzeln.
Werbung Mit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Eine CUDA-Umgebung für PyTorch besteht aus mehreren Schichten: dem NVIDIA-Treiber im Kernel, der CUDA-Laufzeit, optional dem CUDA Toolkit mit dem Compiler nvcc, optional cuDNN und schließlich PyTorch selbst. Die meisten Fehler entstehen nicht durch defekte Pakete, sondern weil diese Schichten nicht zueinander passen oder weil Teile installiert werden, die für den Anwendungsfall gar nicht nötig sind. Diese Anleitung beschreibt den Aufbau auf Ubuntu Server mit dem Stand vom 29.10.2026: PyTorch 2.15.0, CUDA Toolkit 13.4 und NVIDIA-Treiber ab Zweig 580. Sie erklärt, welche Komponente Sie wirklich brauchen, und prüft jede Schicht einzeln.
Voraussetzungen
- Betriebssystem: Ubuntu Server 24.04 LTS (amd64). Das NVIDIA-Repository bedient ebenfalls Ubuntu 22.04 und 26.04 sowie Debian 12 und 13; die Befehle unterscheiden sich dort nur im Repository-Namen.
- GPU: NVIDIA-Karte, als Richtwert für praxisnahe KI-Arbeit mit mindestens 8 GB VRAM. Die CUDA-13-Pakete von PyTorch setzen die Turing-Generation (Compute Capability 7.5, etwa RTX 20 oder T4) voraus. Maxwell, Pascal und Volta laufen nur noch mit dem CUDA-12.6-Paket.
- CPU und RAM: 4 Kerne und 16 GB RAM als Untergrenze; Datenlader und Vorverarbeitung laufen auf der CPU.
- Speicher: mindestens 10 GB frei. Allein das PyTorch-Paket und die mitgelieferte cuDNN-Bibliothek sind als Download zusammen über 1 GB groß, das optionale Toolkit kommt hinzu.
- Python: 3.11 oder neuer für PyTorch 2.15 (Ubuntu 24.04 bringt 3.12 mit; Ubuntu 22.04 mit Python 3.10 bekommt nur noch PyTorch 2.14), dazu das Paket
python3-venv. - Rechte: sudo-Zugang und Konsolenzugriff für den Neustart nach der Treiberinstallation. Bei aktivem Secure Boot kann beim ersten Start eine Schlüsselbestätigung an der Konsole nötig sein.
| Komponente | Stand 29.10.2026 | Brauchen Sie es? |
|---|---|---|
| NVIDIA-Treiber | Zweig 580 (Ubuntu-Archiv 580.178.04), NVIDIA-Repository bis 615.71.09 | Immer |
| PyTorch | 2.15.0 (Stable CUDA 13.2, zusätzlich 13.4), für CUDA 12.6 bleibt 2.14 | Ja, passendes Paket wählen |
| CUDA Toolkit | 13.4 Update 2 (Paket 13.4.2) | Nur für eigene CUDA-Builds |
| cuDNN systemweit | 9.27.0.42 für CUDA 13 | Nur für eigene Builds, PyTorch bringt 9.26 mit |
Welche Karte für welches Modell reicht, beschreibt die Anleitung GPU für lokale KI auswählen. Läuft der Server als VM, muss die GPU vorher durchgereicht sein, siehe GPU-Passthrough in Proxmox.
Schritt 1: GPU und Ausgangslage prüfen
Bevor Sie etwas installieren, klären Sie drei Fragen: Sieht das System die Karte, sind Reste früherer Installationen vorhanden, und ist Secure Boot aktiv? Die dritte Frage entscheidet, ob Sie signierte Kernelmodule brauchen.
lspci -nn | grep -i nvidia
uname -r
mokutil --sb-state
dpkg -l | grep -E 'nvidia|cuda|cudnn' | awk '{print $2, $3}'
Findet der letzte Befehl Pakete aus einer älteren Installation, etwa einen Treiber aus dem Ubuntu-Archiv und zusätzlich cuda-drivers aus dem NVIDIA-Repository, entscheiden Sie sich für eine Quelle und entfernen die andere vollständig. Zwei Treiberquellen nebeneinander sind eine häufige Ursache für abgebrochene Updates.
sudo apt purge '^nvidia-.*' '^libnvidia-.*' '^cuda-.*' '^cudnn.*'
sudo apt autoremove --purge
sudo reboot
Auf einem frischen Server lassen Sie diesen Block weg. Auf einem System mit grafischer Oberfläche entfernt er auch den Anzeigetreiber; arbeiten Sie dann über SSH.
lspci -nn | grep -i nvidia zeigt mindestens eine Zeile mit „NVIDIA Corporation“, dpkg -l | grep -E 'nvidia|cuda' liefert nach der Bereinigung keine Treiberpakete mehr, und mokutil --sb-state meldet „SecureBoot enabled“ oder „SecureBoot disabled“.
Schritt 2: NVIDIA-Treiber installieren
Für Server gibt es zwei gepflegte Wege. Wählen Sie genau einen.
Weg A, Ubuntu-Archiv (empfohlen bei Secure Boot): Canonical liefert vorkompilierte, signierte Kernelmodule. Das Werkzeug ubuntu-drivers zeigt die passenden Server-Zweige für Ihre Karte an.
sudo apt update && sudo apt full-upgrade -y
sudo ubuntu-drivers list --gpgpu
sudo ubuntu-drivers install --gpgpu nvidia:580-server
sudo apt install -y nvidia-utils-580-server
sudo reboot
Zweig 580 ist die Untergrenze für CUDA 13. Neuere Zweige wie 610 stehen für Ubuntu 24.04 ebenfalls im Archiv; nehmen Sie einen Zweig, den ubuntu-drivers list --gpgpu anbietet, und bleiben Sie dann dabei.
Weg B, NVIDIA-Repository: Sinnvoll, wenn Sie den neuesten Treiberzweig brauchen, etwa für neue Funktionen von CUDA 13.4, die laut NVIDIA den Zweig R615 voraussetzen. Seit Zweig 590 tragen die Pakete keine Zweignummer mehr im Namen; den Zweig halten Sie über ein Pinning-Paket fest, das NVIDIA vor dem Treiber zu installieren empfiehlt.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install -y nvidia-driver-pinning-615
sudo apt install -y nvidia-open
sudo reboot
Die DKMS-Module aus dem NVIDIA-Repository sind nicht mit dem Schlüssel von Canonical signiert. Bei aktivem Secure Boot müssen Sie einen eigenen Schlüssel registrieren, sonst lädt der Kernel das Modul nicht.
Nach dem Neustart zeigt nvidia-smi eine Tabelle mit Ihrer GPU, der Treiberversion (580 oder neuer) und dem Feld „CUDA Version“ mit 13.0 oder höher. cat /proc/driver/nvidia/version nennt dieselbe Treiberversion.
Schritt 3: PyTorch in einer virtuellen Umgebung installieren
Ubuntu schützt das System-Python gegen pip install mit der Meldung error: externally-managed-environment. Legen Sie deshalb pro Projekt eine virtuelle Umgebung an. Das trennt auch unterschiedliche PyTorch-Versionen sauber voneinander.
sudo apt install -y python3-venv
python3 -m venv ~/venvs/torch
source ~/venvs/torch/bin/activate
pip install --upgrade pip
Welches Paket Sie installieren, hängt von der GPU-Generation ab. Die Angaben stammen aus der Kompatibilitätsmatrix für PyTorch 2.15, den Release Notes und dem Paketindex auf download.pytorch.org:
| Variante | Befehl (Linux) | GPU-Generationen |
|---|---|---|
| CUDA 13.2, Standard auf PyPI | pip install torch torchvision | Turing, Ampere, Hopper, Blackwell |
| CUDA 13.4 | pip install torch torchvision --index-url https://download.pytorch.org/whl/cu134 | Turing, Ampere, Hopper, Blackwell |
| CUDA 12.6 (nur PyTorch 2.14) | pip install torch==2.14.1 torchvision==0.29.1 --index-url https://download.pytorch.org/whl/cu126 | Maxwell bis Hopper, kein Blackwell |
| Nur CPU | pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu | keine GPU |
Für eine RTX 30, 40 oder 50 genügt also der einfache Befehl ohne Index. Für eine GTX 1080 (Pascal) verwenden Sie den Index cu126 mit PyTorch 2.14, denn ab 2.15 baut PyTorch laut Release Notes keine Pakete für CUDA 12.6 und 13.0 mehr. Schreiben Sie die Version für reproduzierbare Umgebungen fest:
pip install torch==2.15.0 torchvision
pip freeze > requirements-torch.txt
Das CUDA-13-Paket zieht die benötigten Bibliotheken als eigene pip-Pakete nach, darunter CUDA-Laufzeit, cuBLAS, cuDNN 9.26.0.51 und NCCL 2.30.7. Ein systemweites CUDA Toolkit ist dafür nicht nötig.
Der folgende Aufruf gibt die Version mit CUDA-Angabe, True und den Namen Ihrer Karte aus:
python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available(), torch.cuda.get_device_name(0))"Schritt 4: CUDA Toolkit nur für eigene Builds
Das Toolkit enthält Compiler, Header und Werkzeuge. Sie brauchen es, wenn Sie Python-Pakete mit eigenen CUDA-Kerneln aus dem Quellcode bauen, etwa manche Attention- oder Quantisierungsbibliotheken, oder eigene CUDA-Programme schreiben. Für reines PyTorch-Training überspringen Sie diesen Schritt.
Seit CUDA 13.4 installieren die Toolkit-Metapakete laut NVIDIA keinen Treiber mehr mit; Treiber und Toolkit werden getrennt versioniert. Damit entfällt ein alter Stolperstein, bei dem apt install cuda unbemerkt den Treiberzweig wechselte. Nutzen Sie ein versioniertes Paket, damit das Toolkit nicht bei jedem Update auf die nächste Minor-Version springt:
# NVIDIA-Repository wie in Schritt 2, Weg B einbinden (cuda-keyring), falls noch nicht geschehen
sudo apt install -y cuda-toolkit-13-4
echo 'export PATH=/usr/local/cuda-13.4/bin${PATH:+:${PATH}}' >> ~/.bashrc
source ~/.bashrc
Bauen Sie Erweiterungen für ein bestimmtes PyTorch-Paket, wählen Sie das Toolkit passend zu dessen CUDA-Version, etwa cuda-toolkit-13-2 für den Index cu132. Mehrere Toolkits können parallel unter /usr/local/cuda-13.x liegen; welches aktiv ist, bestimmt der Eintrag in PATH.
nvcc --version meldet „Cuda compilation tools, release 13.4“, und ls -l /usr/local/cuda zeigt auf das installierte Toolkit.
Schritt 5: cuDNN systemweit (optional)
cuDNN ist die Bibliothek für neuronale Netze, auf die PyTorch für Faltungen und Attention zugreift. PyTorch nutzt seine mitgelieferte Version. Ein systemweites cuDNN brauchen Sie nur für eigene C++-Builds oder andere Frameworks, die es voraussetzen. NVIDIA stellt dafür Metapakete im selben Repository bereit:
sudo apt install -y cudnn9-cuda-13
Das Paket installiert das jeweils aktuelle cuDNN 9 für CUDA 13 und aktualisiert sich innerhalb dieser Reihe. Für Builds gegen CUDA 12 gibt es entsprechend cudnn9-cuda-12.
ldconfig -p | grep libcudnn.so.9 listet die Bibliothek, und dpkg -l | grep cudnn9 zeigt eine Version 9.x. In der PyTorch-Umgebung liefert python -c "import torch; print(torch.backends.cudnn.version())" weiterhin die mitgelieferte Version; das ist korrekt.
Schritt 6: Gesamtprüfung und Updates planen
Eine erkannte GPU beweist noch nicht, dass Rechnungen darauf laufen. Der folgende Test führt eine Matrixmultiplikation auf der Karte aus und vergleicht das Ergebnis mit der CPU:
python - <<'EOF'
import torch
a = torch.randn(4096, 4096)
b = torch.randn(4096, 4096)
gpu = (a.cuda() @ b.cuda()).cpu()
cpu = a @ b
print("Abweichung:", (gpu - cpu).abs().max().item())
print("cuDNN aktiv:", torch.backends.cudnn.is_available())
EOF
Während der Test läuft, zeigt nvidia-smi in einem zweiten Terminal den Python-Prozess mit belegtem Grafikspeicher. Für den Betrieb gilt: Treiber-Updates innerhalb des Zweigs spielen Sie mit sudo apt update && sudo apt full-upgrade ein und starten danach neu. Einen Wechsel des Treiberzweigs oder der PyTorch-Version planen Sie bewusst und testen ihn zuerst in einer neuen virtuellen Umgebung. Die Datei requirements-torch.txt aus Schritt 3 ist Ihr Rückweg.
Von PyTorch 2.14 auf 2.15: Laut Release Notes wechselt das Standardpaket auf PyPI von CUDA 13.0 auf CUDA 13.2, die Pakete für CUDA 12.6 und 13.0 entfallen, und für Python 3.10 gibt es keine Pakete mehr. Eine Umgebung mit cu126 oder cu130 bleibt deshalb bei 2.14. Zwei Änderungen betreffen auch eigenen Code: torch.load(..., weights_only=True) lädt verschachtelte Tensoren (Nested Tensors) nicht mehr ohne Freigabe, und importlib.reload(torch) bricht jetzt mit ImportError ab. Auflösungsprüfung am 29.10.2026 in einem Container mit Python 3.12: pip install torch torchvision wählte torch 2.15.0, torchvision 0.29.2, cuda-toolkit 13.2.2 und cuDNN 9.26.0.51, der Index cu134 torch 2.15.0, und der Index cu126 fand 2.15.0 nicht. Für Python 3.10 nennt pip index versions torch als neueste Version 2.14.1. Mit dem CPU-Paket liefen Import und Matrixmultiplikation, ein importlib.reload(torch) endete wie beschrieben mit ImportError.
Die ausgegebene Abweichung ist sehr klein (reine Rundungsunterschiede zwischen GPU und CPU), „cuDNN aktiv“ steht auf True, und nvidia-smi zeigte während des Laufs einen Python-Prozess.
Typische Fehler
„Torch not compiled with CUDA enabled“
In der Umgebung liegt ein CPU-Paket. Das passiert, wenn früher der Index /whl/cpu verwendet wurde oder ein anderes Paket PyTorch als CPU-Variante nachgezogen hat. torch.__version__ endet dann auf +cpu, torch.version.cuda ist None, und .cuda() bricht mit AssertionError: Torch not compiled with CUDA enabled ab. Lösung: pip uninstall torch torchvision und mit dem passenden Befehl aus Schritt 3 neu installieren.
torch.cuda.is_available() liefert False
Das Paket hat CUDA, findet aber keinen passenden Treiber. Prüfen Sie zuerst nvidia-smi. Ein Treiber unter Zweig 580 genügt nicht für die CUDA-13-Pakete; nehmen Sie dann PyTorch 2.14 mit dem Index cu126 oder aktualisieren Sie den Treiber.
nvidia-smi meldet „couldn't communicate with the NVIDIA driver“
Das Kernelmodul ist nicht geladen. Typische Ursachen sind ein fehlender Neustart, Secure Boot mit unsignierten DKMS-Modulen oder ein Kernel-Update ohne passende Module. lsmod | grep nvidia und sudo dmesg | grep -i nvidia zeigen den Grund.
„no kernel image is available for execution on the device“
Das PyTorch-Paket enthält keinen Code für Ihre GPU-Generation, etwa eine Pascal- oder Volta-Karte mit einem CUDA-13-Paket. Wechseln Sie auf den Index cu126 mit PyTorch 2.14.
nvcc zeigt eine andere Version als nvidia-smi
Das ist normal. nvidia-smi nennt die höchste CUDA-Version, die der Treiber unterstützt, nvcc die Version des installierten Toolkits. Anwendungen für CUDA 13.x laufen laut NVIDIA auf jedem Treiber ab 580; nur neue Funktionen von 13.4 benötigen den Zweig R615.
Häufige Fragen
Brauche ich das CUDA Toolkit, wenn ich nur PyTorch nutze?
Nein. Die CUDA-Pakete von PyTorch enthalten die Laufzeitbibliotheken. Erst wenn ein Paket bei der Installation CUDA-Code kompiliert, verlangt es nach nvcc.
Welche CUDA-Variante soll ich wählen?
Ab Turing die Standardvariante CUDA 13.2 von PyPI, die pip ohne weiteren Parameter installiert. CUDA 13.4 wählen Sie, wenn ein Werkzeug es ausdrücklich verlangt; laut NVIDIA brauchen neue Funktionen von 13.4 den Treiberzweig R615. CUDA 12.6 bleibt mit PyTorch 2.14 die Wahl für ältere Karten.
Funktioniert das unter WSL2?
Ja, mit einer Abweichung: Den Treiber installieren Sie ausschließlich unter Windows. NVIDIA schreibt ausdrücklich, dass in WSL kein Linux-Treiber installiert werden darf. Schritt 2 entfällt, die Schritte 3 bis 6 gelten unverändert.
Kann ich PyTorch auch per Docker betreiben?
Ja. Auf dem Host brauchen Sie dann nur den Treiber aus Schritt 2 und das NVIDIA Container Toolkit (aktuell 1.20.1); CUDA-Bibliotheken und cuDNN liegen im Container-Image.
Wie halte ich den Treiberzweig fest?
Beim Ubuntu-Archiv steckt der Zweig im Paketnamen (nvidia-driver-580-server), Updates bleiben im Zweig. Beim NVIDIA-Repository übernimmt das Paket nvidia-driver-pinning-<Zweig> diese Aufgabe.
Fazit
Die zuverlässigste CUDA-Umgebung ist die schlanke: ein Treiber aus genau einer Quelle, PyTorch in einer virtuellen Umgebung mit dem zur GPU passenden Paket, und Toolkit sowie cuDNN nur dort, wo tatsächlich kompiliert wird. Wer den Treiberzweig festhält, die PyTorch-Version in einer Datei notiert und Wechsel zuerst in einer neuen Umgebung testet, spielt Updates planbar ein. Ältere Karten bis Volta bleiben bei CUDA 12.6, alle neueren nutzen CUDA 13.
Weiterführende Anleitungen und Quellen
- GPU für lokale KI auswählen
- GPU-Passthrough in Proxmox einrichten
- QLoRA Fine-Tuning mit Unsloth auf einer Consumer-GPU
- Docker und Docker Compose auf Linux installieren
- PyTorch: Installationswähler
- PyTorch RELEASE.md mit Kompatibilitätsmatrix
- NVIDIA CUDA Toolkit Release Notes
- NVIDIA CUDA Installation Guide for Linux
- NVIDIA Driver Installation Guide
- Ubuntu Server: NVIDIA-Treiber installieren
- NVIDIA cuDNN: Installation unter Linux
- NVIDIA CUDA on WSL User Guide


