Komponen Saluran TFX Evaluator

Komponen pipeline TFX Evaluator melakukan analisis mendalam terhadap hasil pelatihan model Anda, untuk membantu Anda memahami bagaimana performa model pada subkumpulan data Anda. Evaluator juga membantu Anda memvalidasi model yang diekspor, memastikan bahwa model tersebut "cukup baik" untuk dimasukkan ke produksi.

Saat validasi diaktifkan, Evaluator membandingkan model baru dengan data dasar (seperti model yang saat ini ditayangkan) untuk menentukan apakah model tersebut "cukup baik" dibandingkan dengan data dasar. Hal ini dilakukan dengan mengevaluasi kedua model pada kumpulan data evaluasi dan menghitung kinerjanya berdasarkan 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 model tersebut boleh saja didorong ke produksi.

  • Mengkonsumsi:
    • Perpecahan eval dari Contoh
    • Model terlatih dari Trainer
    • Model yang sebelumnya diberkati (jika validasi harus dilakukan)
  • Memancarkan:

Analisis Model Evaluator dan TensorFlow

Evaluator memanfaatkan pustaka Analisis Model TensorFlow untuk melakukan analisis, yang kemudian 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 Evaluator TFX.

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 yang akan dikonfigurasi (jika tidak ada irisan yang diberikan maka irisan "keseluruhan" akan ditambahkan secara default). Lihat Penyiapan Analisis Model Tensorflow untuk informasi selengkapnya.

Jika validasi ingin disertakan, informasi tambahan berikut diperlukan:

Jika 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 opsional ValidationResult jika validasi digunakan) yang dapat dimuat menggunakan TFMA . Berikut ini contoh cara memuat hasilnya 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 .