Komponen pipeline TFX Evaluator melakukan analisis mendalam pada hasil pelatihan untuk model Anda, untuk membantu Anda memahami bagaimana kinerja model Anda pada subset data Anda. Evaluator juga membantu Anda memvalidasi model yang diekspor, memastikan bahwa model tersebut "cukup baik" untuk didorong ke produksi.
Saat validasi diaktifkan, Evaluator membandingkan model baru dengan baseline (seperti model yang saat ini ditayangkan) untuk menentukan apakah model tersebut "cukup baik" relatif terhadap baseline. Ia melakukannya dengan mengevaluasi kedua model pada dataset evaluasi dan menghitung kinerjanya pada metrik (misalnya AUC, kerugian). Jika metrik model baru memenuhi kriteria yang ditentukan pengembang relatif terhadap model dasar (misalnya AUC tidak lebih rendah), model tersebut "diberkati" (ditandai sebagai baik), yang menunjukkan kepada Pusher bahwa boleh mendorong model ke produksi.
- mengkonsumsi:
- Perpecahan eval dari ExampleGen
- Model terlatih dari Pelatih
- Model yang diberkati sebelumnya (jika validasi akan dilakukan)
- memancarkan:
- Hasil analisis ke Metadata ML
- Hasil validasi ke Metadata ML (jika validasi akan dilakukan)
Analisis Model Evaluator dan TensorFlow
Evaluator memanfaatkan library Analisis Model TensorFlow untuk melakukan analisis, yang selanjutnya menggunakan Apache Beam untuk pemrosesan yang skalabel.
Menggunakan Komponen Evaluator
Komponen pipeline Evaluator biasanya sangat mudah diterapkan dan memerlukan sedikit penyesuaian, karena sebagian besar pekerjaan dilakukan oleh komponen TFX Evaluator.
Untuk menyiapkan evaluator, informasi berikut diperlukan:
- Metrik yang akan dikonfigurasi (hanya diperlukan jika metrik tambahan ditambahkan di luar metrik yang disimpan dengan model). Lihat Metrik Analisis Model Tensorflow untuk informasi selengkapnya.
- Irisan untuk dikonfigurasi (jika tidak ada irisan yang diberikan maka irisan "keseluruhan" akan ditambahkan secara default). Lihat Penyiapan Analisis Model Tensorflow untuk informasi selengkapnya.
Jika validasi harus disertakan, informasi tambahan berikut diperlukan:
- Model mana yang dibandingkan (berkat terbaru, dll).
- Validasi model (ambang batas) untuk diverifikasi. Lihat Validasi Model Analisis Model Tensorflow untuk informasi selengkapnya.
Saat diaktifkan, validasi akan dilakukan terhadap semua metrik dan irisan yang ditentukan.
Kode khas terlihat seperti ini:
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)
Evaluator menghasilkan EvalResult (dan opsional ValidationResult jika validasi digunakan) yang dapat dimuat menggunakan TFMA . Berikut ini adalah contoh cara memuat hasil ke dalam 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:
...
Detail lebih lanjut tersedia di referensi API Evaluator .