Whatsapp Telegram Telegram Call Anrufen

Pipeline Orchestrierung mit TFX


1. Einführung in die Pipeline-Orchestrierung mit TFX

Eine ML-Pipeline ist eine Folge von Schritten, die von der Datenaufnahme über die Modellierung bis hin zur Bereitstellung reicht. TFX (TensorFlow Extended) bietet eine robuste Umgebung für die Erstellung, Verwaltung und Bereitstellung solcher Pipelines. Die Orchestrierung einer TFX-Pipeline stellt sicher, dass jeder Schritt im ML-Lebenszyklus reibungslos und reproduzierbar abläuft.

2. Aufbau einer TFX-Pipeline

Eine TFX-Pipeline besteht aus verschiedenen Komponenten, die nacheinander ausgeführt werden. Diese Komponenten sind so konzipiert, dass sie nahtlos zusammenarbeiten und einen vollständig automatisierten ML-Workflow ermöglichen.

Beispiel: Aufbau einer TFX-Pipeline

import os
from tfx.orchestration.experimental.interactive.interactive_context import InteractiveContext
from tfx.components import CsvExampleGen, StatisticsGen, SchemaGen, ExampleValidator, Transform, Trainer, Evaluator, Pusher
from tfx.proto import trainer_pb2, pusher_pb2, evaluator_pb2
from tfx.orchestration.pipeline import Pipeline
from tfx.orchestration.local.local_dag_runner import LocalDagRunner

# Setzen der Pipeline-Parameter
pipeline_name = 'my_pipeline'
pipeline_root = os.path.join('pipelines', pipeline_name)
data_root = os.path.join('data')
module_file = os.path.join('modules', 'module_file.py')
serving_model_dir = os.path.join(pipeline_root, 'serving_model')

# Definition der Pipeline-Komponenten
example_gen = CsvExampleGen(input_base=data_root)
statistics_gen = StatisticsGen(examples=example_gen.outputs['examples'])
schema_gen = SchemaGen(statistics=statistics_gen.outputs['statistics'])
example_validator = ExampleValidator(statistics=statistics_gen.outputs['statistics'], schema=schema_gen.outputs['schema'])
transform = Transform(examples=example_gen.outputs['examples'], schema=schema_gen.outputs['schema'], preprocessing_fn='module_file.preprocessing_fn')
trainer = Trainer(
    module_file=module_file,
    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)
)
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)
pusher = Pusher(model=trainer.outputs['model'], push_destination=pusher_pb2.PushDestination(
    filesystem=pusher_pb2.PushDestination.Filesystem(base_directory=serving_model_dir)))

# Aufbau der Pipeline
pipeline = Pipeline(
    pipeline_name=pipeline_name,
    pipeline_root=pipeline_root,
    components=[example_gen, statistics_gen, schema_gen, example_validator, transform, trainer, evaluator, pusher],
    enable_cache=True,
    metadata_connection_config=None,
)

# Ausführen der Pipeline
LocalDagRunner().run(pipeline)


2. Datenvalidierung

Die Datenvalidierung ist ein wichtiger Schritt in einer ML-Pipeline. Sie stellt sicher, dass die Eingabedaten korrekt und konsistent sind. TFX bietet verschiedene Komponenten zur Durchführung dieser Aufgabe.

Beispiel: Datenvalidierung mit TFX


from tfx.components import StatisticsGen, SchemaGen, ExampleValidator

# Annahme: example_gen ist bereits definiert
statistics_gen = StatisticsGen(examples=example_gen.outputs['examples'])
schema_gen = SchemaGen(statistics=statistics_gen.outputs['statistics'])
example_validator = ExampleValidator(statistics=statistics_gen.outputs['statistics'], schema=schema_gen.outputs['schema'])

context.run(statistics_gen)
context.run(schema_gen)
context.run(example_validator)


In diesem Beispiel generiert StatisticsGen Statistiken über die Eingabedaten, SchemaGen erstellt ein Schema basierend auf diesen Statistiken, und ExampleValidator überprüft die Daten gegen das Schema, um Anomalien zu identifizieren.

3. Modelltraining und -validierung

Das Training und die Validierung eines Modells sind zentrale Schritte in einer ML-Pipeline. TFX verwendet die Trainer- und Evaluator-Komponenten, um diese Aufgaben zu automatisieren.

Beispiel: Modelltraining und -validierung mit TFX

from tfx.components import Trainer, Evaluator
from tfx.proto import trainer_pb2, evaluator_pb2

# Definition des Trainers
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)
)

# Definition des Evaluators
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(trainer)
context.run(evaluator)


In diesem Beispiel trainiert Trainer das Modell mit den transformierten Daten und Evaluator bewertet die Leistung des Modells anhand vordefinierter Metriken.

4. Modellbereitstellung (Model Serving)

Nach dem Training und der Validierung des Modells ist der nächste Schritt die Bereitstellung in einer Produktionsumgebung. Die Pusher-Komponente von TFX automatisiert diesen Prozess.

Beispiel: Modellbereitstellung mit TFX

from tfx.components import Pusher
from tfx.proto import pusher_pb2

# Definition des Pushers
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)

In diesem Beispiel speichert Pusher das trainierte Modell in einem Verzeichnis, von dem aus es in einer Produktionsumgebung bereitgestellt werden kann.


Mit diesen detaillierten Erklärungen und Beispielen können Sie die Grundlagen der Pipeline-Orchestrierung mit TFX verstehen und lernen, wie Sie ML-Pipelines für Datenvalidierung, Modelltraining, -validierung und -bereitstellung implementieren. TFX bietet eine leistungsfähige Plattform zur Automatisierung und Optimierung des gesamten ML-Lebenszyklus.



CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!