Machine Learning: PyTorch 1.12 mit TorchArrow-Bibliothek und nvFuser

Das ML-Framework beinhaltet in der Version 1.12 eine Beta der AWS-S3-Integration und der TorchArrow-Bibliothek sowie den nvFuser als Deep Learning Compiler.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen

(Bild: Machine Learning & Artificial Intelligence / Mike MacKenzie / cc-by-2.0))

Lesezeit: 3 Min.
Von
  • Frank-Michael Schlede
Inhaltsverzeichnis

Nur etwas mehr als ein Vierteljahr hat es gedauert, bis das Entwicklerteam des Machine-Learning-Frameworks PyTorch nach dem ersten Release des Jahres 2022 mit 1.12 bereits eine weitere neue Version ankündigt. Insgesamt haben 433 Entwicklerinnen und Entwickler mit 3124 Commits dazu beigetragen, dass eine ganze Reihe von Neuerungen und Verbesserungen in dieser Version verwirklicht wurden. Dazu gehören dieses Mal auch einige Beta-Versionen. So stehen beispielsweise mit TorchArrow eine Bibliothek für die Vorverarbeitung von Batch-Daten für maschinelles Lernen und die AWS-S3-Integration in einer Beta-Version bereit.

Die neue Bibliothek TorchArrow soll laut der Beschreibung im Blog-Beitrag den Programmierern und Programmiererinnen eine performante und Pandas-ähnliche, einfach zu bedienende API bieten können, mit deren Hilfe sie Ihre Preprocessing-Workflows und Entwicklung beschleunigen können. Dazu bietet dieses Feature eine Python-DataFrame-Schnittstelle mit den folgenden Merkmalen:

  • Ein leistungsstarkes CPU-Backend, vektorisierte und erweiterbare benutzerdefinierte Funktionen (UDFs) mit Velox,
  • die nahtlose Übergabe mit PyTorch oder anderen Modellautoren, wie beispielsweise Tensor-Kollation und einfache Einbindung in PyTorch DataLoader und DataPipes sowie
  • die Null-Kopie für externe Leser über Arrow In-Memory Columnar Format.

Wer diese Bibliothek selbst austesten möchte, kann dazu auf ein Beispiel in Form eines 10-Minuten-Tutorial sowie auf die Installationsanweisung oder die API-Dokumentation zugreifen. Einen Prototyp, der eine TorchRec-basierte Trainingsschleife unter Verwendung der On-the-fly Vorverarbeitung von TorchArrow demonstriert, bietet das Entwicklerteam ebenfalls auf GitHub an.

Wie schon im vorherigen Release befinden sich einige neue Funktionalitäten noch im Beta-Stadium. Dazu zählt auch eine funktionale API für Module: PyTorch 1.12 führt diese neue Funktion ein, um die Modulberechnung mit einem gegebenen Satz von Parametern funktional anzuwenden. Das Entwicklerteam hinter der Software begründen das damit, dass das traditionelle PyTorch-Modul-Verwendungsmuster, das intern einen statischen Satz von Parametern verwaltet, manchmal zu restriktiv sei – insbesondere bei der Implementierung von Algorithmen für Meta-Learning, bei denen mehrere Parametersätze über Optimierungsschritte hinweg beibehalten werden müssen.

Die API torch.nn.utils.stateless.functional_call() ermöglicht Modulberechnungen mit voller Flexibilität hinsichtlich der verwendeten Parametermenge, wobei keine Neuimplementierung des Moduls auf funktionale Weise erforderlich sein soll. Dabei kann jeder im Modul vorhandene Parameter oder Puffer durch einen extern definierten Wert zur Verwendung im Aufruf ersetzt werden.

Mit dem Release 1.12 hat das Entwicklerteam von PyTorch auch den Standard-Fuser (für Volta und spätere CUDA-Beschleuniger) ausgetauscht. Jetzt kommt nvFuser zum Einsatz, der eine größere Bandbreite an Operationen unterstützt und schneller ist als NNC, der bisherige Fuser für CUDA-Geräte. Die Entwickler und Entwicklerinnen versprechen, nvFuser in einem demnächst erscheinenden Blog-Beitrag näher zu erläutern und dabei auch zu zeigen, wie mit Hilfe des Compilers das Training für eine Vielzahl von Netzwerken beschleunigt werden kann. Schon jetzt können Interessierte in der nvFuser-Dokumentation weitere Details zur Verwendung und Fehlersuche finden.

(fms)