Sofortantwort
PyTorch einfach erklärt
Flexibles Deep Learning Framework von Meta.
- Kurz gesagt
- Dynamische Computation Graphs – Code läuft wie normales Python
- Typischer Einsatz
- LLM-Training, Forschung, Computer Vision
- Wichtig zu wissen
- Starkes Ökosystem: Hugging Face, Lightning, torchvision, etc.
PyTorch im Überblick
PyTorch ist das dominante Deep-Learning-Framework in Forschung und zunehmend auch in der Produktion. Es wurde 2016 von Meta AI entwickelt und hat TensorFlow als meistgenutztes Framework in der Forschung abgelöst. Der entscheidende Vorteil: PyTorchs “define-by-run”-Ansatz (dynamischer Berechnungsgraph) macht Debugging intuitiv – man kann mit normalen Python-Debuggern arbeiten. Heute basieren die meisten großen Modelle – LLaMA, Stable Diffusion, Whisper – auf PyTorch.
PyTorch ist ein Deep Learning Framework, das sich wie normales Python anfühlt. Du schreibst Code, führst ihn aus, siehst sofort Ergebnisse – ohne vorher einen Graphen definieren zu müssen.
Warum ist PyTorch so beliebt?
# PyTorch fühlt sich natürlich an
import torch
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x ** 2
loss = y.sum()
loss.backward() # Gradienten automatisch berechnet!
print(x.grad) # tensor([2., 4., 6.])
Der Unterschied zu TensorFlow (früher):
- PyTorch: “Define-by-Run” – Code wird sofort ausgeführt, Debugging wie normales Python
- TensorFlow 1.x: “Define-and-Run” – erst Graph bauen, dann ausführen (komplizierter)
Heute hat TensorFlow mit Eager Execution aufgeholt, aber PyTorch bleibt der Favorit in der Forschung.
Technisch betrachtet
Kernkonzepte
| Konzept | Beschreibung |
|---|---|
| Tensor | N-dimensionales Array (wie NumPy, aber GPU-fähig) |
| Autograd | Automatische Gradientenberechnung |
| nn.Module | Basisklasse für neuronale Netze |
| DataLoader | Effizientes Laden und Batching von Daten |
| Optimizer | SGD, Adam, etc. für Gewichts-Updates |
Einfaches Neuronales Netz
import torch
import torch.nn as nn
class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = torch.relu(self.fc1(x))
return self.fc2(x)
model = SimpleNet()
optimizer = torch.optim.Adam(model.parameters())
loss_fn = nn.CrossEntropyLoss()
# Training Loop
for batch in dataloader:
optimizer.zero_grad()
output = model(batch.x)
loss = loss_fn(output, batch.y)
loss.backward()
optimizer.step()
PyTorch Ökosystem
PyTorch Core
├── torchvision (Computer Vision)
├── torchaudio (Audio)
├── torchtext (NLP)
├── PyTorch Lightning (High-Level Training)
├── Hugging Face Transformers (LLMs)
├── TorchServe (Model Serving)
└── ONNX (Modell-Export)