Il componente Evaluator TFX Pipeline

Il componente della pipeline Evaluator TFX esegue un'analisi approfondita dei risultati di addestramento per i tuoi modelli, per aiutarti a capire come si comporta il tuo modello su sottoinsiemi dei tuoi dati. L'Evaluator ti aiuta anche a convalidare i tuoi modelli esportati, assicurandoti che siano "abbastanza buoni" per essere messi in produzione.

Quando la convalida è abilitata, il valutatore confronta i nuovi modelli con una linea di base (come il modello attualmente in uso) per determinare se sono "sufficientemente buoni" rispetto alla linea di base. Lo fa valutando entrambi i modelli su un set di dati eval e calcolando le loro prestazioni su metriche (ad es. AUC, perdita). Se le metriche del nuovo modello soddisfano i criteri di sviluppo specificati relative al modello di base (ad esempio, l'AUC non è più bassa), il modello è "benedetto" (contrassegnato come buono), indicando al Pusher che è ok per spingere il modello di produzione.

  • Consumi:
    • Una spaccatura eval da ExampleGen
    • Un modello addestrato da Trainer
    • Un modello precedentemente benedetto (se la convalida deve essere eseguita)
  • emette:

Valutatore e analisi del modello TensorFlow

Valutatore sfrutta la tensorflow modello di analisi libreria per eseguire l'analisi, che a sua volta l'uso di Apache a fascio per l'elaborazione scalabile.

Utilizzo del componente Valutatore

Un componente della pipeline Evaluator è in genere molto facile da distribuire e richiede poca personalizzazione, poiché la maggior parte del lavoro viene svolto dal componente Evaluator TFX.

Per impostare il valutatore sono necessarie le seguenti informazioni:

  • Metriche da configurare (obbligatorio solo se vengono aggiunte metriche aggiuntive al di fuori di quelle salvate con il modello). Vedere tensorflow modello di analisi metriche per ulteriori informazioni.
  • Sezioni da configurare (se non vengono fornite sezioni, verrà aggiunta una sezione "generale" per impostazione predefinita). Vedere Setup tensorflow modello di analisi per ulteriori informazioni.

Se è necessario includere la convalida, sono necessarie le seguenti informazioni aggiuntive:

Se abilitata, la convalida verrà eseguita su tutte le metriche e le sezioni definite.

Il codice tipico è simile a questo:

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)

Il valutatore produce un EvalResult (e facoltativamente un ValidationResult se validazione è stata utilizzata) che può essere caricato con TFMA . Di seguito è riportato un esempio di come caricare i risultati in un notebook 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:
  ...

Maggiori dettagli sono disponibili nel riferimento API Evaluator .