Treten Sie der SIG TFX-Addons-Community bei und helfen Sie mit, TFX noch besser zu machen! SIG TFX-Addons beitreten

Die Evaluator TFX-Pipeline-Komponente

Die Evaluator TFX-Pipelinekomponente führt eine gründliche Analyse der Trainingsergebnisse für Ihre Modelle durch, um Ihnen zu helfen, die Leistung Ihres Modells für Teilmengen Ihrer Daten zu verstehen. Der Evaluator hilft Ihnen auch bei der Validierung Ihrer exportierten Modelle und stellt sicher, dass diese "gut genug" sind, um in die Produktion übernommen zu werden.

Wenn die Validierung aktiviert ist, vergleicht der Evaluator neue Modelle mit einer Basislinie (z. B. dem aktuell bereitgestellten Modell), um festzustellen, ob sie relativ zur Basislinie "gut genug" sind. Dazu werden beide Modelle anhand eines Bewertungsdatensatzes ausgewertet und ihre Leistung anhand von Metriken (z. B. AUC, Verlust) berechnet. Wenn die Metriken des neuen Modells erfüllen Entwickler festgelegten Kriterien in Bezug auf das Basismodell (zB AUC nicht niedriger ist ), wird das Modell „gesegnet“ (so gut markiert), auf die Anzeige Pusher , dass es in Ordnung ist , das Modell zu Produktion zu drücken.

  • Verbraucht:
    • Eine Bewertung von ExampleGen
    • Ein trainiertes Modell von Trainer
    • Ein zuvor gesegnetes Modell (falls eine Validierung durchgeführt werden soll)
  • Emits:
    • Analyseergebnisse zu ML-Metadaten
    • Validierungsergebnisse für ML-Metadaten (falls eine Validierung durchgeführt werden soll)

Evaluator- und TensorFlow-Modellanalyse

Evaluator nutzt die TensorFlow-Modellanalysebibliothek , um die Analyse durchzuführen, die wiederum Apache Beam für die skalierbare Verarbeitung verwendet.

Verwenden der Evaluator-Komponente

Eine Evaluator-Pipeline-Komponente ist in der Regel sehr einfach bereitzustellen und erfordert nur wenige Anpassungen, da der größte Teil der Arbeit von der Evaluator-TFX-Komponente erledigt wird.

Zum Einrichten des Evaluators werden folgende Informationen benötigt:

  • Zu konfigurierende Metriken (nur erforderlich, wenn zusätzliche Metriken außerhalb der mit dem Modell gespeicherten hinzugefügt werden). Weitere Informationen finden Sie unter Metriken für die Tensorflow-Modellanalyse .
  • Zu konfigurierende Slices (wenn keine Slices angegeben werden, wird standardmäßig ein "Gesamt" -Slice hinzugefügt). Weitere Informationen finden Sie unter Einrichtung der Tensorflow-Modellanalyse .

Wenn eine Validierung eingeschlossen werden soll, werden die folgenden zusätzlichen Informationen benötigt:

Wenn diese Option aktiviert ist, wird die Validierung für alle definierten Metriken und Slices durchgeführt.

Typischer Code sieht folgendermaßen aus:

import tensorflow_model_analysis as tfma
...

# For TFMA evaluation

eval_config = tfma.EvalConfig(
    model_specs=[
        # This assumes a serving model with signature 'serving_default'. If
        # using estimator based EvalSavedModel, add signature_name='eval' and
        # remove the label_key. Note, if using a TFLite model, then you must set
        # model_type='tf_lite'.
        tfma.ModelSpec(label_key='<label_key>')
    ],
    metrics_specs=[
        tfma.MetricsSpec(
            # The metrics added here are in addition to those saved with the
            # model (assuming either a keras model or EvalSavedModel is used).
            # Any metrics added into the saved model (for example using
            # model.compile(..., metrics=[...]), etc) will be computed
            # automatically.
            metrics=[
                tfma.MetricConfig(class_name='ExampleCount'),
                tfma.MetricConfig(
                    class_name='BinaryAccuracy',
                    threshold=tfma.MetricThreshold(
                        value_threshold=tfma.GenericValueThreshold(
                            lower_bound={'value': 0.5}),
                        change_threshold=tfma.GenericChangeThreshold(
                            direction=tfma.MetricDirection.HIGHER_IS_BETTER,
                            absolute={'value': -1e-10})))
            ]
        )
    ],
    slicing_specs=[
        # An empty slice spec means the overall slice, i.e. the whole dataset.
        tfma.SlicingSpec(),
        # Data can be sliced along a feature column. In this case, data is
        # sliced along feature column trip_start_hour.
        tfma.SlicingSpec(feature_keys=['trip_start_hour'])
    ])

# The following component is experimental and may change in the future. This is
# required to specify the latest blessed model will be used as the baseline.
model_resolver = Resolver(
      strategy_class=dsl.experimental.LatestBlessedModelStrategy,
      model=Channel(type=Model),
      model_blessing=Channel(type=ModelBlessing)
).with_id('latest_blessed_model_resolver')

model_analyzer = Evaluator(
      examples=examples_gen.outputs['examples'],
      model=trainer.outputs['model'],
      baseline_model=model_resolver.outputs['model'],
      # Change threshold will be ignored if there is no baseline (first run).
      eval_config=eval_config)

Der Evaluator erstellt ein EvalResult (und optional ein ValidationResult, wenn die Validierung verwendet wurde), das mit TFMA geladen werden kann . Im Folgenden finden Sie ein Beispiel für das Laden der Ergebnisse in ein Jupyter-Notizbuch:

import tensorflow_model_analysis as tfma

output_path = evaluator.outputs['evaluation'].get()[0].uri

# Load the evaluation results.
eval_result = tfma.load_eval_result(output_path)

# Visualize the metrics and plots using tfma.view.render_slicing_metrics,
# tfma.view.render_plot, etc.
tfma.view.render_slicing_metrics(tfma_result)
...

# Load the validation results
validation_result = tfma.load_validation_result(output_path)
if not validation_result.validation_ok:
  ...

Weitere Details finden Sie in der Evaluator-API-Referenz .