Machine Learning: PyTorch 1.4 öffnet sich für Java

Neben einer Anbindung an Java bietet das Machine-Learning-Framework verteiltes, paralleles Training für Modelle und Pruning für künstliche neuronale Netze.

In Pocket speichern vorlesen Druckansicht
Machine Learning: PyTorch öffnet sich für Java
Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Facebook hat Version 1.4 von PyTorch veröffentlicht. Das aktuelle Release des Machine-Learning-Frameworks führt unter anderem das verteilte, parallele Training von Modellen ein. Außerdem erweitert es den im Vorgänger eingeführten Einsatz auf Android- und iOS-Geräten über PyTorch Mobile. Über Pruning lassen sich künstliche neuronale Netze vereinfachen. Erwähnenswert ist zudem, dass das Framework erstmals Bindings für Java mitbringt.

Im Bereich des Machine Learning (ML) spielt Java eine untergeordnete Rolle. Aufgrund der Nähe zu Data Science hat sich vor allem Python als Platzhirsch etabliert, das PyTorch ebenso wie Googles ML-Framework TensorFlow, das vor Kurzem in Version 2.1 erschienen ist, als Hauptsprache kennt. Daneben lässt sich Facebooks Framework mit C++ verwenden.

Auf der Java Virtual Machine (JVM) spielt Scala für ML-Anwendungen eine größere Rolle als Java, unter anderem durch die direkte Anbindung an das Framework Apache Spark. Seinen Weg zu PyTorch hat Java über den Umweg PyTorch Mobile gefunden: Die Anbindung baut auf das Android-Interface zur mobilen Variante auf. Die Java-Bindings gelten in PyTorch 1.4 noch als experimentell. Sie sind nur für Linux verfügbar und auf Inferenzen beschränkt.

Das im Oktober 2019 eingeführte PyTorch Mobile zur Anbindung mobiler Endgeräte mit iOS und Android bringt im aktuellen Release mehr Steuerungsmöglichkeiten für Entwickler mit. Sie können die Größe der Library reduzieren, indem sie nur die Operatoren einbinden, die sie in ihren Modellen benötigen. Laut den Release Notes verringert sich die Größe durch das angepasste MobileNetV2 gegenüber der vorgefertigten PyTorch Mobile Library um 40 bis 50 Prozent.

Um das Training sehr großer Modelle so performant wie möglich zu gestalten, führt PyTorch das sogenannte Distributed Model Parallel Training ein, also ein verteiltes paralleles Training für Modelle. PyTorch 1.4 bringt dazu ein verteiltes RPC-Framework (Remote Procedure Call) mit, mit dem sich Funktionen auf entfernten Systemen ausführen und entfernte Objekte referenzieren lassen, ohne die Daten kopieren zu müssen.

Es soll unter anderem das Training der von Facebook im September des vergangenen Jahres vorgestellten RoBERTa-Modelle optimieren. Die Methoden für das Verarbeiten natürlicher Sprache (Natural Language Processing, NLP) erweitern Googles BERT-Ansatz (Bidirectional Encoder Representations from Transformers). RoBERTa (Robustly Optimized BERT Pretraining Approach) ist in PyTorch implementiert und verfügt über sehr viele Parameter. Im aktuellen Release des ML-Frameworks ist das verteilte, parallele Training als experimentell gekennzeichnet.

PyTorch 1.4 bringt vorgefertigte Pruning-Methoden im nn.utils.prune-Modul mit. Pruning, das sich mit Zurechtstutzen übersetzen lässt, dient im Bereich des Machine Learning zum Vereinfachen von Entscheidungsbäumen beziehungsweise künstlichen neuronalen Netzen.

Das Beschneiden soll wie in der Botanik den Wildwuchs bekämpfen. Im ML-Umfeld lässt sich damit das sogenannte Overfitting bekämpfen, eine zu starke Anpassung des Modells an die Trainingsdaten, wodurch es schlechter zum Generalisieren taugt.

PyTorch 1.4 hat vorgefertigte Techniken für das Random Pruning und das Magnitude-based Pruning (MTB) an Bord. Letzteres ist ein einfacher, aber meist effizienter Pruning-Algorithmus, der nach jedem Training den Teil mit der geringsten Gewichtung entfernt. Neben den vorgefertigten Klassen für das Pruning können Entwickler eigene als Unterklasse von BasePruningMethod erstellen.

Mehr Infos

Vom 17. bis 19. Februar 2020 starten heise Developer, iX und der dpunkt.verlag mit einem neuen Format zum Thema Machine Learning: Die ML-Essentials bieten Halbtages-Trainings zu insgesamt 18 Themen. Die Veranstaltung ist aus dem Wunsch einiger Teilnehmer der Entwicklerkonferenz Minds Mastering Machines hervorgegangen, die Workshops im Rahmen der Konferenz zu erweitern.

Im Programm der ML-Essentials 2020 findet sich unter anderem einen Workshop zu Deep Learning mit PyTorch. Dem Thema Natural Language Processing dienen zwei aufeinander aufbauende Trainings, und in einem weiteren Workshop lernen die Teilnehmer Optimierungsmethoden für Machine Learning kennen.

Weitere Änderungen zu PyTorch 1.4 lassen sich den Release Notes im GitHub-Repository entnehmen. Das aktuelle Release bringt zahlreiche, in den Release Notes aufgeführte Anpassungen mit, die zu Inkompatibilitäten führen. Zum Einstieg in das RPC-Framework zum parallelen Training existiert ein umfangreiches Tutorial sowie einige Beispiele und eine Dokumentation der API. Einfache Beispiele für das Pruning finden sich in den Release Notes. (rme)