main Image

TFX Pipeline

   Infrastructure

   Data

Gruppe C

Gruppe C

01/22/2022

TFX Pipeline

Die Abbildung zeigt eine beispielhafte TFX Pipeline von TensorFlow. Eine Pipeline wie diese stellt eine Implementierung eines Machine Learning Workflows dar, die auf verschiedenen Orchestratoren ausgeführt werden kann. Diese besteht aus Eingabeparametern und Komponenteninstanzen. Die Komponenteninstanzen (grüne Felder) produzieren als Output sogenannte "Artefakte" (dunkelgraue Felder).

Wir haben diese beispielhafte TFX Pipeline für unseren Use-Case adaptiert.

Unsere TFX-Pipeline

Wie man beim Vergleich feststellen kann, haben wir die Komponenteninstanz "Transform" ausgelassen. Dieses führt Feature-Engineering für das Dataset durch. Feature-Engineering steht hier für das Transformieren von Daten, bevor sie als Teil des Trainings in das Modell gelangen. Da wir diese Aspekte bereits im Delta Lake umsetzten, müssen wir die Daten nicht erneut durch die Instanz laufen lassen.

ExampleGen

ExampleGen wird verwendet, um die Daten in die TFX Pipeline zu laden. Hierbei werden die Quelldaten auf ein von Tensorflow/Keras unterstütztes Datenformat überführt, welches von den nachfolgenden Komponenten verwendet wird. Standardmäßig werden die Files im TFRecord-Format gespeichert.

Da wir unsere Daten für TFX aus dem Deltalake entnehmen, liegen diese im Parquet-Format vor. TFX bietet für CSV, BigQuery und TFRecord vorgefertigte Importer. Für Parquet müssen wir erst einen ExampleGen konfigurieren.

Im ExampleGen wird gleichzeitig der Split von Trainings- und Evaluierungsdaten definiert, welche wir auf 4:1 gesetzt haben.

StatisticsGen

Der StatisticsGen soll einen ersten Überblick über die Daten geben. Hier kann man Beispielsweise die Verteilung der eingelesenen Daten einsehen. Modelle bevorzugen Normalverteilte Daten und mit StatisticsGen kann man beispielsweise sehen, welche Features noch transformiert werden müssen.

SchemaGen

SchemaGen speichert die Struktur des Datasets ab. Es enthält Informationen über die Spaltenanzahl, Spaltennamen der Tabelle sowie den erwarteten Datentyp für die jeweilige Spalte.

ExampleValidator

Der ExampleValidator untersucht den Datensatz auf Anomalien, die negativen Einfluss auf das Training des Modells haben könnten. So wird beispielsweise eine Warnung angezeigt, wenn ein Feature zu rechts- oder linksschiefe Verteilung aufzeigt oder wenn ein Wert in einem Feature zu dominant ist und somit im Vergleich zu anderen Werten überproportional häufig im Dataset auftaucht.

Trainer

Der Trainer ist das Herzstück der Pipeline und ist wie der Name bereits vermuten lässt, für das Trainieren des Modells zuständig. Als Input des Trainers dienen die Daten des ExampleGens, sowie das Schema des Datensatzes. Der Output ist ein fertig trainiertes Modell. Die Vorgaben für den Trainer sind sehr offen gehalten, sodass auch Custom-Modelle dem Trainer übergeben werden können. Jedoch sollten Tensorflow- oder Keras-Modelle verwendet werden, falls man das Modell an die darauffolgenden TFX-Komponenten weitergeben möchte.

Der Trainer erwartet lediglich eine Python-File mit einer 'run_fn'-Funktion die das Training ausführt und gibt als Rückgabewert ein trainiertes Modell aus.

Evaluator

Der Evaluator nimmt das trainierte Modell und evaluiert dieses mit dem eval-split. In dieser Komponente werden Evaluierungsmethoden und Bewertungskriterien definiert, die später darüber aussagen, ob ein Modell angenommen (BLESSED) oder abgelehnt wird (NOT BLESSED). Ein Bewertungskriterium könnte beispielsweise die Performance zum Vormodell sein oder ein Threshold für die Genauigkeit des Modells.

Pusher

Erhält ein Modell das BLESSING, wird es dem Pusher verabreicht, der das Modell in die Produktivumgebung pusht, in der es schließlich verwendet werden kann.

Orchestrating Pipeline via Apache Airflow

TFX-Pipelines können auf unterschiedlichen Orchestratoren ausgeführt werden. Wir haben uns in diesem Fall für Apache Airflow entschieden. Darauf gehen wir jedoch in diesem Blogeintrag genauer ein.

Nicht verwendete Komponenten:

Transform Transform wurde für die TFX Pipeline ausgelassen, da das Preprocessing bei uns im Deltalake durchgeführt wird.

Quellen:

TensorFlow. (o. D.-a). The Evaluator TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/evaluator.[Stand: 04.02.2022].

TensorFlow. (o. D.-b). The ExampleGen TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/examplegen.[Stand: 04.02.2022].

TensorFlow. (o. D.-c). The ExampleValidator TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/exampleval. [Stand: 04.02.2022].

TensorFlow. (o. D.-d). The Pusher TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/pusher. [Stand: 04.02.2022].

TensorFlow. (o. D.-e). The SchemaGen TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/. [Stand: 04.02.2022].

TensorFlow. (o. D.-f). The StatisticsGen TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/statsgen.[Stand: 04.02.2022].

TensorFlow. (o. D.-g). The Trainer TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/trainer.[Stand: 04.02.2022].

TensorFlow. (o. D.-h). The Transform TFX Pipeline Component. https://www.tensorflow.org/tfx/guide/transform.[Stand: 04.02.2022].

TensorFlow. (o. D.-i). Understanding TFX Pipelines. https://www.tensorflow.org/tfx/guide/understanding_tfx_pipelines.[Stand: 04.02.2022].