Komponen Pipa TFX Evaluator

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 pengembang yang ditentukan relatif terhadap model dasar (misalnya AUC tidak menurunkan), model ini "diberkati" (ditandai sebagai baik), menunjukkan kepada Pusher bahwa itu ok untuk mendorong model untuk produksi.

  • mengkonsumsi:
    • Eval berpisah dari ExampleGen
    • Sebuah model terlatih dari Trainer
    • Model yang diberkati sebelumnya (jika validasi akan dilakukan)
  • memancarkan:

Analisis Model Evaluator dan TensorFlow

Evaluator memanfaatkan Analisis Model TensorFlow perpustakaan untuk melakukan analisis, yang pada gilirannya digunakan Apache Beam untuk pengolahan scalable.

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 untuk dikonfigurasi (hanya diperlukan jika metrik tambahan ditambahkan di luar metrik yang disimpan dengan model). Lihat Tensorflow Model Analisis Metrik untuk informasi lebih lanjut.
  • Irisan untuk dikonfigurasi (jika tidak ada irisan yang diberikan maka irisan "keseluruhan" akan ditambahkan secara default). Lihat Analisis Model Tensorflow Pengaturan untuk informasi lebih lanjut.

Jika validasi harus disertakan, informasi tambahan berikut diperlukan:

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 dengan 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:
  ...

Keterangan lebih lanjut tersedia di Evaluator API referensi .