Now Reading
Machine Learning: PyTorch 2.0 wird beschleunigen und sich aufwärts Pythonschlange besinnen

Machine Learning: PyTorch 2.0 wird beschleunigen und sich aufwärts Pythonschlange besinnen

Machine Learning: PyTorch 2.0 wird beschleunigen und sich auf Python besinnen

[ad_1]

Im Rahmen jener PyTorch Conference hat dies Entwicklungsteam Einzelheiten zur anstehenden Version PyTorch 2.0 bekanntgegeben. Sie liegt in den aktuellen Nightly Builds vor und fokussiert sich aufwärts dies neue Feature torch.compile, dies dies Kompilierverhalten zugunsten einer erhöhten Tempo verändern soll und dessen Komponenten in Pythonschlange geschrieben sind. Derbei soll dies quelloffene Machine-Learning-Framework trotz des Sprungs in jener Versionsnummer abwärtskompatibel bleiben.

PyTorch 2.0 bringt in jener Nightly-Version den neuen experimentellen Kompiliermodus torch.compile mit, jener die Performance spürbar beschleunigen soll und den ersten Schritttempo jener Wanderung von Bestandteilen des Frameworks von Kohlenstoff++ zurück zu Pythonschlange markiert. Aufgrund dieser richtungsweisenden Umbruch wird somit Version 2.0 aufwärts die aktuelle Version 1.13 hinterher gehen. Neben dem optional einsetzbaren neuen Kompiliermodus wird in PyTorch 2.0 ebenso weiterhin die bekannte Eager Execution verwendbar sein, weshalb die Version vollwertig abwärtskompatibel sein soll.

Hinter torch.compile stecken die in Pythonschlange geschriebenen Technologien TorchDynamo, AOTAutograd, PrimTorch und TorchInductor. TorchDynamo dient dem Generieren von FX-Graphen mit von Bytecode-Schlussbetrachtung, während AOTAutograd Backward-Graphen ahead-of-time generiert. PrimTorch bringt ein kleines Set an Operatoren zum Vereinfachen von Backends und TorchInductor ist ein Deep-Learning-Compiler, hinterm Triton steckt – eine von OpenAI entwickelte Programmiersprache, die aufwärts Deep Learning ausgelegt und für jedes GPUs optimiert ist.

Aufwärts seiner Website geht dies PyTorch-Team aufwärts die Gründe jener Wanderung zunächst zu Kohlenstoff++ und nun wieder zu Pythonschlange ein. So seien seit dieser Zeit jener Veröffentlichung von PyTorch im Jahr 2017 Hardwarebeschleuniger wie GPUs etwa 15-mal schneller im Rechen- und etwa zweifach so schnell im Speicherzugriff geworden. Um eine hohe Performance jener Eager Execution beizubehalten, mussten wichtige Teile von PyTorch zu Kohlenstoff++ wechseln, welches schon eine höhere Hürde für jedes dies Hinzufügen am Quellcode darstelle.

Messungen des PyTorch-Teams zufolge funktioniert torch.compile nebst 93 v. H. von 163 getesteten Open-Source-Modellen – aus verschiedenen Bereichen wie Vision und Natural Language Processing (NLP) – und läuft aufwärts einer Nvidia-A100-Graphics Processing Unit beim Training zwischen 38 und 76 v. H. schneller qua jener Eager Mode. Derbei handelt es sich um 46 Modelle von HuggingFace Transformers, 61 Modelle von TIMM und 56 Modelle von TorchBench.

Speedup-Zeiten für jedes torch.compile verglichen mit dem Eager Mode aufwärts einer Nvidia-A100-Graphics Processing Unit

(Grafik: The Linux Foundation)

Sehr wohl fiel dem PyTorch-Team aufwärts, dass die Speed-ups nebst Desktop-Class-GPUs wie Nvidia 3090 weniger bedeutend waren qua nebst Server-Class-GPUs wie Nvidia A100. Dasjenige Standard-Backend TorchInductor kann derzeit mit CPUs und Nvidias Volta- und Ampere-GPUs umgehen. Weitere GPUs, xPUs oder ältere Nvidia-GPUs werden (noch) nicht unterstützt.

torch.compile lässt sich nachdem dem Installieren eines PyTorch Nightly Builds ausprobieren. Die neue Prozedur wrappt ein Vorbild und gibt ein kompiliertes Vorbild zurück:

compiled_model = torch.compile(model)

Dasjenige PyTorch-Team zeigt den Kapitaleinsatz von torch.compile mit des Kompilierens und Explizieren eines echten Modells mit zufälligen Fakten. Dasjenige erste Explizieren von compiled_model(x) kompiliert dies Vorbild, welches im Vergleich zu den nachfolgenden Ausführungen mehr Zeit in Anspruch nimmt.

import torch
import torchvision.models as models

model = models.resnet18().cuda()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
compiled_model = torch.compile(model)

x = torch.randn(16, 3, 224, 224).cuda()
optimizer.zero_grad()
out = compiled_model(x)
out.sum().backward()
optimizer.step()

Zum Besten von verschiedene Anwendungsfälle stillstehen Presets in petto, um etwa nebst kleinen Modellen den Verwaltungsdaten zu reduzieren und somit eine höhere Tempo zu hinhauen.

# API NOT FINAL
# default: optimizes for large models, low compile-time
#          and no extra memory usage
torch.compile(model)

# reduce-overhead: optimizes to reduce the framework overhead
#                and uses some extra memory. Helps speed up small models
torch.compile(model, mode="reduce-overhead")

# max-autotune: optimizes to produce the fastest model,
#               but takes a very long time to compile
torch.compile(model, mode="max-autotune")

Die Kreation des 2017 von Meta (einmal Facebook) gegründeten Open-Source-Frameworks PyTorch geschieht seit dieser Zeit wenigen Monaten intrinsisch jener PyTorch Foundation, die wiederum unter dem Kuppel jener Linux Foundation steht. Dasjenige PyTorch-Team hebt die Wichtigkeit des Feedbacks und jener Mitarbeit jener Entwicklercommunity hervor, um die 2.x-Serie zu verbessern. Zum Besten von den Einstieg hat dies Team Reagieren zu 14 FAQs zu PyTorch 2.0 zusammengestellt und bietet weitere Ressourcen wie Tutorials und Modelle. Dasjenige erste stabile 2.0-Release soll im März 2023 erscheinen.

Die Gesamtheit weiteren Einzelheiten zu PyTorch 2.0 lassen sich jener PyTorch-Website schlussfolgern.


(mai)

[ad_2]
View Comments (0)

Leave a Reply

Your email address will not be published.

Scroll To Top