1. Was ist TFX?
TensorFlow Extended (TFX) ist eine umfassende End-to-End-Plattform für maschinelles Lernen, die darauf abzielt, den gesamten Lebenszyklus eines ML-Modells zu verwalten. Es wurde von Google entwickelt und nutzt die Leistungsfähigkeit von TensorFlow, um die Erstellung, das Training, die Bereitstellung und das Management von maschinellen Lernmodellen in Produktionsumgebungen zu erleichtern. TFX hilft dabei, die Skalierbarkeit, Zuverlässigkeit und Effizienz von ML-Workflows zu verbessern.
2. Hauptziele von TFX:
- Automatisierung: Automatisierung der Schritte im ML-Lebenszyklus, um menschliche Fehler zu minimieren und die Effizienz zu maximieren.
- Skalierbarkeit: Unterstützung großer Datensätze und Modelle, die in verteilten Umgebungen ausgeführt werden.
- Reproduzierbarkeit: Sicherstellung, dass ML-Experimente reproduzierbare Ergebnisse liefern.
- Produktionseinsatz: Bereitstellung robuster Werkzeuge für den Einsatz von ML-Modellen in Produktionssystemen.
3. Komponenten von TFX
TFX besteht aus mehreren integrierten Komponenten, die verschiedene Schritte im ML-Lebenszyklus abdecken. Hier sind die Hauptkomponenten von TFX:
3.1 ExampleGen
Funktion: Ingestiert und fragmentiert die Daten, die für das Training und die Evaluierung des Modells verwendet werden.
Beispiel:
from tfx.components import CsvExampleGen
from tfx.orchestration.experimental.interactive.interactive_context import InteractiveContext
context = InteractiveContext()
example_gen = CsvExampleGen(input_base='path/to/csv/files')
context.run(example_gen)
3.2 StatisticsGen
Funktion: Berechnet Statistiken über die Eingabedaten, um ein besseres Verständnis und eine bessere Verwaltung der Datenqualität zu ermöglichen.
Beispiel:
from tfx.components import StatisticsGen
statistics_gen = StatisticsGen(examples=example_gen.outputs['examples'])
context.run(statistics_gen)
3.3 SchemaGen
Funktion: Generiert ein Schema basierend auf den Statistiken der Eingabedaten, das zur Validierung und Transformation der Daten verwendet wird.
Beispiel:
from tfx.components import SchemaGen
schema_gen = SchemaGen(statistics=statistics_gen.outputs['statistics'])
context.run(schema_gen)
3.4 ExampleValidator:
Funktion: Validiert die Eingabedaten gegen das generierte Schema, um Anomalien und Datenprobleme zu erkennen.
Beispiel:
from tfx.components import ExampleValidator
example_validator = ExampleValidator(statistics=statistics_gen.outputs['statistics'],
schema=schema_gen.outputs['schema'])
context.run(example_validator)
3.5 Transform
Funktion: Transformiert die Daten entsprechend dem Schema und bereitet sie für das Training vor.
Beispiel:
from tfx.components import Transform
from tfx.components.transform import executor
def preprocessing_fn(inputs):
import tensorflow_transform as tft
outputs = inputs.copy()
outputs['feature'] = tft.scale_to_z_score(inputs['feature'])
return outputs
transform = Transform(examples=example_gen.outputs['examples'],
schema=schema_gen.outputs['schema'],
preprocessing_fn=preprocessing_fn)
context.run(transform)
3.6 Trainer
Funktion: Trainiert das ML-Modell mit den transformierten Daten.
Beispiel:
from tfx.components import Trainer
from tfx.proto import trainer_pb2
trainer = Trainer(
module_file='path/to/training_module.py',
examples=transform.outputs['transformed_examples'],
schema=schema_gen.outputs['schema'],
transform_graph=transform.outputs['transform_graph'],
train_args=trainer_pb2.TrainArgs(num_steps=10000),
eval_args=trainer_pb2.EvalArgs(num_steps=5000)
)
context.run(trainer)
3.7 Tuner
Funktion: Optimiert die Hyperparameter des Modells, um die bestmögliche Leistung zu erzielen.
Beispiel:
from tfx.components import Tuner
from tfx.proto import tuner_pb2
tuner = Tuner(
module_file='path/to/tuning_module.py',
examples=transform.outputs['transformed_examples'],
transform_graph=transform.outputs['transform_graph'],
train_args=trainer_pb2.TrainArgs(num_steps=10000),
eval_args=trainer_pb2.EvalArgs(num_steps=5000)
)
context.run(tuner)
3.8 Evaluator
Funktion: Bewertet die Leistung des Modells anhand der Evaluierungsdaten und definiert Metriken.
Beispiel:
from tfx.components import Evaluator
eval_config = evaluator_pb2.EvalConfig(
model_specs=[evaluator_pb2.ModelSpec(signature_name='eval')],
slicing_specs=[evaluator_pb2.SlicingSpec()],
metrics_specs=[evaluator_pb2.MetricsSpec(metrics=[
evaluator_pb2.MetricConfig(class_name='AUC')])]
)
evaluator = Evaluator(
examples=example_gen.outputs['examples'],
model_exports=trainer.outputs['model'],
eval_config=eval_config
)
context.run(evaluator)
3.9 Pusher
Funktion: Bereitstellung des trainierten Modells in einer Produktionsumgebung.
Beispiel:
from tfx.components import Pusher
from tfx.proto import pusher_pb2
pusher = Pusher(
model=trainer.outputs['model'],
push_destination=pusher_pb2.PushDestination(
filesystem=pusher_pb2.PushDestination.Filesystem(
base_directory='path/to/serving/model'
)
)
)
context.run(pusher)