PyTorch
PyTorch ist ein Open-Source-Framework für Python, mit dem sich neuronale Netze mithilfe von GPU-Tensoren und Autograd erstellen und trainieren lassen. Die wichtigsten Konzepte und der Weg zur Bereitstellung.
PyTorch ist ein Open-Source-Framework zum Erstellen, Trainieren und Bereitstellen von neuronalen Netzen in Python. Es bietet GPU-beschleunigte Tensoren, automatische Differentiation sowie eine Bibliothek mit Layern, Optimierern und Verlustfunktionen. Der Code wird unmittelbar Zeile für Zeile ausgeführt, sodass sich Modelle wie gewöhnliche Python-Programme schreiben und debuggen lassen. PyTorch wurde bei Facebook AI Research entwickelt, heute Meta AI, und wird seit 2022 von der herstellerneutralen PyTorch Foundation unter der Linux Foundation verwaltet. Das Framework wird breit für Deep-Learning-Forschung und Produktionsmodelle in den Bereichen Computer Vision und Sprachverarbeitung eingesetzt.
Grundlegende Konzepte#
- Tensoren: mehrdimensionale Arrays wie NumPy-Arrays, die auf einer CPU oder einem Beschleuniger liegen können. PyTorch unterstützt NVIDIA-GPUs über CUDA, AMD-GPUs über ROCm und Apple-Chips über Metal (MPS). Um Daten zwischen ihnen zu verschieben, genügt ein Aufruf von
.to(device). - Autograd: Während Tensoroperationen ausgeführt werden, zeichnet PyTorch sie in einem Berechnungsgraphen auf. Der Aufruf von
.backward()durchläuft diesen Graphen rückwärts und berechnet den Gradienten der Ausgabe in Bezug auf jeden Tensor, für den ein Gradient benötigt wird. Das ist der Rückpropagierungsschritt beim Training. - Direkte Ausführung: Der Graph wird bei jedem Vorwärtsdurchlauf neu erstellt. Dadurch können Modelle Python-Schleifen, Bedingungen und print-Anweisungen verwenden, und Fehlermeldungen verweisen auf die genaue Zeile, in der der Fehler aufgetreten ist.
- Module und Optimierer:
torch.nnstellt Layer wie Faltungen, Attention und Normalisierung bereit.torch.optimstellt Optimierer wie SGD und Adam bereit, die Gewichte anhand der berechneten Gradienten aktualisieren. - torch.compile: Diese Funktion wurde mit PyTorch 2.0 eingeführt. Sie erfasst das direkt ausgeführte Programm als Graphen und erzeugt fusionierte Kernel. Dadurch lassen sich Training und Inferenz oft beschleunigen, ohne den Modellcode zu ändern.
Das folgende Beispiel führt eine kleine Berechnung auf einer GPU aus, sofern eine verfügbar ist, und lässt Autograd den Gradienten berechnen:
import torch
# Use a GPU when PyTorch can see one, otherwise fall back to the CPU
device = "cuda" if torch.cuda.is_available() else "cpu"
# Tensors record the operations applied to them when requires_grad=True
w = torch.tensor([2.0, -1.0], device=device, requires_grad=True)
x = torch.tensor([3.0, 4.0], device=device)
# Ordinary Python runs eagerly: each line executes immediately
loss = (w * x).sum() ** 2
# Autograd walks the recorded graph backward to get d(loss)/dw
loss.backward()
print(f"device={device}, loss={loss.item()}, grad={w.grad.tolist()}")Auf einem Rechner ohne GPU gibt das Skript device=cpu, loss=4.0, grad=[12.0, 16.0] aus. Der Verlust beträgt (2·3 − 1·4)² = 4, und Autograd berechnet die Ableitung 2·(w·x)·x = [12, 16], ohne dass dafür von Hand gerechnet werden muss. Derselbe Mechanismus trainiert Netzwerke mit Milliarden von Gewichten.
PyTorch im Vergleich zu anderen Tools#
- TensorFlow: Das Framework von Google verwendete statische Graphen, bevor es sie ausführte, bis TensorFlow 2 die direkte Ausführung zum Standard machte. TensorFlow wird weiterhin häufig in Produktionssystemen eingesetzt, die auf Keras und Googles Bereitstellungstools basieren.
- JAX: Googles numerische Bibliothek transformiert reine Python-Funktionen mit kombinierbaren Operationen wie
grad,jitundvmap, die über XLA kompiliert werden. Sie ist für groß angelegte Forschung auf TPUs beliebt. - OpenCV: Eine Bibliothek für Computer Vision zum Einlesen, Transformieren und Analysieren von Bildern mit klassischen Algorithmen. In Verarbeitungspipelines wird OpenCV häufig zum Laden und Vorverarbeiten von Einzelbildern verwendet, bevor ein PyTorch-Modell sie verarbeitet.
- Hugging Face: Eine Hub-Plattform und eine Reihe von Bibliotheken, die größtenteils auf PyTorch basieren. Die Transformers-Bibliothek stellt vortrainierte Sprach- und Bildverarbeitungsmodelle als PyTorch-Module bereit.
Von der Forschung zur Bereitstellung#
Ein trainiertes PyTorch-Modell wird als Checkpoint gespeichert, meist als Datei .pt oder .pth, die die Gewichte enthält. Es kann unverändert in einem Python-Dienst ausgeführt werden. Edge-Geräte und optimierte Server benötigen jedoch meist eine Konvertierung in eine für ihre Hardware ausgelegte Laufzeitumgebung:
Ultralytics YOLO26 ist in PyTorch geschrieben: yolo26n.pt ist ein PyTorch-Checkpoint, das Training verwendet PyTorchs Autograd und Optimierer, und model.export() konvertiert das Modell in diese Bereitstellungsformate, darunter ONNX, TensorRT, OpenVINO, Core ML und LiteRT.










