Machine Learning: TensorFlow 2.4 rechnet mit NumPy-APIs

Neben der direkten Anbindung an NumPy führt das Machine-Learning-Framework eine neue Methode für asynchrones paralleles Modelltraining ein.

In Pocket speichern vorlesen Druckansicht
Künstliche Intelligenz, KI

(Bild: Gerd Altmann, gemeinfrei)

Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Google hat Version 2.4 des auf Machine Learning (ML) ausgelegten Frameworks TensorFlow veröffentlicht. Das Release bringt Erweiterungen für paralleles Modelltraining mit und hat ein Subset der NumPy-APIs an Bord. Die seit TensorFlow 2.0 integrierte Deep-Learning-Library Keras stabilisiert derweil das Mixed-Precision-Training.

Das Modul für verteiltes Training tf.distribute bringt im aktuellen Release gleich zwei Neuerungen mit. Zum einen gilt die API MultiWorkerMirroredStrategy, die ein synchrones verteiltes Training von Modellen erlaubt, nun als stabil. Der Ansatz verteilt die Arbeit auf mehrere Worker-Prozesse, die jeweils potenziell auf mehreren GPUs laufen können.

Bei der MultiWorkerMirroredStrategy führen mehrere Worker-Prozesse ein synchronisiertes Training durch.

(Bild: Google)

Als zweite Neuerung bringt das tf.distribute-Modul eine neue Methode mit, die bisher noch als experimentell gekennzeichnet ist: ParameterServerStrategy setzt ebenfalls auf mehrere, parallele Worker-Prozesse, die aber asynchron arbeiten. Dazu verwalten sogenannte Parameterserver die Variablen, die sich die einzelnen Worker-Prozesse bei jedem Schritt abholen und nach getaner Arbeit aktualisieren.

Für den Einstieg hat das TensorFlow-Team ein Tutorial veröffentlicht, das Multi-Worker-Training in Keras mit der nun als stabil gekennzeichneten Strategie umsetzt. Auch für das Parameter-Server-Training existiert ein Tutorial, das direkt auf TensorFlow Core setzt.

Ebenfalls als experimentell gekennzeichnet ist die Anbindung an die Python-Library NumPy für Berechnungen auf Vektoren und Matrizen beziehungsweise mehrdimensionalen Arrays. Das im 2.4-Release eingeführte Modul tf.experimental.numpy enthält ein Subset der NumPy-APIs, das sich nahtlos mit den restlichen TensorFlow-APIs verbinden lässt. Das Framework kümmert sich um die optimierte Ausführung und die automatische Vektorisierung.

Die API kann unterschiedliche Typen aus TensorFlow und NumPy wie tf.Tensor beziehungsweise np.ndarray als Eingabe verwenden. Der Blogbeitrag zu TensorFlow 2.4 führt ein Beispiel zum Verwenden von NumPy-Code in Input-Pipelines und zum Berechnen von Gradienten auf:

import tensorflow.experimental.numpy as tnp

# Use NumPy code in input pipelines

dataset = tf.data.Dataset.from_tensor_slices(
    tnp.random.randn(1000, 1024)).map(
    lambda z: z.clip(-1,1)).batch(100)

# Compute gradients through NumPy code

def grad(x, wt):
  with tf.GradientTape() as tape:
    tape.watch(wt)
    output = tnp.dot(x, wt)
    output = tf.sigmoid(output)
  return tape.gradient(tnp.sum(output), wt)

Zahlreiche weitere Beispiele mit Erläuterung finden sich in einem Leitfaden zur Verwendung der NumPy-API in Tensorflow.

Die Mixed Precision API für Keras ist seit Version 2.1 Bestandteil des Frameworks, war bisher jedoch als experimentell gekennzeichnet. Mit dem aktuellen Release gilt das Training mit einer Mischung aus 16-Bit- und 32-Bit-Gleitkommazahlen als stabil. Laut dem TensorFlow-Team kann die API die Modellperformance auf GPUs verdreifachen und auf TPUs (Tensor Processing Units) um bis zu 60 Prozent verbessern.

Sonderheft zu Machine Learning

Das iX-Developer-Sonderheft "Machine Learning" behandelt auf 148 Seiten unter anderem ML-Frameworks, Textanalyse, Reinforcement Learning und die Produktivstellung von Modellen. Im Fokus steht die praktische Anwendung, und zu den meisten Artikeln existieren Jupyter-Notebooks als Basis für eigene ML-Projekte.

Ein umfassender Praxisartikel widmet sich TensorFlow und Keras, während ein weiterer den Herausforderer PyTorch beleuchtet. Daneben bietet ein Text einen Überblick über die wichtigsten Python-Bibliotheken für Machine-Learning-Anwendungen wie NumPy, Pandas und Scikit Learn

Für das Mixed-Precision-Training sind die Layers und Optimizers von Keras erforderlich, und ein Tutorial gibt Einblick in die nötigen Schritte sowie Optimierungsmöglichkeiten. Keras bringt daneben eine refaktorisierte Optimizer-Klasse im Modul tf.keras.optimizers mit, die eine einfachere Anpassung ermöglicht.

Weitere Neuerungen in TensorFlow 2.4 wie die erweiterten Profiler-Werkzeuge zum Messen der Hardwareauslastung und Suche nach Engpässen beim Training lassen sich dem TensorFlow-Blog entnehmen.

(rme)