Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Komponent Ewaluator TFX Pipeline

Składnik potoku Evaluator TFX przeprowadza dogłębną analizę wyników uczenia modeli, aby pomóc Ci zrozumieć, jak model działa na podzestawach danych. Ewaluator pomaga również zweryfikować wyeksportowane modele, zapewniając, że są one „dostatecznie dobre”, aby można je było wykorzystać do produkcji.

Gdy walidacja jest włączona, ewaluator porównuje nowe modele z linią bazową (taką jak aktualnie obsługujący model), aby określić, czy są one „wystarczająco dobre” w stosunku do linii bazowej. Czyni to poprzez ocenę obu modeli na zbiorze danych ewaluacyjnych i obliczenie ich wydajności na podstawie metryk (np. AUC, strata). Jeśli metryki nowego modelu spełniają kryteria określone przez programistę w stosunku do modelu bazowego (np. AUC nie jest niższe), model jest „błogosławiony” (oznaczony jako dobry), co oznacza dla Pushera , że można przekazać model do produkcji.

  • Zużywa:
    • Eval split z ExampleGen
    • Wytrenowany model od Trainer
    • Wcześniej błogosławiony model (jeśli ma zostać przeprowadzona walidacja)
  • Emituje:

Ewaluator i analiza modelu TensorFlow

Evaluator wykorzystuje bibliotekę TensorFlow Model Analysis do przeprowadzania analizy, która z kolei wykorzystuje Apache Beam do skalowalnego przetwarzania.

Korzystanie z komponentu ewaluatora

Składnik potoku oceny jest zwykle bardzo łatwy do wdrożenia i wymaga niewielkich dostosowań, ponieważ większość pracy jest wykonywana przez składnik ewaluator TFX.

Do ustawienia oceniającego potrzebne są następujące informacje:

Jeśli ma zostać uwzględniona walidacja, potrzebne są następujące dodatkowe informacje:

Gdy ta opcja jest włączona, sprawdzanie poprawności zostanie przeprowadzone na wszystkich zdefiniowanych metrykach i wycinkach.

Typowy kod wygląda następująco:

from tfx import components
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 = ResolverNode(
      instance_name='latest_blessed_model_resolver',
      resolver_class=latest_blessed_model_resolver.LatestBlessedModelResolver,
      model=Channel(type=Model),
      model_blessing=Channel(type=ModelBlessing))

model_analyzer = components.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)

Oceniający tworzy EvalResult (i opcjonalnie ValidationResult, jeśli użyto walidacji), który można załadować przy użyciu TFMA . Poniżej znajduje się przykład, jak załadować wyniki do notatnika Jupyter:

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:
  ...