Evaluator TFX Pipeline Bileşeni

Evaluator TFX işlem hattı bileşeni, modelinizin verilerinizin alt kümelerinde nasıl performans gösterdiğini anlamanıza yardımcı olmak için modellerinize yönelik eğitim sonuçları üzerinde derin analizler gerçekleştirir. Değerlendirici aynı zamanda dışa aktarılan modellerinizi doğrulamanıza da yardımcı olarak bunların üretime aktarılacak kadar "yeterince iyi" olduğundan emin olmanızı sağlar.

Doğrulama etkinleştirildiğinde, Değerlendirici yeni modelleri bir taban çizgisiyle (şu anda hizmet veren model gibi) karşılaştırarak bunların taban çizgisine göre "yeterince iyi" olup olmadıklarını belirler. Bunu, her iki modeli de bir değerlendirme veri kümesinde değerlendirerek ve performanslarını metriklere (örneğin AUC, kayıp) göre hesaplayarak yapar. Yeni modelin metrikleri, temel modele göre geliştirici tarafından belirlenen kriterleri karşılıyorsa (örneğin AUC daha düşük değilse), model "kutsanır" (iyi olarak işaretlenir), bu da İticiye modeli üretime aktarmanın sorun olmadığını belirtir.

Değerlendirici ve TensorFlow Model Analizi

Evaluator, analizi gerçekleştirmek için TensorFlow Model Analizi kütüphanesinden yararlanır ve bu kütüphane de ölçeklenebilir işleme için Apache Beam'i kullanır.

Değerlendirici Bileşenini Kullanma

Bir Evaluator işlem hattı bileşeninin dağıtımı genellikle çok kolaydır ve işin çoğu Evaluator TFX bileşeni tarafından yapıldığından çok az özelleştirme gerektirir.

Değerlendiriciyi kurmak için aşağıdaki bilgilere ihtiyaç vardır:

  • Yapılandırılacak metrikler (yalnızca modelle birlikte kaydedilenlerin dışında ek metrikler ekleniyorsa gereklidir). Daha fazla bilgi için Tensorflow Model Analizi Metriklerine bakın.
  • Yapılandırılacak dilimler (eğer herhangi bir dilim verilmezse, varsayılan olarak "genel" bir dilim eklenecektir). Daha fazla bilgi için Tensorflow Model Analizi Kurulumu'na bakın.

Doğrulamanın dahil edilmesi gerekiyorsa aşağıdaki ek bilgilere ihtiyaç vardır:

Etkinleştirildiğinde, tanımlanan tüm metriklere ve dilimlere göre doğrulama gerçekleştirilecektir.

Tipik kod şuna benzer:

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)

Değerlendirici, TFMA kullanılarak yüklenebilecek bir EvalResult (ve doğrulama kullanıldıysa isteğe bağlı olarak bir ValidationResult ) üretir. Sonuçların bir Jupyter not defterine nasıl yükleneceğinin bir örneği aşağıdadır:

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

Daha fazla ayrıntıyı Evaluator API referansında bulabilirsiniz.