Il componente della pipeline Evaluator TFX esegue un'analisi approfondita dei risultati dell'addestramento per i tuoi modelli, per aiutarti a capire come si comporta il tuo modello su sottoinsiemi di 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, l'Evaluator confronta i nuovi modelli rispetto a 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 metriche (ad es. AUC, perdita). Se le metriche del nuovo modello soddisfano i criteri specificati dallo sviluppatore relativi al modello di base (ad es. AUC non è inferiore), il modello viene "benedetto" (contrassegnato come buono), indicando al Pusher che è consentito inviare il modello alla produzione.
- Consuma:
- Una divisione eval da ExampleGen
- Un modello addestrato da Trainer
- Un modello precedentemente benedetto (se la convalida deve essere eseguita)
- 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 di valutazione
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 (necessarie solo se vengono aggiunte metriche aggiuntive oltre a quelle salvate con il modello). Vedere Metriche di analisi del modello Tensorflow per ulteriori informazioni.
- Sezioni da configurare (se non vengono fornite sezioni, per impostazione predefinita verrà aggiunta una sezione "complessiva"). Vedere Configurazione dell'analisi del modello Tensorflow per ulteriori informazioni.
Se deve essere inclusa la convalida, sono necessarie le seguenti informazioni aggiuntive:
- Con quale modello confrontare (l'ultimo benedetto, ecc.).
- Convalide del modello (soglie) da verificare. Vedere Convalide del modello di analisi del modello Tensorflow per ulteriori informazioni.
Se abilitata, la convalida verrà eseguita rispetto a 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 è 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 .