Machine Learning: PyTorch 1.10 bringt CUDA Graph APIs und neues SDK TorchX

Die ML-Bibliothek PyTorch hat in Version 1.10 Breaking Changes im Gepäck. Gleichzeitig veröffentlichte Microsoft die erste Preview für PyTorch-DirectML.

Lesezeit: 4 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 2 Beiträge

(Bild: vs148/Shutterstock.com)

Von
  • Maika Möbus

Die Machine Learning (ML) Library PyTorch ist in Version 1.10 erschienen. Sie bringt das neue SDK TorchX mit, aber auch bestehende PyTorch-Libraries haben neue Features erhalten. In die neue Version sind über 3400 Commits eingeflossen, die unter anderem die Integration von CUDA Graph APIs und die Stabilisierung einiger bislang als Beta vorliegender Frontend-APIs mit sich bringen.

Abwärtsinkompatible Änderungen in PyTorch 1.10 betreffen die Python API, das Package für automatische Differenzierung autograd, die von Nvidia entwickelte API CUDA, den Umgang mit dem ML-Austauschformat ONNX und weitere Bestandteile.

So hat sich etwa das Verhalten von torch.any/torch.all in der Python-API geändert, sodass uint8-Werte bei Tensoreingaben mit dim=0 nicht mehr versehentlich einen Wert > 1 annehmen können. Zum Vergleich zeigt das PyTorch-Team das bisherige Verhalten in Version 1.9.1

>>> torch.all(torch.tensor(42, dtype=torch.uint8))
tensor(1, dtype=torch.uint8)
>>> torch.all(torch.tensor(42, dtype=torch.uint8), dim=0)
tensor(42, dtype=torch.uint8) # wrong, old behavior

und das neue Verhalten in Version 1.10.0

>>> torch.all(torch.tensor(42, dtype=torch.uint8))
tensor(1, dtype=torch.uint8)
>>> torch.all(torch.tensor(42, dtype=torch.uint8), dim=0)
tensor(1, dtype=torch.uint8) # new, corrected and consistent behavior

In PyTorch sind nun CUDA Graph APIs als Beta-Funktion integriert. Sie sollen CPU Overheads für CUDA-Workloads verringern. Eine ausführliche Dokumentation zu CUDA-Graphen und ihrer Verwendung bietet Nvidia. Die Anbindung an Android Neural Networks API (NNAPI) gilt nun ebenfalls als Beta-Feature, nachdem sie erstmals im vergangenen Jahr hinzugefügt wurde. Damit lassen sich auf Android-Apps rechenintensive neuronale Netze auf den effizientesten Teilen von Smartphone-Chips ausführen, inklusive GPUs und NPUs (Neural Processing Units).

Nicht mehr im Beta-Status befinden sich einige Features für verteiltes Training: das Remote Module, der DDP Communication Hook und der ZeroRedundancyOptimizer gelten nun als stabil.

Alle Details zu PyTorch 1.10 sind in den Release Notes auf GitHub zu finden, die Highlights zeigt der PyTorch-Blog.

Gemeinsam mit dem Erscheinen von PyTorch 1.10 wurden auch die zugehörigen Libraries überarbeitet. Als Beta-Feature lässt sich in TorchAudio 0.10 dank des hinzugefügten Tacotron2-Modells und der vortrainierten Gewichtungen eine Text-to-Speech-Pipeline erstellen und TorchVision 0.11 erhält die neuen stabilen Modelle RegNet und EfficientNet.

Das neue SDK TorchX steht bereit, um Build und Deployment von ML-Anwendungen schneller umzusetzen. Darin integrierte Komponenten für MLOps Best Practices sollen anspruchsvolle Funktionen wie verteiltes Training und Hyperparameter-Optimierung leichter zugänglich machen.

Die Library-Features sind in einem separaten Blogeintrag aufgeführt.

PyTorch entstammt ursprünglich Facebook AI, steht quelloffen zur Verfügung und hat in Microsoft einen seiner größten Mitwirkenden. Das Unternehmen arbeitet nicht nur aktiv an PyTorch und setzt es beispielsweise in Microsoft Azure ein, sondern hat nun auch PyTorch-DirectML veröffentlicht. Wem der Name bekannt vorkommt, sei an dieser Stelle auf TensorFlow-DirectML verwiesen – und auch das Prinzip hinter beiden Technologien ist ähnlich.

So wie TensorFlow-DirectML ein DirectML-Backend zur Verfügung stellt, um für den Trainingsprozess mit dem ML-Framework TensorFlow die Hardwarebeschleunigung unter allen DirectX-12-fähigen GPUs zu gewährleisten, stellt PyTorch-DirectML eine Integration der DirectX-API DirectML mit PyTorch dar. Das DirectML-Backend soll auch in diesem Fall das Ausführen von Machine-Learning-Modellen auf allen DirectX-12-GPUs sowohl unter Windows als auch Windows Subsystem for Linux (WSL) ermöglichen.

Allerdings ist die Entwicklung bei TensorFlow-DirektML bereits weiter vorangeschritten: Vor wenigen Monaten verließ es den Preview-Modus. PyTorch-DirectML liegt dagegen in der ersten Preview-Version vor, wie ein Blogeintrag verrät.

(mai)