Was ist PyTorch?
 
Entdecken sie watsonx.ai
Grafik, die einen Datenfluss darstellt

PyTorch ist ein softwarebasiertes Open-Source-Framework für Deep Learning, das zum Aufbau neuronaler Netze verwendet wird und die Backend-Bibliothek für maschinelles Lernen von Torch mit einer Python-basierten High-Level-API kombiniert. Seine Flexibilität und Benutzerfreundlichkeit haben es neben anderen Vorteilen zum führenden Framework für maschinelles Lernen für akademische und Forschungsgemeinschaften 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 Python 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 für KI-Training. Die watsonx-Plattform von IBM nutzt PyTorch, um einen unternehmenstauglichen Software-Stack für Modelle der künstlichen Intelligenz bereitzustellen, vom End-to-End-Training bis zur Feinabstimmung der Modelle.

Open Source @ IBM

Von Blockchain über Container und KI bis hin zu Betriebssystemen – und allem, was dazwischen liegt – erstellen unsere Entwickler neue Open-Source-Projekte und stellen Code, Dokumente und unterstützende Materialien zur Verfügung, damit Sie sich an der Innovation beteiligen können.

Ähnliche Inhalte

Newsletter von IBM abonnieren

Wie funktioniert PyTorch?

Die mathematische und programmiertechnische Struktur von PyTorch vereinfacht und rationalisiert 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 20221.

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

PyTorch verwendet Module als Bausteine für Deep Learning-Modelle, was die schnelle und unkomplizierte Konstruktion neuronaler Netze ohne die mühsame Arbeit der manuellen Codierung jedes Algorithmus ermöglicht.

 Module können – und tun dies häufig auch – andere verschachtelte Module enthalten. Dies ermöglicht nicht nur die Erstellung komplexer mehrschichtiger neuronaler Netze, sondern auch die einfache Speicherung dieser komplexen Deep Learning-Modelle als ein einziges benanntes Modul und die Übertragung zwischen verschiedenen Maschinen, CPUs oder GPUs. PyTorch-Modelle können mit Torchscript (Link befindet sich außerhalb von ibm.com)  sogar in Nicht-Python-Umgebungen wie C++ ausgeführt werden, um die Lücke zwischen Forschungsprototypen und Produktionseinsatz zu schließen.

Im Großen und Ganzen gibt es drei Hauptklassen von Modulen, die zur Erstellung und Optimierung von Deep Learning-Modellen in PyTorch verwendet werden:

  • 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 (Link befindet sich außerhalb von ibm.com)  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

 

PyTorch-Ökosystem

Die Kernfunktionen von PyTorch werden durch ein robustes Ökosystem aus Tools, Bibliotheken und Erweiterungen (Link befindet sich außerhalb von ibm.com)  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 Benutzer ihre PyTorch-Modelle einfach auf andere Plattformen übertragen können.

Entdecken Sie ONNX
Lernprogramme

Viele hilfreiche Tutorials sind auf PyTorch.org verfügbar. In diesem Tutorial für Fortgeschrittene (Link befindet sich außerhalb von ibm.com)  werden beispielsweise die Grundlagen des Deep Reinforcement Learning vermittelt, indem eine KI für das Spielen eines Videospiels trainiert wird.

Entdecken Sie die PyTorch-Tutorials
PyTorch installieren und ausführen

PyTorch kann in verschiedenen Konfigurationen sowohl auf lokalen Systemen als auch auf Cloud-Plattformen installiert und ausgeführt werden.

Die lokale Ausführung von PyTorch erfordert die Installation von Python mit dem Anaconda Package Manager, Homebrew (Link befindet sich außerhalb von ibm.com) oder der Python-Website (Link befindet sich außerhalb von ibm.com) .

PyTorch kann lokal über Anaconda (Link befindet sich außerhalb von ibm.com)   mit dem Befehl conda install pytorch torchvision -c pytorch oder über pip (Link befindet sich außerhalb von ibm.com)  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 bereitstellt2.

PyTorch kann auch auf Cloud-Plattformen wie Amazon Web Services, Google Cloud und Microsoft Azure ausgeführt werden.

Es wird empfohlen (ist jedoch nicht erforderlich), mit NVIDIA-GPUs zu arbeiten, um die Unterstützung von PyTorch für CUDA (Compute Unified Device Architecture) zu nutzen, die ein wesentlich schnelleres Training und eine wesentlich schnellere Leistung bietet, als sie von CPUs bereitgestellt werden können. 

Weiterführende Lösungen
watsonx.ai

Trainieren, prüfen, optimieren und implementieren Sie generative KI, Foundation Models und maschinelles Lernen problemlos und erstellen Sie KI-Anwendungen in einem Bruchteil der Zeit und zu einem Bruchteil der Daten.

watsonx.ai erkunden

KI-Beratungsleistungen

Stellen Sie sich vor, wie Sie mit KI arbeiten: Unser vielseitiges, globales Team von mehr als 20.000 KI-Experten kann Ihnen helfen, KI und Automatisierung in Ihrem Unternehmen schnell und sicher zu entwickeln und zu skalieren. Dabei arbeiten wir mit unserer eigenen IBM watsonx-Technologie und einem offenen Ökosystem von Partnern zusammen, um jedes KI-Modell in jeder Cloud bereitzustellen, geleitet von Ethik und Vertrauen.

Entdecken Sie die IBM KI-Beratungsleistungen

watsonx.data

Mit watsonx.data, dem branchenweit einzigen offenen, hybriden und kontrollierten Datenspeicher, skalieren Sie Analyse- und KI-Workloads für alle Ihre Daten – und das überall.

watsonx.data erkunden
PyTorch-Ressourcen Beginnen Sie mit maschinellem Lernen

Dieser Lernpfad richtet sich an alle, die sich schnell mit maschinellem Lernen vertraut machen möchten. Er enthält schrittweise Tutorials mit praktischen Demonstrationen, in denen Sie Modelle erstellen und sie in Apps verwenden.

Anleitung für Anfänger in Python

Wir stellen die grundlegenden Konzepte vor, die Sie kennen müssen, um mit dieser unkomplizierten Programmiersprache zu beginnen, von der Ausführung algebraischer Berechnungen bis zur Generierung grafischer Ausgaben aus Ihren Daten.

PyTorch: Ressourcen und Tools

Entdecken Sie Artikel, Forschungsergebnisse, Blogbeiträge, Tutorials und Videos, um Ihr Wissen über das PyTorch-Ökosystem zu erweitern.

Machen Sie den nächsten Schritt

Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelles Lernen mit Leichtigkeit und erstellen Sie KI-Anwendungen in einem Bruchteil der Zeit und mit einem Bruchteil der Daten mit IBM watsonx.ai, einem Unternehmensstudio der nächsten Generation für KI-Entwickler.

Kostenlosen Test starten Buchen Sie eine Live-Demo
Fußnoten

1 Octoverse 2022: Die besten Programmiersprachen, (Link befindet sich außerhalb von ibm.com)  Github, 17. November 2022
2 PyTorch: Erste Schritte – Lokal starten (Link befindet sich außerhalb von ibm.com)