PyTorch ist ein Open-Source-Framework für Machine Learning (maschinelles Lernen) und basiert auf der Programmiersprache Python und der Bibliothek Torch. Entwickelt wurde es 2016 von einem Forscherteam für künstliche Intelligenz von Facebook, um die Effizienz der Entwicklung und Bereitstellung von Forschungsprototypen zu verbessern. PyTorch rechnet mit Tensoren, welche durch Grafikprozessoren (kurz GPU) beschleunigt werden. Es können über 200 verschiedene mathematische Operationen mit dem Framework genutzt werden.

Heute ist PyTorch eine der beliebtesten Plattformen für Forschungen im Bereich von Deep Learning und wird hauptsächlich für künstliche Intelligenz (KI), Datenwissenschaft und Forschung genutzt. PyTorch wird immer beliebter, weil sich damit vergleichsweise einfach Modelle für künstliche neuronale Netze (KNN) erstellen lassen. Und auch für Reinforcement Learning (bestärkendes Lernen) lässt sich PyTorch nutzen. Es kann bei GitHub kostenlos als Open Source heruntergeladen werden.

Was ist PyTorch Lightning?

PyTorch Lightning ist eine Open-Source-Bibliothek für Python und bietet eine High-Level-Schnittstelle für PyTorch. Der Schwerpunkt liegt auf Flexibilität und Leistung, um Forschern, Datenwissenschaftlern und Machine-Learning-Ingenieuren die Möglichkeit zu geben, passende und vor allem skalierbare ML-Systeme zu erstellen. PyTorch Lightning steht ebenfalls als Open Source zum Download bei GitHub bereit.

Was sind die Funktionen und Vorteile von PyTorch?

Dynamische Graphenberechnung

Das Netzwerkverhalten kann spontan geändert werden und es muss dafür nicht der komplette Code ausgeführt werden.

Automatische Differenzierung

Mittels Rückwärtsdurchläufe in neuronalen Netzen wird die Ableitung einer Funktion numerisch berechnet.

Benutzerfreundliche Oberfläche

Sie wird TorchScript genannt und macht das nahtlose Wechseln zwischen den Modi möglich. Es bietet Funktionalität, Geschwindigkeit, Flexibilität und Benutzerfreundlichkeit.

Python-Unterstützung

Da PyTorch auf Python basiert, ist es leicht zu erlernen und zu programmieren und es können alle mit Python kompatiblen Bibliotheken wie zum Beispiel NumPy oder SciPy genutzt werden. Außerdem ist ein unkompliziertes Debugging mit Python-Tools möglich.

Skalierbarkeit

Es findet auf wichtigen Cloud-Plattformen eine gute Unterstützung und ist somit gut zu skalieren.

Dataset und DataLoader

Es besteht die Möglichkeit, ein eigenes Dataset für PyTorch zu erstellen, um alle nötigen Daten zu speichern. Das Dataset wird mittels DataLoader verwaltet. Der DataLoader kann unter anderem die Daten durchlaufen, Batches verwalten und Daten transformieren.

Zusätzlich kann PyTorch Lernmodelle im Open Neural Network Exchange (ONNX) Standardformat exportieren und besitzt eine C++ Front-End-Schnittstellenoption.

Was sind Beispiele für die Anwendung von PyTorch?

  • Objekterkennung (object detection)
  • Segmentierung (semantic segmentation)
  • LSTM (Long Short-Term Memory, zu Deutsch: langes Kurzzeitgedächtnis)
  • Transformer

PyTorch vs. Tensorflow

Tensorflow ist ebenfalls ein Deep-Learning-Framework und wurde von Google entwickelt. Es existiert bereits länger als PyTorch und hat deswegen eine größere Entwickler-Community und mehr Dokumentation. Beide Frameworks haben ihre Vor- und Nachteile, da sie für unterschiedliche Projekte gedacht sind.

Während Tensorflow die Rechendiagramme auf statische Weise definiert, verfolgt PyTorch einen dynamischen Ansatz. Auch können die dynamischen Graphen bei PyTorch in Echtzeit manipuliert werden und bei Tensorflow nur am Ende. Daher eignet sich PyTorch durch seine einfache und leichte Handhabung besonders für eine unkomplizierte Erstellung von Prototypen und für Forschungsarbeiten. Tensorflow hingegen ist vor allem für Projekte geeignet, die skalierbare Produktionsmodelle benötigen.

PyTorch vs. scikit-learn

Scikit-learn (auch Sklearn genannt) ist eine freie Bibliothek für Python und ist auf Machine Learning (maschinelles Lernen) spezialisiert. Es bietet eine Reihe an Klassifikations-, Regressions- und Clustering-Algorithmen, wie zum Beispiel Random Forest, Support-Vektor-Maschinen oder k-means an. Scikit-learn bietet eine effiziente und unkomplizierte Datenanalyse und eignet sich besonders zum Definieren von Algorithmen, ist aber für ein End-to-End-Training tiefer neuronaler Netze eher ungeeignet, wofür hingegen PyTorch sehr gut genutzt werden kann.