Il componente della pipeline Evaluator TFX esegue un'analisi approfondita sui risultati dell'addestramento per i tuoi modelli, per aiutarti a capire come si comporta il tuo modello su sottoinsiemi di dati. Il Valutatore ti aiuta anche a convalidare i tuoi modelli esportati, assicurando 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 disponibile) per determinare se sono "abbastanza buoni" rispetto alla linea di base. Lo fa valutando entrambi i modelli su un set di dati di valutazione e calcolando le loro prestazioni su parametri (ad esempio AUC, perdita). Se i parametri del nuovo modello soddisfano i criteri specificati dallo sviluppatore rispetto al modello di base (ad esempio l'AUC non è inferiore), il modello viene "benedetto" (contrassegnato come buono), indicando al Pusher che è ok per mettere il modello in produzione.
- Consuma:
- Emette:
- Risultati dell'analisi in metadati ML
- Risultati della convalida nei metadati ML (se la convalida deve essere eseguita)
Valutatore e analisi del modello TensorFlow
Evaluator sfrutta la libreria TensorFlow Model Analysis per eseguire l'analisi, che a sua volta utilizza Apache Beam per l'elaborazione scalabile.
Utilizzo del componente Valutatore
Un componente della pipeline di Evaluator è in genere molto semplice da implementare e richiede poca personalizzazione, poiché la maggior parte del lavoro viene svolto dal componente TFX di Evaluator.
Per impostare il valutatore sono necessarie le seguenti informazioni:
- Metriche da configurare (richieste solo se vengono aggiunte ulteriori metriche oltre a quelle salvate con il modello). Per ulteriori informazioni, consulta Metriche di analisi del modello Tensorflow .
- Sezioni da configurare (se non viene fornita alcuna sezione, per impostazione predefinita verrà aggiunta una sezione "complessiva"). Per ulteriori informazioni, consulta Configurazione dell'analisi del modello Tensorflow .
Se è necessario includere la convalida, sono necessarie le seguenti informazioni aggiuntive:
- Con quale modello confrontare (ultimo benedetto, ecc.).
- Convalide del modello (soglie) da verificare. Per ulteriori informazioni, consulta Convalide del modello di analisi del modello Tensorflow .
Se abilitata, la convalida verrà eseguita rispetto a tutti i parametri e le sezioni definiti.
Il codice tipico è simile al seguente:
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 è stata utilizzata la convalida) che può essere caricato utilizzando 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 .