GaiaEx AcademyGaiaEx Academy
TensorFlow, Keras und TensorBoard zum Modell-Monitoring
EntwicklerKI & ML12 min read

TensorFlow, Keras und TensorBoard zum Modell-Monitoring

Googles ML-Framework und sein leistungsstarkes Visualisierungs-Dashboard

Beiträge teilen

Das TensorFlow-Ökosystem: Mehr als ein Framework

TensorFlow, entwickelt von Google Brain und 2015 veröffentlicht, ist nicht nur eine Deep-Learning-Bibliothek — es ist ein gesamtes Ökosystem für den Bau, das Training, das Deployment und die Überwachung von Machine-Learning-Modellen in jedem Maßstab. Während PyTorch die Forschung dominiert, bleibt TensorFlow das Produktions-Kraftpaket, eingesetzt in Systemen, die täglich Milliarden von Vorhersagen bei Google, Airbnb, Twitter und Tausenden anderer Unternehmen verarbeiten.

Das Ökosystem spannt den gesamten ML-Lebenszyklus:

  • Keras — die High-Level-API zum Bau und Training von Modellen, jetzt vollständig in TensorFlow als tf.keras integriert
  • TensorBoard — Visualisierungstoolkit zur Überwachung des Trainings, zum Vergleich von Experimenten und zur Fehlersuche in Modellen
  • tf.data — leistungsstarke Datenpipelines, um große Datensätze in Modelle zu füttern
  • TensorFlow Serving — produktionsreifes Modell-Serving mit Versionierung, Batching und Hardwarebeschleunigung
  • TensorFlow Lite — optimierte Runtime für Mobil- und Edge-Geräte
  • TensorFlow.js — Modelle direkt im Browser ausführen

Diese Breite ist TensorFlows größte Stärke. Du kannst ein Modell in einem Jupyter-Notebook mit Keras prototypisieren, es auf einem GPU-Cluster trainieren, das Training mit TensorBoard überwachen, es mit TF Serving hinter einer API bereitstellen und eine komprimierte Version auf einen Raspberry Pi deployen — alles innerhalb desselben Frameworks. Für Finanzanwendungen, bei denen du möglicherweise Modelle brauchst, die sowohl in einer Cloud-Trading-Engine (verbunden mit der API von GaiaEx) als auch auf einer lokalen Workstation für Forschung laufen, ist diese Vielseitigkeit wichtig.

TensorFlow-ML-Lebenszyklus (vereinfacht) Daten Keras Training TB-Logs Serving / Edge Derselbe Graph kann Forschungsnotebooks und Produktion bedienen, wenn du Artefakte standardisierst (SavedModel). tf.data-Pipelines halten GPUs versorgt; TF Serving versioniert Modelle ohne Ausfallzeit
Prototyp, Training, Beobachtung, Deployment — ein Stack, viele Laufzeiten.

Keras: Sequential- und Functional-API für den Modellbau

Keras wurde nach einem Leitprinzip entworfen: die kognitive Last beim Bau neuronaler Netze zu reduzieren. Es erreicht das durch zwei APIs zum Modellbau, jede geeignet für unterschiedliche Komplexitätsstufen.

Die Sequential-API ist die einfachste — ein linearer Stapel von Schichten:

import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([
    keras.layers.Dense(128, activation="relu", input_shape=(20,)),
    keras.layers.Dropout(0.3),
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(1, activation="sigmoid"),
])

Für Modelle mit mehreren Eingaben, mehreren Ausgaben, geteilten Schichten oder Skip-Verbindungen gibt dir die Functional-API volle Kontrolle auf Graph-Ebene:

price_input = keras.Input(shape=(60, 5), name="price_sequence")
meta_input = keras.Input(shape=(10,), name="metadata")

x = keras.layers.LSTM(64, return_sequences=True)(price_input)
x = keras.layers.LSTM(32)(x)

combined = keras.layers.concatenate([x, meta_input])
combined = keras.layers.Dense(64, activation="relu")(combined)
output = keras.layers.Dense(1, activation="sigmoid")(combined)

model = keras.Model(inputs=[price_input, meta_input],
                    outputs=output)

Dieses Modell nimmt zwei Eingaben — eine 60-Schritt-Preissequenz, verarbeitet durch gestapelte LSTMs, und einen Metadaten-Vektor statischer Merkmale —, kombiniert sie und gibt eine Richtungsvorhersage aus. Diese Architektur ist verbreitet in Finanz-ML, wo man zeitliche Muster (jüngstes Preisverhalten) mit Kontextinformationen (Volatilitätsregime, Funding Rate, Wochentag) mischen möchte.

Wichtige Schichttypen für Finanzanwendungen: Dense für tabellarische Merkmale, LSTM und GRU für Zeitreihen, Conv1D zum Lernen lokaler zeitlicher Muster und MultiHeadAttention für Transformer-artige Sequenzmodellierung.

Modelle kompilieren und Callbacks für intelligenteres Training

Nach dem Bau muss ein Keras-Modell mit drei Komponenten kompiliert werden: einem Optimizer, einer Verlustfunktion und Evaluierungsmetriken.

model.compile(
    optimizer=keras.optimizers.Adam(learning_rate=1e-3),
    loss="binary_crossentropy",
    metrics=["accuracy", keras.metrics.AUC(name="auc")],
)

history = model.fit(
    X_train, y_train,
    epochs=100,
    batch_size=64,
    validation_data=(X_val, y_val),
    callbacks=[...],
)

Callbacks sind Hooks, die zu bestimmten Zeitpunkten während des Trainings ausgeführt werden — nach jeder Epoche, jedem Batch, oder wenn bestimmte Bedingungen erfüllt sind. Sie automatisieren Trainingsmanagement, das sonst manuelle Überwachung erfordern würde:

  • EarlyStopping — stoppt das Training, wenn sich der Validierungsverlust über patience Epochen nicht verbessert. Verhindert Overfitting und verschwendete Rechenleistung. Setze restore_best_weights=True, um automatisch zum besten Checkpoint zurückzukehren.
  • ModelCheckpoint — speichert das Modell, wann immer sich die Validierungsleistung verbessert. Verliere nie dein bestes Modell an einen Trainingsabsturz oder Overfitting in späteren Epochen.
  • ReduceLROnPlateau — reduziert die Lernrate, wenn der Validierungsverlust ein Plateau erreicht. Das schaltet oft zusätzliche Leistung frei, die eine feste Lernrate verpasst — das Modell macht zunächst große Schritte und feinjustiert dann mit kleineren Schritten.
callbacks = [
    keras.callbacks.EarlyStopping(
        monitor="val_loss", patience=15,
        restore_best_weights=True),
    keras.callbacks.ModelCheckpoint(
        "best_model.keras", monitor="val_auc",
        mode="max", save_best_only=True),
    keras.callbacks.ReduceLROnPlateau(
        monitor="val_loss", factor=0.5,
        patience=5, min_lr=1e-6),
    keras.callbacks.TensorBoard(log_dir="./logs"),
]

Nutze EarlyStopping und ModelCheckpoint immer zusammen. Ein Finanzmodell über zu viele Epochen zu trainieren, garantiert fast Overfitting — das Modell beginnt, Rauschen in den Trainingsdaten zu memorieren. Diese beiden Callbacks stellen sicher, dass du zum richtigen Zeitpunkt stoppst und die richtigen Gewichte behältst.

TensorBoard: Training visualisieren und Modelle debuggen

TensorBoard ist TensorFlows Visualisierungstoolkit, und es ist eines der wertvollsten Werkzeuge im Workflow jedes ML-Praktikers — egal ob du TensorFlow, PyTorch oder JAX nutzt. Es verwandelt rohe Trainingslogs in interaktive Dashboards, die offenlegen, was in deinem Modell passiert.

Starte TensorBoard, indem du es auf dein Log-Verzeichnis richtest:

# Terminal
tensorboard --logdir=./logs --port=6006

# Oder in einem Jupyter-Notebook
%load_ext tensorboard
%tensorboard --logdir ./logs

Wichtige Visualisierungen für die Entwicklung von Finanzmodellen:

Scalars — Trainings- und Validierungsverlustkurven im Zeitverlauf dargestellt. Die Lücke zwischen ihnen enthüllt Overfitting: Ein Trainingsverlust, der weiter fällt, während der Validierungsverlust steigt, bedeutet, dass dein Modell Rauschen memoriert. Gesundes Training zeigt beide Kurven gemeinsam fallend, mit der Validierungskurve leicht über der Trainingskurve.

Histogramme — Verteilungen von Gewichten, Bias-Werten und Aktivierungen über Schichten und Epochen. Achte darauf, ob Gewichtsverteilungen gegen null kollabieren (verschwindende Gradienten), auf große Werte explodieren (instabiles Training) oder Aktivierungen bei 0 oder 1 sättigen (tote Neuronen). Diese Probleme sind in Verlustkurven unsichtbar, aber in Histogrammen offensichtlich.

Embeddings — projiziere hochdimensionale Darstellungen mit t-SNE oder PCA in 2D- oder 3D-Raum. Visualisiere, ob dein Modell gelernt hat, unterschiedliche Marktregime, Assetklassen oder Volatilitätszustände in seinen internen Darstellungen zu trennen.

HParams — vergleiche Hyperparameter-Sweeps über Experimente hinweg. Lasse dasselbe Modell mit unterschiedlichen Lernraten, Architekturen und Dropout-Werten laufen und identifiziere, welche Kombinationen die besten Validierungsmetriken erzeugen. Dieser systematische Vergleich ersetzt ad hoc Experimentieren durch evidenzbasierte Modellauswahl.

TensorBoard funktioniert auch mit PyTorch über die Klasse torch.utils.tensorboard.SummaryWriter — die Visualisierungswerkzeuge sind Framework-agnostisch, was einer der Gründe ist, warum TensorBoard zum De-facto-Standard im gesamten ML-Ökosystem geworden ist.

TensorBoard-Panels (konzeptionell) Scalars Trainings- vs. Validierungsverlust Histogramme Gewichte / Aktivierungen HParams Läufe vergleichen Overfitting zeigt sich als divergierende Kurven, bevor es sich im PnL-Backtest zeigt.
Scalars erfassen die Fit-Qualität; Histogramme erfassen defekte Schichten; HParams vergleichen Experimente.

tf.data-Pipelines und TensorFlow Serving für die Produktion

Wenn dein Datensatz zu groß ist, um in den Speicher zu passen — eine übliche Situation bei der Arbeit mit Tick-Level-Daten von Exchanges wie GaiaEx — liefert tf.data eine effiziente, parallelisierte Datenpipeline, die deine GPU versorgt, ohne alles auf einmal zu laden.

dataset = tf.data.Dataset.from_tensor_slices((features, labels))
dataset = (dataset
    .window(60, shift=1, drop_remainder=True)
    .flat_map(lambda w: w.batch(60))
    .batch(64)
    .prefetch(tf.data.AUTOTUNE)
)

Der Aufruf prefetch(AUTOTUNE) ist entscheidend — er erlaubt, dass sich Datenladen und Modellberechnung überlappen, sodass die GPU nie ungenutzt auf den nächsten Batch wartet. Für Finanzdatensätze mit komplexem Feature Engineering kannst du .map()-Transformationen verketten, die parallel laufen und Indikatoren und Normalisierungen live berechnen, statt sie vorab zu berechnen und zu speichern.

TensorFlow Serving ist ein produktionsreifes System zum Deployment von Modellen hinter einer leistungsstarken gRPC- oder REST-API. Es handhabt Modellversionierung (das neue Modell bereitstellen, während das alte als Fallback erhalten bleibt), Request-Batching (mehrere Inferenzanfragen für GPU-Effizienz kombinieren) und Hardwarebeschleunigung — alles entscheidend für Trading-Systeme, bei denen sowohl Latenz als auch Verlässlichkeit zählen.

# Ein SavedModel exportieren
model.save("models/price_predictor/1")

# Mit Docker bereitstellen
# docker run -p 8501:8501 \
#   --mount type=bind,source=$(pwd)/models,target=/models \
#   -e MODEL_NAME=price_predictor \
#   tensorflow/serving

Eine typische Produktionsarchitektur: Dein Trading-Bot verbindet sich mit dem WebSocket-Feed von GaiaEx, berechnet Merkmale in Echtzeit, sendet Inferenzanfragen an TF Serving und erhält Vorhersagen in einstelligen Millisekunden. Trainierst du auf neuen Daten neu, deployst du das aktualisierte Modell als Version 2 — TF Serving tauscht es ohne Ausfallzeit ein.

TensorFlow Lite, Edge-Deployment und TF vs. PyTorch

TensorFlow Lite komprimiert Modelle für das Deployment auf Mobilgeräten, eingebetteten Systemen und Edge-Hardware. Durch Techniken wie Quantisierung (Umwandlung von 32-Bit-Gleitkomma-Gewichten in 8-Bit-Integer), Pruning (Entfernen von nahezu null Gewichten) und Architekturoptimierung kann TF Lite ein Modell um das 4-Fache oder mehr verkleinern, während die meiste Genauigkeit erhalten bleibt. Das ermöglicht Inferenz direkt auf Geräten mit begrenzter Rechenleistung — nützlich für Edge-Trading-Nodes oder Monitoring-Dashboards, die unabhängig von Cloud-Infrastruktur arbeiten müssen.

# Ein Keras-Modell in TF Lite umwandeln
converter = tf.lite.TFLiteConverter.from_saved_model("models/v1")
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

TensorFlow vs. PyTorch — was solltest du für Finanzanwendungen wählen?

  • Für Forschung und Prototyping: PyTorch. Seine dynamischen Graphen, die pythonische API und die dominierende Stellung in der akademischen Forschung bedeuten, dass mehr Papers PyTorch-Code enthalten, mehr Tutorials PyTorch nutzen und Debugging intuitiver ist.
  • Für Produktions-Deployment im großen Maßstab: TensorFlow hält immer noch Vorteile. TF Serving, TF Lite und TensorFlow.js liefern bewährte Deployment-Pfade, denen PyTorchs TorchServe und ONNX Runtime noch entgegenreifen.
  • Speziell für Finanz-ML: Beginne mit PyTorch für Modellentwicklung und Experimentieren. Fordern deine Produktionsanforderungen die Reife von TF Serving oder das Edge-Deployment von TF Lite, konvertiere deine besten Modelle. Viele Teams nutzen PyTorch für Forschung und TensorFlow für Deployment, verbunden über das ONNX-Format (Open Neural Network Exchange).

Die ehrliche Wahrheit: Beide Frameworks konvergieren. TensorFlow übernahm Eager Execution; PyTorch fügte torch.compile für Graph-Level-Optimierung hinzu. Keras selbst unterstützt jetzt PyTorch, JAX und TensorFlow als Backends. Das beste Framework ist das, das dein Team gut kennt und mit dem es Produktionscode versenden kann. Wähle eines, meistere es und löse das eigentliche Problem — Märkte vorhersagen — statt über Werkzeuge zu debattieren.