Startseite

Themen

PyTorch

Was ist PyTorch?
 
PyTorch mit watsonx.ai nutzen Abonnieren Sie KI-Updates
Illustration mit Collage aus Piktogrammen von Wolken, Kreisdiagramm, Diagrammpiktogrammen

Veröffentlicht: 23. November 2023
Mitwirkende: Dave Bergmann, Cole Stryker

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 von Architekturen für neuronale Netze, von einfachen linearen Regressionsalgorithmen über komplexe Convolutional Neural Networks (neuronale Faltungsnetze) bis hin zu generativen Transformatormodellen für Computer Vision und Verarbeitung natürlicher Sprache (NLP). PyTorch basiert auf der weit verbreiteten Programmiersprache Python und besitzt umfangreiche Bibliotheken mit vorkonfigurierten (und sogar vortrainierten) Modellen. Mit PyTorch können Data Scientists anspruchsvolle Deep-Learning-Netze erstellen und ausführen, die ihnen Einsparungen bei Zeit- und Arbeitsaufwand zum Programmieren und für mathematische Strukturen ermöglichen.

Außerdem können Data Scientists mit PyTorch Teile des Codes in Echtzeit ausführen und testen, anstatt auf die Implementierung des gesamten Codes zu warten – was bei großen Deep-Learning-Modellen sehr lange dauern kann. Dies macht PyTorch zu einer hervorragenden Plattform für das Rapid Prototyping und beschleunigt das Debugging.

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. Die watsonx-Plattform 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.

Presto kennenlernen und bedienen

Lesen Sie das kostenlose O'Reilly-E-Book, um zu erfahren, wie Sie mit Presto, der Open-Source-SQL-Engine für Datenanalysen, loslegen können.

Ähnliche Inhalte Registrieren Sie sich für das E-Book zu KI-Datenspeichern
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 mit zur Bildung einer stabilen Online-Community aus Python-Entwicklern geführt. Gemeinsam arbeiten sie an vielen Python-Bibliotheken und -APIs, beispielsweise Numerical Python (NumPy) für mathematische Operationen, Pandas zur Datenmanipulation oder matplotlib zur Datenvisualisierung sowie an Bildungsressourcen. Die Community hat auch eine Vielzahl von PyTorch-Bibliotheken erstellt, die das Programmieren von maschinellem Lernen weniger monoton und spekulativ machen. So können sich Entwickler und Data Scientists auf Innovationen statt das Schreiben von Routineaufgaben konzentrieren.

Tensoren

Algorithmen des maschinellen Lernens, auch die für vermeintlich nicht numerische Informationen wie Töne oder Bilder, benötigen Daten in numerischer Darstellung. PyTorch verwendet hierfür Tensoren als Grundeinheit der Berechnungsdaten auf der Plattform.

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 ndarrays in NumPy, die jedoch nur auf CPUs ausgeführt werden können. Tensoren hingegen sind auch auf Grafikprozessoren ausführbar. GPUs ermöglichen wesentlich schnellere Berechnungen als CPUs – ein großer Vorteil angesichts der riesigen Datenmengen und der für Deep Learning typischen parallelen Verarbeitung.

PyTorch-Tensoren kodieren die Ein- und Ausgaben eines Modells und seine Parameter: Gewichtungen, Verzerrungen und Gradienten, die beim maschinellen Lernen „erlernt“ werden. Diese Eigenschaft von Tensoren ermöglicht die automatische Differenzierung, eines der wichtigsten Merkmale von PyTorch.

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 – 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.

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

Deep-Learning-Modelle werden in PyTorch als dynamische Berechnunggraphen (Dynamic Computational Graph, DCG) dargestellt. Ein Berechnungsgraph bildet den Datenfluss zwischen den verschiedenen Operationen in einem mathematischen System ab. Beim Deep Learning übersetzen sie also quasi den Code eines neuronalen Netzes in ein Flussdiagramm, das die an jedem Knoten durchgeführten Operationen und die Abhängigkeiten zwischen den verschiedenen Netzebenen anzeigt – die Schritte und Abfolgen, aus denen Eingabe- zu Ausgabedaten werden.

Dynamische Berechnungsgraphen (wie die in PyTorch) und statische (wie in TensorFlow) unterscheiden sich dahingehend, dass DCGs die Berechnungen und die Beziehungen zwischen ihnen erst zur Laufzeit spezifizieren. Bei einem statischen Berechnungsgraphen muss also die Architektur des gesamten neuronalen Netzes vollständig festgelegt und kompiliert sein, bevor es ausgeführt werden kann. DCGs hingegen können 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 zur automatischen Differenzierung verwendet eine Formel aus der Analysis, die so genannte Kettenregel. Hierbei werden komplexe Ableitungen in einfachere Ableitungen aufgeteilt und später wieder zusammengesetzt. autograd berechnet und speichert Gradienten für alle Operationen in einem Berechnungsgraphen automatisch, was die Backpropagation viel weniger aufwändig macht.

Bei der Ausführung eines bereits trainierten Modells verbraucht autograd unnötig Rechenressourcen. requires_grad=False an eine Tensor-Operation anzuhängen, signalisiert PyTorch, keine Gradienten mehr nachzuverfolgen.

Datensätze und Datenlader

Die Arbeit mit den großen, zum Trainieren von Deep-Learning-Modellen notwendigen Datensätzen kann aufwändig und rechenintensiv sein. PyTorch besitzt zwei Datenprimitive, Datensätze und Datenlader, um das Laden von Daten zu vereinfachen 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 außerhalb von ibm.com) ergänzt, das von Mitgliedern der PyTorch-Community entwickelt wurde. Viele zusätzliche Open-Source-Bibliotheken mit zweckspezifischen Modulen, vorkonfigurierten neuronalen Netzen und sogar vortrainierten Modellen können die vorinstallierte Torch-Bibliothek ergänzen.

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. Dieses Tutorial für Fortgeschrittene (Link außerhalb von ibm.com) vermittelt beispielsweise die Grundlagen des Deep Reinforcement Learning, bei dem ein KI-Modell so trainiert wird, dass es ein Videospiel spielt.

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.

Um PyTorch lokal auszuführen, muss Python installiert werden. Verwenden Sie dazu entweder den Anaconda-Paketmanager, Homebrew (Link befindet sich außerhalb von ibm.com) oder die 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 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.

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 die Art und Weise, wie Sie mit KI arbeiten, neu vor: Unser vielfältiges, globales Team von mehr als 20.000 KI-Experten kann Ihnen dabei helfen, KI und Automatisierung in Ihrem Unternehmen schnell und sicher zu entwerfen und zu skalieren, indem es mit unserer eigenen IBM watsonx-Technologie und einem offenen Ökosystem von Partnern arbeitet, um jedes KI-Modell in jeder Cloud bereitzustellen, geleitet von Ethik und Vertrauen.

Entdecken Sie unsere 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 sollten, 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

Erkunden Sie Artikel, Forschungsergebnisse, Blogbeiträge, Tutorials und Videos, um mehr über das PyTorch-Ökosystem zu erfahren.

Machen Sie den nächsten Schritt

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.

watsonx.ai erkunden Buchen Sie eine Live-Demo
Fußnoten

1 Octoverse 2022: The top programming languages (Link außerhalb von ibm.com), Github, 17 November 2022
PyTorch: Get Started – Start Locally (Link außerhalb von ibm.com)