Komponent potoku TFX oceniającego

Komponent potoku Evaluator TFX przeprowadza głęboką analizę wyników uczenia modeli, aby pomóc Ci zrozumieć, jak Twój model radzi sobie z podzbiorami danych. Narzędzie oceniające pomaga także zweryfikować wyeksportowane modele, upewniając się, że są „wystarczająco dobre”, aby można je było wprowadzić do produkcji.

Gdy włączona jest funkcja sprawdzania poprawności, osoba oceniająca porównuje nowe modele z wartością bazową (np. aktualnie wyświetlanym modelem), aby określić, czy są one „wystarczająco dobre” w porównaniu z wartością bazową. Dokonuje tego poprzez ocenę obu modeli na zbiorze danych eval i obliczenie ich wydajności na podstawie wskaźników (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 zostaje „pobłogosławiony” (oznaczony jako dobry), co oznacza dla Pushera , że ​​można wypchnąć model do produkcji.

  • Zużywa:
    • Podział ewaluacji z przykładów
    • Wyszkolony model od Trainer
    • Model wcześniej pobłogosławiony (jeśli ma zostać przeprowadzona walidacja)
  • Emituje:

Analiza modelu ewaluatora i TensorFlow

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

Korzystanie z komponentu oceniającego

Komponent potoku oceny jest zazwyczaj bardzo łatwy do wdrożenia i wymaga niewielkiego dostosowania, ponieważ większość pracy jest wykonywana przez komponent Evaluator TFX.

Aby skonfigurować ewaluatora potrzebne są następujące informacje:

  • Metryki do skonfigurowania (wymagane tylko w przypadku dodawania dodatkowych metryk poza tymi zapisanymi w modelu). Aby uzyskać więcej informacji, zobacz metryki analizy modelu Tensorflow .
  • Plasterki do skonfigurowania (jeśli nie podano żadnych plasterków, domyślnie zostanie dodany plasterek „ogólny”). Aby uzyskać więcej informacji, zobacz Konfiguracja analizy modelu Tensorflow .

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

Po włączeniu walidacja zostanie przeprowadzona względem wszystkich zdefiniowanych metryk i wycinków.

Typowy kod wygląda następująco:

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)

Osoba oceniająca generuje EvalResult (i opcjonalnie ValidationResult , jeśli zastosowano walidację), który można załadować za pomocą TFMA . Poniżej znajduje się przykład ładowania wyników 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:
  ...

Więcej szczegółów można znaleźć w dokumencie Evaluator API .