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:
- Wyniki analizy do metadanych ML
- Wyniki walidacji do metadanych ML (jeśli walidacja ma być przeprowadzona)
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
Komponent 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:
- Metryki do skonfigurowania (wymagane tylko wtedy, gdy dodatkowe metryki są dodawane poza tymi zapisanymi z modelem). Aby uzyskać więcej informacji, zobacz Metryki analizy modelu Tensorflow .
- Plasterki do skonfigurowania (jeśli nie podano plasterków, to domyślnie zostanie dodany plasterek „ogólny”). Aby uzyskać więcej informacji, zobacz Konfiguracja analizy modelu Tensorflow .
Jeśli ma zostać uwzględniona walidacja, potrzebne są następujące dodatkowe informacje:
- Który model porównać (najnowszy błogosławiony itp.).
- Modelowe walidacje (progi) do weryfikacji. Aby uzyskać więcej informacji, zobacz temat Walidacje modelu analizy modelu Tensorflow .
Po włączeniu walidacja zostanie przeprowadzona dla wszystkich zdefiniowanych wskaźników i wycinków.
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 generuje 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:
...