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.
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.
Verteiltes 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.
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.
Matrizen und Arrays mit NumPy
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.
Keras Wechselspiel zwischen 16 und 32
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.
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)