Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

WBOY
WBOYnach vorne
2023-04-13 08:34:021024Durchsuche

Die offizielle Version von PyTorch 2.0 ist endlich da!

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Im vergangenen Dezember veröffentlichte die PyTorch Foundation auf der PyTorch-Konferenz 2022 die erste Vorschauversion von PyTorch 2.0.

Im Vergleich zur Vorgängerversion 1.0 hat 2.0 subversive Änderungen erfahren. In PyTorch 2.0 ist Torch.compile die größte Verbesserung.

Der neue Compiler kann Code im laufenden Betrieb viel schneller generieren als der standardmäßige „Eager-Modus“ in PyTorch 1.0, wodurch die Leistung von PyTorch weiter verbessert wird.

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Zusätzlich zu 2.0 wurde eine Reihe von Beta-Updates für PyTorch-Domänenbibliotheken veröffentlicht, einschließlich der Bibliotheken im Baum, sowie für eigenständige Bibliotheken wie TorchAudio, TorchVision und TorchText. Gleichzeitig werden auch Updates für TorchX veröffentlicht, um den Community-Supportmodus bereitzustellen.

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Zusammenfassung der Highlights

- Torch.compile ist die Haupt-API von PyTorch 2.0, sie umschließt das kompilierte Modell und gibt es zurück, Torch.compile ist also eine vollständig zusätzliche (und optionale) Funktion Die Version 2.0 ist 100 % abwärtskompatibel.

– Als zugrunde liegende Technologie von Torch.compile wird TorchInductor mit Nvidia- und AMD-GPUs auf den Deep-Learning-Compiler OpenAI Triton setzen, um leistungsstarken Code zu generieren und Hardwaredetails auf niedriger Ebene zu verbergen. Die Leistung der von OpenAI Triton generierten Kernel-Implementierungen ist vergleichbar mit handgeschriebenen Kerneln und spezialisierten CUDA-Bibliotheken wie Cublas.

– Accelerated Transformers führen leistungsstarke Unterstützung für Training und Inferenz ein und verwenden eine benutzerdefinierte Kernel-Architektur zur Implementierung von Scaled Dot Product Attention (SPDA). Die API ist in Torch.compile() integriert, und Modellentwickler können Scaled-Dot-Product-Attention-Kernel auch direkt verwenden, indem sie den neuen Scaled_dot_product_attention()-Operator aufrufen.

– Das Metal Performance Shaders (MPS)-Backend bietet GPU-beschleunigtes PyTorch-Training auf der Mac-Plattform und bietet Unterstützung für die 60 am häufigsten verwendeten Vorgänge, die mehr als 300 Operatoren abdecken.

– Amazon AWS optimiert die PyTorch-CPU-Inferenz auf C7g-Instanzen basierend auf AWS Graviton3. PyTorch 2.0 verbessert die Inferenzleistung von Graviton im Vergleich zu früheren Versionen, einschließlich Verbesserungen an Resnet50 und Bert.

– Neue Prototyping-Funktionen und -Techniken für TensorParallel, DTensor, 2D Parallel, TorchDynamo, AOTAutograd, PrimTorch und TorchInductor.

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Kompilieren, immer noch kompilieren!

​Zu den neuesten Compiler-Technologien von PyTorch 2.0 gehören: TorchDynamo, AOTAutograd, PrimTorch und TorchInductor. All dies wird in Python entwickelt, nicht in C++ (mit dem Python kompatibel ist).

Und es unterstützt auch dynamische Formen, die Vektoren unterschiedlicher Größe ohne Neukompilierung senden können. Es ist flexibel und leicht zu erlernen.

  • TorchDynamo​

Mit Hilfe von Python Frame Evaluation Hooks können PyTorch-Programme sicher abgerufen werden. Diese wichtige Innovation ist eine Zusammenfassung der Forschungs- und Entwicklungsergebnisse von PyTorch zur sicheren Diagrammerfassung (sichere Diagrammerfassung) in den letzten fünf Jahren.

  • AOTAutograd​

überlastet die PyTorch-Autograd-Engine als Tracing-Autodiff zum Generieren erweiterter Rückwärtsverfolgungen.

  • PrimTorch​

fasst über 2000 PyTorch-Operatoren in etwa 250 geschlossenen Sätzen primitiver Operatoren (geschlossene Sätze) zusammen. Entwickler können ein vollständiges PyTorch-Backend für diese Operatoren erstellen. PrimTorch vereinfacht das Schreiben von PyTorch-Funktionen oder Backends erheblich.

  • TorchInductor​

TorchInductor ist ein Deep-Learning-Compiler, der schnellen Code für mehrere Beschleuniger und Backends generieren kann. Für NVIDIA-GPUs wird OpenAI Triton als Schlüsselbaustein verwendet.

Die PyTorch Foundation sagte, dass die Einführung von 2.0 „die Rückkehr von C++ zu Python“ fördern werde, und fügte hinzu, dass es sich um einen PyTorch handele Wesentliche neue Wege. „Vom ersten Tag an kannten wir die Leistungsgrenzen einer eifrigen Ausführung. Im Juli 2017 starteten wir unser erstes Forschungsprojekt, die Entwicklung eines Compilers für PyTorch. Der Compiler muss dafür sorgen, dass PyTorch-Programme schnell ausgeführt werden, jedoch nicht auf Kosten der PyTorch-Erfahrung. Gleichzeitig muss die Flexibilität und Benutzerfreundlichkeit erhalten bleiben, damit Forscher dynamische Modelle und Programme in verschiedenen Phasen der Erforschung verwenden können. "

Natürlich verwendet der nicht kompilierte „Eager-Modus“ einen dynamischen Just-in-Time-Codegenerator und ist weiterhin verfügbar in 2.0. Entwickler können mit dem Befehl porch.compile schnell ein Upgrade auf den kompilierten Modus durchführen, indem sie nur eine Codezeile hinzufügen.

Benutzer können sehen, dass die Kompilierungszeit von 2.0 im Vergleich zu 1.0 um 43 % erhöht wurde.

Diese Daten stammen aus dem Benchmarking der PyTorch Foundation von 163 Open-Source-Modellen, die PyTorch 2.0 auf Nvidia A100-GPUs verwenden, einschließlich Aufgaben wie Bildklassifizierung, Zielerkennung, Bildgenerierung und verschiedene NLP-Aufgaben.

Diese Benchmarks sind in drei Kategorien unterteilt: HuggingFace Transformers, TIMM und TorchBench. #? Modelle

Laut der PyTorch Foundation läuft der neue Compiler 21 % schneller, wenn er den Float32-Präzisionsmodus und die automatische Mischung verwendet Die Geschwindigkeit wird im Präzisionsmodus (AMP) um 51 % erhöht.

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Von diesen 163 Modellen kann Torch.compile auf 93 % der Modelle normal ausgeführt werden.

„In der Roadmap von PyTorch 2.x hoffen wir, das Kompilierungsmodell in Bezug auf Leistung und Leistung immer weiter voranzutreiben Skalierbarkeit: Einige Arbeiten wurden noch nicht umgesetzt, da die Bandbreite nicht ausreicht.

2.0, und es ist auch ein Schwerpunkt, den die Entwickler großzügig gefördert haben.

Tatsächlich ist eines der Highlights der neuen Funktion Accelerated Transformers, früher bekannt als Better Transformers.

Darüber hinaus enthält die offizielle Version von PyTorch 2.0 eine neue leistungsstarke PyTorch TransformAPI-Implementierung. Eines der Ziele des PyTorch-Projekts besteht darin, das Training und den Einsatz modernster Transformatormodelle einfacher und schneller zu machen.

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Transformer sind die Basistechnologie, die dabei hilft, das moderne Zeitalter der generativen künstlichen Intelligenz zu verwirklichen, einschließlich OpenAI-Modellen wie GPT-3 und GPT- 4 .

In PyTorch 2.0 Accelerated Transformers wird eine benutzerdefinierte Kernelarchitektur verwendet ( (auch bekannt als Scaled Dot Product Attention SDPA) bietet leistungsstarke Unterstützung für Training und Inferenz.

Da es viele Arten von Hardware gibt, die Transformers unterstützen können, kann PyTorch 2.0 mehrere benutzerdefinierte SDPA-Kernel unterstützen. Um noch einen Schritt weiter zu gehen, integriert PyTorch eine benutzerdefinierte Kernel-Auswahllogik, die den leistungsstärksten Kernel für ein bestimmtes Modell und einen bestimmten Hardwaretyp auswählt.

Die Auswirkungen der Beschleunigung sind erheblich, da sie es Entwicklern ermöglicht, Modelle schneller zu trainieren als frühere Iterationen von PyTorch.

Die neue Version ermöglicht Hochleistungsunterstützung für Training und Inferenz, indem sie eine angepasste Kernel-Architektur für die Verarbeitung von Scaled Dot Product Attention (SPDA) verwendet und die Fast-Path-Architektur für Inferenz erweitert.

Ähnlich wie bei der Fastpath-Architektur ist der benutzerdefinierte Kernel vollständig in die PyTorch-Transformer-API integriert – daher ermöglicht die Verwendung des nativen Transformers und der MultiHeadAttention-API den Benutzern:

– deutliche Geschwindigkeitsverbesserungen zu sehen; ?? des Selbstaufmerksamkeitsmechanismus.

Um die Vorteile verschiedener Hardwaremodelle und Transformer-Anwendungsfälle voll auszuschöpfen, werden mehrere benutzerdefinierte SDPA-Kerne unterstützt, und die benutzerdefinierte Kernauswahllogik wählt den leistungsstärksten Kern für das jeweilige Modell und den Hardwaretyp aus.

Zusätzlich zur bestehenden Transformer-API können Entwickler den Aufmerksamkeitskernel für skalierte Punktprodukte direkt verwenden, indem sie den neuen Operator Scaled_dot_product_attention() aufrufen und so die Integration von PyTorch 2 Transformers mit Torch.compile() beschleunigen.

Um die zusätzliche Beschleunigung der PT2-Kompilierung (für Inferenz oder Training) während der Verwendung des Modells zu erhalten, können Sie model = Torch.compile(model) verwenden, um das Modell vorzuverarbeiten.

Derzeit wird eine Kombination aus benutzerdefinierten Kerneln und Torch.compile() verwendet, um eine erhebliche Beschleunigung beim Training von Transformer-Modellen zu erreichen, insbesondere bei großen Sprachmodellen mit dem beschleunigten PyTorch 2 Transformer.

Verwendung eines benutzerdefinierten Kernels und von Torch.compile, um das Training großer Sprachmodelle erheblich zu beschleunigen

Sylvain Gugger, der Hauptbetreuer von HuggingFace Transformers, schrieb in einer von PyTorch veröffentlichten Erklärung Projekt „Mit nur einer hinzugefügten Codezeile liefert PyTorch 2.0 eine 1,5- bis 2,0-fache Beschleunigung beim Training von Transformers-Modellen. Das ist das Aufregendste seit der Einführung des gemischten Präzisionstrainings!“ die beiden beliebtesten Deep-Learning-Frameworks. Tausende Institutionen auf der ganzen Welt nutzen PyTorch zur Entwicklung von Deep-Learning-Anwendungen, und die Nutzung nimmt zu.

Offizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel

Die Einführung von PyTorch 2.0 wird dazu beitragen, die Entwicklung von Anwendungen für Deep Learning und künstliche Intelligenz zu beschleunigen, sagte Luca Antiga, Chief Technology Officer von Lightning AI und einer der Hauptbetreuer von PyTorch Lightning:

„PyTorch 2.0 verkörpert die Zukunft von Deep-Learning-Frameworks. Die Fähigkeit, PyTorch-Programme ohne Benutzereingriff zu erfassen, sofort einsatzbereite Programmgenerierung und enorme Beschleunigung auf dem Gerät, eröffnet KI-Entwicklern völlig neue Möglichkeiten.“

Referenz:

https://www.php.cn/link/d6f84c02e2a54908d96f410083beb6e0

https://www.php.cn/link/89b9e0a6f6d15 05fe13dea0f18a2dcfa

https://www.php.cn/link/3b2acfe2e38102074656ed938abf4ac3


Das obige ist der detaillierte Inhalt vonOffizielle Version von PyTorch 2.0 veröffentlicht! Eine Codezeile beschleunigt sich um das Zweifache, 100 % abwärtskompatibel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen