PyTorch ist eine quelloffene Softwarebibliothek für maschinelles Lernen, die aus der Forschung bei Meta hervorging und seit 2022 unter dem Dach der Linux Foundation geführt wird. Modelle werden darin als gewöhnliche Python-Programme geschrieben und lassen sich auf Grafikprozessoren ausführen.
Zusammenfassung
PyTorch verbindet zwei Ziele, die bei Frameworks lange als Gegensatz galten: leichte Bedienbarkeit und hohe Geschwindigkeit. Die Entwickelnden beschreiben diesen Anspruch in einem Aufsatz von 2019 selbst so: Der Programmierstil sei imperativ und pythonisch, das Debuggen einfach, die Ausführung dennoch effizient (Paszke u. a. 2019).
Als Ausgangspunkt gilt ein Forschungsprojekt bei Meta. Die Linux Foundation datiert die Veröffentlichung auf 2016 und nannte im September 2022 mehr als 2.400 Mitwirkende (Linux Foundation 2022). Im selben Monat wurde das Projekt an die neu gegründete PyTorch Foundation übergeben.
Entstehung und Programmiermodell
Das Gründungsdokument ist der Aufsatz PyTorch: An Imperative Style, High-Performance Deep Learning Library, auf der Konferenz NeurIPS 2019 vorgestellt. Er trägt 21 Verfasser:innen, darunter Adam Paszke, Sam Gross und Soumith Chintala (Paszke u. a. 2019).
Der Kern der Idee steht im Aufsatz selbst: Jeder Teil von PyTorch sei ein gewöhnliches Python-Programm, das vollständig unter der Kontrolle der Nutzenden bleibe (Paszke u. a. 2019). Ein Modell ist damit kein getrennt beschriebener Rechengraph, sondern Code, der Zeile für Zeile läuft und sich mit den üblichen Werkzeugen der Sprache untersuchen lässt.
Damit unterscheidet sich der Ansatz vom ursprünglichen Entwurf von TensorFlow, das zunächst einen statischen Berechnungsgraphen verlangte.
Funktionsweise
Die Daten liegen in mehrdimensionalen Feldern, den Tensoren. Aus den ausgeführten Rechenschritten ermittelt die Autograd-Komponente die Ableitungen, die das Training über Backpropagation benötigt (PyTorch-Team 2023). Das Framework unterstützt Hardwarebeschleuniger wie Grafikprozessoren (Paszke u. a. 2019).
Darauf bauen die Bibliotheken für Bild, Ton und Text auf. In der Veröffentlichung von PyTorch 2.0 sind etwa TorchVision, TorchAudio und TorchText genannt (PyTorch-Team 2023).
PyTorch 2.0
Am 15. März 2023 erschien PyTorch 2.0. Die Hauptneuerung heißt torch.compile: Sie wickelt ein Modell ein und liefert eine kompilierte Fassung zurück. Die Funktion ist optional, weshalb das Team die Version „zu 100 Prozent abwärtskompatibel“ nennt (PyTorch-Team 2023).
Vier Bausteine tragen die Funktion: TorchDynamo erfasst Programme, AOTAutograd erzeugt Rückwärtsberechnungen im Voraus, PrimTorch führt rund 2.000 Operatoren auf etwa 250 Grundoperatoren zurück, und TorchInductor erzeugt schnellen Code. Für Grafikprozessoren von Nvidia und AMD nutzt TorchInductor den Compiler Triton von OpenAI (PyTorch-Team 2023).
Nach Angaben des Teams funktionierte torch.compile bei 93 Prozent von 165 quelloffenen Modellen und lief im Mittel 20 Prozent schneller (Genauigkeit float32) beziehungsweise 36 Prozent schneller (gemischte Genauigkeit). Das sind Herstellerangaben, die hier nicht nachgemessen wurden.
Governance: die PyTorch Foundation
Am 12. September 2022 gab die Linux Foundation bekannt, dass PyTorch von Meta zu ihr wechselt und unter einer neuen PyTorch Foundation geführt wird. Gründungsmitglieder sind AMD, Amazon Web Services, Google Cloud, Meta, Microsoft Azure und Nvidia (Linux Foundation 2022).
Zum Geschäftsführer berief die Linux Foundation Ibrahim Haddad. Meta-Chef Mark Zuckerberg nannte als Kennzahl mehr als 150.000 auf dem Framework aufbauende Projekte bei GitHub (Linux Foundation 2022).
Bemerkenswert ist die Zusammensetzung: Mit AMD und Nvidia sitzen zwei konkurrierende Chiphersteller im Gründungsgremium, mit Google Cloud der Träger von TensorFlow und JAX. Google betonte bei der Ankündigung, weiter in beide zu investieren (Linux Foundation 2022).
Bedeutung
Die Liste der Gründungsmitglieder zeigt, dass große Anbieter von Rechenleistung und Cloud das Framework als gemeinsame Infrastruktur behandeln und nicht einem einzelnen Konzern überlassen wollen. Wie stark PyTorch in der Forschung gegenüber TensorFlow verbreitet ist, belegen die hier ausgewerteten Quellen nicht; für Zahlen wäre eine eigene Erhebung nötig.
Kritik
Neutralität mit Einschränkung. Die Foundation soll ein herstellerneutrales Dach sein; die Linux Foundation spricht von einem „diversen“ Leitungsgremium. Dessen Gründungsmitglieder sind jedoch ausnahmslos Unternehmen (Linux Foundation 2022).
Kompilierung ist noch nicht überall ausgereift. Die Veröffentlichung von 2.0 führt torch.compile mit dynamischen Formen als Prototyp und nennt dafür „viele Einschränkungen“, darunter fehlendes Training und bekannte Fehler im Compiler (PyTorch-Team 2023). Die Aussage gilt für den Stand März 2023, nicht für heutige Versionen.
Abhängigkeit von der Hardware. Nvidia beschreibt PyTorch als von Anfang an quelloffen mit „erstklassiger“ Unterstützung für die eigene Plattform (Linux Foundation 2022). AMD verweist bei der Gründung auf die eigene Software ROCm (Linux Foundation 2022). Wie gleichwertig die Unterstützung beider Hersteller in der Praxis ist, lässt sich aus den ausgewerteten Quellen nicht beurteilen.
Verwandte Begriffe
- CUDA – Nvidias Plattform, die PyTorch für Nvidia-Grafikprozessoren voraussetzt
- Deep Learning – das Verfahren, für das das Framework gebaut ist
- Grafikprozessor – Hardware, auf die PyTorch rechnet
- Tensor Processing Unit – Googles Spezialchip, für den TensorFlow ausgelegt ist
Quellenangaben
- Linux Foundation, 2022. Meta Transitions PyTorch to the Linux Foundation, Further Accelerating AI/ML Open Source Collaboration. Pressemitteilung, 12. September 2022. www.linuxfoundation.org/press/press-release/meta-transitions-pytorch-to-the-linux-foundation
- Paszke, Adam u. a., 2019. PyTorch: An Imperative Style, High-Performance Deep Learning Library. In: Advances in Neural Information Processing Systems 32 (NeurIPS 2019). arXiv: 1912.01703.
- PyTorch-Team, 2023. Our next generation release that is faster, more Pythonic and Dynamic as ever. PyTorch Blog, 15. März 2023. pytorch.org/blog/pytorch-2.0-release/