Komponen pipa Evaluator TFX melakukan analisis mendalam pada hasil pelatihan untuk model Anda, untuk membantu Anda memahami bagaimana kinerja model Anda pada subkumpulan data Anda. Evaluator juga membantu Anda memvalidasi model yang diekspor, memastikan bahwa model tersebut "cukup baik" untuk didorong ke produksi.
Saat validasi diaktifkan, Service Checker membandingkan model baru dengan baseline (seperti model yang saat ini ditayangkan) untuk menentukan apakah mereka "cukup baik" dibandingkan dengan baseline. Itu dilakukan dengan mengevaluasi kedua model pada dataset eval dan menghitung kinerjanya pada metrik (misalnya AUC, kerugian). Jika metrik model baru memenuhi kriteria yang ditentukan developer relatif terhadap model dasar (mis. AUC tidak lebih rendah), model tersebut "diberkati" (ditandai sebagai baik), menunjukkan kepada Pusher bahwa tidak apa-apa untuk mendorong model ke produksi.
- Mengkonsumsi:
- Perpecahan eval dari ExampleGen
- Model terlatih dari Pelatih
- Model yang diberkati sebelumnya (jika validasi akan dilakukan)
- Memancarkan:
- Hasil analisis terhadap Metadata ML
- Hasil validasi ke Metadata ML (jika validasi akan dilakukan)
Analisis Model Evaluator dan TensorFlow
Evaluator memanfaatkan pustaka Analisis Model TensorFlow untuk melakukan analisis, yang selanjutnya menggunakan Apache Beam untuk pemrosesan yang dapat diskalakan.
Menggunakan Komponen Evaluator
Komponen pipeline Evaluator biasanya sangat mudah diterapkan dan memerlukan sedikit penyesuaian, karena sebagian besar pekerjaan dilakukan oleh komponen Evaluator TFX.
Untuk menyiapkan evaluator, diperlukan informasi berikut:
- Metrik untuk 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 akan dibandingkan (berkah terbaru, dll).
- Validasi model (ambang batas) untuk memverifikasi. Lihat Validasi Model Analisis Model Tensorflow untuk informasi selengkapnya.
Saat diaktifkan, validasi akan dilakukan terhadap semua metrik dan irisan yang ditentukan.
Kode tipikal 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 secara opsional ValidationResult jika validasi digunakan) yang dapat dimuat menggunakan TFMA . Berikut adalah contoh cara memuat hasil ke 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 Evaluator API .