Mein IBM Anmelden Abonnieren

Was ist PyTorch?

4. Oktober 2023 

Autoren

Dave Bergmann

Senior Writer, AI Models

IBM

Cole Stryker

Editorial Lead, AI Models

Was ist PyTorch?

PyTorch ist ein softwarebasiertes Open-Source-Framework für Deep Learning. Es kommt beim Aufbau neuronaler Netze zum Einsatz, da es die Torch-Bibliothek für maschinelles Lernen (ML) mit einer allgemeinen Python-basierten API kombiniert. Seine Flexibilität und Benutzerfreundlichkeit haben es neben anderen Vorteilen zum führenden ML-Framework in Wissenschaft und Lehre gemacht.

PyTorch unterstützt eine Vielzahl neuronaler Netzwerkarchitekturen, von einfachen linearen Regressionsalgorithmen bis hin zu komplexen konvolutionalen neuronalen Netzwerken und generativen Transformatormodellen, die für Aufgaben wie Computer Vision und Natürliche Sprachverarbeitung (NLP) verwendet werden. PyTorch basiert auf der weit verbreiteten Programmiersprache Python und bietet umfangreiche Bibliotheken mit vorkonfigurierten (und sogar vortrainierten) Modellen. Mit PyTorch können Data Scientists anspruchsvolle Deep Learning-Netzwerke erstellen und ausführen und dabei den Zeit- und Arbeitsaufwand für Code und mathematische Strukturen minimieren.

Mit PyTorch können Data Scientists auch Teile des Codes in Echtzeit ausführen und testen, anstatt darauf zu warten, dass der gesamte Code implementiert wird – was bei großen Deep Learning-Modellen sehr lange dauern kann. Dies macht PyTorch zu einer hervorragenden Plattform für Rapid Prototyping und beschleunigt zudem den Debugging-Prozess erheblich.

Ursprünglich von Facebook AI Research (jetzt Meta) entwickelt, wurde PyTorch 2017 Open Source gemacht und steht seit 2022 unter der Obhut der PyTorch Foundation (die Teil der größeren Linux Foundation ist). Die Stiftung dient der Deep-Learning-Community als neutraler Raum für die Zusammenarbeit bei der Weiterentwicklung des PyTorch-Ökosystems.

Im Jahr 2023 wurde IBM ein führendes Mitglied der PyTorch Foundation und hat bereits an zwei wichtigen Projekten mitgewirkt: effizienteres Training von flexiblen KI Foundation Models mit Milliarden von Parametern und wesentlich kostengünstigeres Checkpointing beim KI-Training. Das watsonx-Portfolio von IBM nutzt PyTorch, um einen Software-Stack der Enterprise-Klasse für KI Foundation Models bereitzustellen, vom End-to-End-Training bis hin zur Feinabstimmung der Modelle.

3D-Design aus Kugeln, die auf einer Schiene rollen

Die neuesten Erkenntnisse und Insights zu KI

Entdecken Sie von Experten kuratierte Erkenntnisse und Neuigkeiten zu KI, Cloud und mehr im wöchentlichen Newsletter Think. 

Wie funktioniert PyTorch?

Die mathematische und programmiertechnische Struktur von PyTorch vereinfacht und optimiert die Workflows des maschinellen Lernens, ohne die Komplexität oder Leistung von tiefen neuronalen Netzen einzuschränken.

Python

Python ist eine in der Datenwissenschaft weit verbreitete Universalprogrammiersprache, die sich für Data Scientists, die ihre Arbeit auf die aktive Modellierung von Deep-Learning-Netzwerken ausweiten wollen, intuitiv anbietet. Die einfache Syntax von Python ist leicht zu lesen, man braucht relativ wenig Zeit, um sie zu erlernen, und sie kann auf jedem Betriebssystem laufen, einschließlich Windows, macOS, Linux oder Unix. Python ist seit über drei Jahren die am zweithäufigsten verwendete Programmiersprache auf GitHub und hat 2019 Java überholt. Die Popularität nimmt weiter zu, mit einem Anstieg von 22,5 Prozent im Jahr 2022.1

Diese Flexibilität und Einfachheit hat dazu beigetragen, eine robuste Online-Gemeinschaft von Python-Entwicklern zu fördern, die gemeinsam an einer Vielzahl von Python-Bibliotheken und APIs – wie Numerical Python (NumPy) für mathematische Operationen, Pandas für die Datenmanipulation oder matplotlib für die Datenvisualisierung – sowie an Bildungsressourcen arbeiten. Diese Gemeinschaft hat auch eine große Anzahl von Pytorch-Bibliotheken hervorgebracht, die die Monotonie und das Rätselraten bei der Programmierung von maschinellem Lernen verringern und Entwicklern und Data Scientists die Möglichkeit geben, sich auf Innovationen zu konzentrieren, anstatt Aufgaben auswendig zu schreiben.

Tensoren

Bei allen Algorithmen des maschinellen Lernens, auch bei denen, die auf scheinbar nicht numerische Informationen wie Töne oder Bilder angewendet werden, müssen die Daten numerisch dargestellt werden. In PyTorch wird dies durch Tensoren erreicht, die als grundlegende Dateneinheiten für die Berechnung auf der Plattform dienen.

Im Kontext des maschinellen Lernens ist ein Tensor eine mehrdimensionale Anordnung von Zahlen, die wie eine mathematische Buchführung funktioniert. Linguistisch gesehen fungiert „Tensor“ als Oberbegriff, der einige bekanntere mathematische Einheiten umfasst:

  • Ein Skalar ist ein nulldimensionaler Tensor, der eine einzelne Zahl enthält.

  • Ein Vektor ist ein eindimensionaler Sensor, der mehrere Skalare desselben Typs enthält. Ein Tupel ist ein eindimensionaler Sensor, der verschiedene Datentypen enthält.

  • Eine Matrix ist ein zweidimensionaler Sensor, der mehrere Vektoren desselben Typs enthält.

  • Tensoren mit drei oder mehr Dimensionen, wie die dreidimensionalen Tensoren, die zur Darstellung von RGB-Bildern in Computer-Vision-Algorithmen verwendet werden, werden kollektiv als N-dimensionale Tensoren bezeichnet.

PyTorch-Tensoren funktionieren ähnlich wie die in Numpy verwendeten ndarrays – aber im Gegensatz zu Ndarrays, die nur auf Zentralprozessoren (CPUs) ausgeführt werden können, können Tensoren auch auf Grafikprozessoren (GPUs) ausgeführt werden. GPUs ermöglichen wesentlich schnellere Berechnungen als CPUs, was angesichts der riesigen Datenmengen und der parallelen Verarbeitung, die für Deep Learning typisch sind, ein großer Vorteil ist.

Zusätzlich zur Kodierung der Eingaben und Ausgaben eines Modells kodieren PyTorch-Tensoren auch Modellparameter: die Gewichte, Verzerrungen und Gradienten, die beim maschinellen Lernen „gelernt“ werden. Diese Eigenschaft von Tensoren ermöglicht die automatische Differenzierung, was eine der wichtigsten Funktionen von PyTorch ist.

Module

Als Bausteine für Deep-Learning-Modelle verwendet PyTorch Module, mit denen neuronale Netze schnell und unkompliziert erstellt werden, ohne jeden Algorithmus mühsam von Hand zu programmieren.

 Module können andere verschachtelte Module enthalten. Dadurch können nicht nur komplexe, mehrschichtige neuronale Netze erstellt, sondern diese komplexen Deep-Learning-Modelle auch einfach als einzelnes benanntes Modul gespeichert und zwischen verschiedenen Computern, CPUs oder GPUs übertragen werden. PyTorch-Modelle können mit Torchscript sogar in Nicht-Python-Umgebungen wie C++ ausgeführt werden, um die Lücke zwischen Forschungsprototypen und Produktionseinsatz zu schließen.

Vereinfacht gesagt, gibt es drei Hauptklassen von Modulen zur Erstellung und Optimierung von Deep-Learning-Modellen in PyTorch:

  • nn-Module werden als Layer eines neuronalen Netzwerks bereitgestellt. Das Paket torch.nn enthält eine große Bibliothek von Modulen, die allgemeine Operationen wie Convolutions, Pooling und Regression ausführen. Torch.nn.Linear (n, m) ruft beispielsweise einen linearen Regressionsalgorithmus mit n Eingaben und m Ausgängen auf (deren anfängliche Eingaben und Parameter dann in nachfolgenden Codezeilen festgelegt werden).

  • Das Modul Autograd bietet eine einfache Möglichkeit zur automatischen Berechnung von Gradienten, die zur Optimierung von Modellparametern mittels Gradientenabstieg verwendet werden, für jede Funktion, die in einem neuronalen Netz betrieben wird. Das Anhängen eines beliebigen Tensors mit requires_grad=TRUE signalisiert dem Autograd, dass jede Operation an diesem Tensor verfolgt werden sollte, was eine automatische Differenzierung ermöglicht.

  • Optim-Module wenden Optimierungsalgorithmen auf diese Gradienten an. Torch.optim bietet Module für verschiedene Optimierungsmethoden, wie stochastischer Gradientenabstieg (SGD) oder quadratische Mittelwertausbreitung (RMSprop), um spezifischen Optimierungsanforderungen gerecht zu werden.

Dynamische Berechnungsdiagramme

Mithilfe dynamischer Berechnungsdiagramme (DCGs) werden Deep Learning-Modelle in PyTorch dargestellt. Abstrakt gesprochen bilden Berechnungsgraphen den Datenfluss zwischen den verschiedenen Operationen in einem mathematischen System ab: Im Kontext des Deep Learning übersetzen sie im Wesentlichen den Code eines neuronalen Netzes in ein Flussdiagramm, das die an jedem Knoten durchgeführten Operationen und die Abhängigkeiten zwischen den verschiedenen Schichten im Netz anzeigt – die Anordnung der Schritte und Sequenzen, die Eingabedaten in Ausgabedaten umwandeln.

Was dynamische Berechnungsgraphen (wie die in PyTorch verwendeten) von statischen Berechnungsgraphen (wie die in TensorFlow verwendeten) unterscheidet, ist, dass DCGs die genaue Spezifikation von Berechnungen und Beziehungen zwischen ihnen auf die Laufzeit verschieben. Mit anderen Worten: Während bei einem statischen Berechnungsgraphen die Architektur des gesamten neuronalen Netzes vollständig festgelegt und kompiliert werden muss, um ausgeführt werden zu können, können DCGs iteriert und im laufenden Betrieb geändert werden.

Dies macht DCGs besonders nützlich für Debugging und Prototyping, da bestimmte Teile des Modellcodes geändert oder isoliert ausgeführt werden können, ohne dass das gesamte Modell zurückgesetzt werden muss – was bei den sehr großen Deep Learning-Modellen, die für anspruchsvolle Computer Vision- und NLP-Aufgaben verwendet werden, eine Verschwendung von Zeit und Rechenressourcen darstellen kann. Die Vorteile dieser Flexibilität erstrecken sich auch auf die Modellschulung, da dynamische Berechnungsgraphen während der Backpropagation leicht in umgekehrter Richtung erzeugt werden können.

Während ihre feste Struktur eine höhere Recheneffizienz ermöglichen kann, verfügen statische Rechendiagramme über eine begrenzte Flexibilität: Beispielsweise können sie ein Modell erstellen, das abhängig von den Eingabedaten eine unterschiedliche Anzahl von Schichten verwendet – wie ein Convolutional Neural Network (CNN), das Bilder unterschiedlicher Größen verarbeiten kann – ist bei statischen Diagrammen sehr schwierig.

Automatische Differenzierung

Eine weit verbreitete Methode zum Training neuronaler Netze, insbesondere beim überwachten Lernen, ist die Backpropagation. Zunächst erhält ein Modell in einem Vorwärtsdurchlauf einige Eingaben (x) und prognostiziert einige Ausgaben (y); ausgehend von dieser Ausgabe wird eine Verlustfunktion verwendet, um den Fehler der Vorhersagen des Modells bei verschiedenen Werten von x zu messen. Durch Differenzieren dieser Verlustfunktion, um ihre Ableitung zu finden, kann der Gradientenabstieg verwendet werden, um die Gewichte im neuronalen Netz Schicht für Schicht anzupassen.

Das Autograd-Modul von PyTorch nutzt für die automatische Differenzierung eine Formel aus der Infinitesimalrechnung, die so genannte Kettenregel, mit der komplexe Ableitungen durch Aufspaltung in einfachere Ableitungen berechnet und später kombiniert werden. Autograd berechnet und speichert automatisch Gradienten für alle Operationen, die in einem Berechnungsgraphen ausgeführt werden, und reduziert so den Arbeitsaufwand der Backpropagation erheblich. 

Beim Ausführen eines Modells, das bereits trainiert wurde, wird Autograd zu einem unnötigen Verbrauch von Rechenressourcen. Das Anhängen einer beliebigen Tensoroperation an requires_grad=False signalisiert PyTorch, die Verfolgung von Gradienten zu beenden.

Datensätze und Datenlader

Die Arbeit mit den großen Datensätzen, die zum Trainieren von Deep Learning-Modellen erforderlich sind, kann komplex und rechenintensiv sein. PyTorch bietet zwei Datenprimitive, Datensätze und Datenlader, um das Laden von Daten zu erleichtern und den Code leichter lesbar zu machen.

  • torch.utils.data.Dataset speichert Datenproben und deren entsprechende Beschriftungen
  • torch.utils.data.Dataloader umschließt den Datensatz – ein Objekt, mit dem gearbeitet werden kann – um den Datensatz zu umschließen, um einen einfachen Zugriff auf Stichproben zu ermöglichen
Mixture of Experts | 25. April, Folge 52

KI entschlüsseln: Wöchentlicher Nachrichtenüberblick

Schließen Sie sich unserer erstklassigen Expertenrunde aus Ingenieuren, Forschern, Produktführern und anderen an, die sich durch das KI-Rauschen kämpfen, um Ihnen die neuesten KI-Nachrichten und Erkenntnisse zu liefern.

PyTorch-Ökosystem

Die Kernfunktionen von PyTorch werden durch ein robustes Ökosystem aus Tools, Bibliotheken und Erweiterungen ergänzt, das von Mitgliedern der PyTorch-Community entwickelt wurde. Viele zusätzliche Open-Source-Bibliotheken, die zweckspezifische Module, vorkonfigurierte neuronale Netzwerke und sogar vorab geschulte Modelle enthalten, stehen zur Ergänzung der vorinstallierten Torch-Bibliothek zur Verfügung.

Torchvision

Torchvision ist ein Toolkit mit Modulen, Netzwerkarchitekturen und Datensätzen für verschiedene Bildklassifizierungen, Objekterkennung und Bildsegmentierungsaufgaben.

Entdecken Sie Torchvision
TorchText

TorchText bietet Ressourcen wie Datensätze, grundlegende Textverarbeitungstransformationen und vortrainierte Modelle für den Einsatz in NLP.

Entdecken Sie TorchText
Open Neural Network Exchange

Der Open Neural Network Exchange (ONNX) gewährleistet die Interoperabilität zwischen KI-Frameworks, sodass PyTorch-Modelle einfach auf andere Plattformen übertragen werden können.

Entdecken Sie ONNX
Lernprogramme

Auf PyTorch.org sind viele nützliche Tutorials verfügbar. In diesem Tutorial für Fortgeschrittene werden beispielsweise die Grundlagen des Deep Reinforcement Learning vermittelt, indem eine KI für das Spielen eines Videospiels trainiert wird.

PyTorch-Tutorials erkunden

Installation und Ausführung von PyTorch

PyTorch kann in verschiedenen Konfigurationen sowohl lokal als auch in der Cloud installiert und ausgeführt werden.

Die lokale Ausführung von PyTorch erfordert die Installation von Python mit dem Anaconda Package Manager, Homebrew oder der Python-Website.

PyTorch kann lokal über Anaconda mit dem Befehl conda install pytorch torchvision -c pytorch oder über pip mit dem Befehl pip3 install torch torchvision installiert werden. Anaconda wird empfohlen, da es alle PyTorch-Abhängigkeiten (einschließlich Python) in einer Sandbox-Installation bereitstellt.2

Cloud-Plattformen wie Amazon Web Services, Google Cloud und Microsoft Azure können PyTorch ausführen.

Empfohlen, aber nicht erforderlich, wird die Verwendung von NVIDIA-GPUs, da PyTorch CUDA (Compute Unified Device Architecture) unterstützt. Diese Architektur ermöglicht ein deutlich schnelleres Training und eine höhere Leistung der Modelle als mit CPUs.

Weitere Lösungen

Weitere Lösungen

IBM watsonx.ai

Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelle Lernfunktionen mit IBM watsonx.ai, einem Studio der nächsten Generation für AI Builder in Unternehmen. Erstellen Sie KI-Anwendungen mit einem Bruchteil der Zeit und Daten.

Entdecken sie watsonx.ai
Lösungen im Bereich künstlicher Intelligenz

Setzen Sie KI in Ihrem Unternehmen ein
– mit branchenführendem Fachwissen im Bereich KI und dem umfassenden Lösungsportfolio von IBM an Ihrer Seite.

Erkunden Sie KI-Lösungen
KI-Beratung und -Services

Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.

KI-Services entdecken
Machen Sie den nächsten Schritt

Profitieren Sie von einem einheitlichen Zugriff auf Funktionen, die den gesamten Lebenszyklus der KI-Entwicklung abdecken. Erstellen Sie leistungsstarke KI-Lösungen mit benutzerfreundlichen Oberflächen, Workflows und Zugriff auf branchenübliche APIs und SDKs.

watsonx.ai erkunden Live-Demo buchen