SIG TFX-Addons topluluğuna katılın ve TFX'in daha da iyi olmasına yardımcı olun!
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

TensorFlow Model Analizine Başlarken

Genel Bakış

TensorFlow Model Analizi (TFMA), model değerlendirmesi gerçekleştirmek için bir kitaplıktır.

  • İçin : Makine Öğrenimi Mühendisleri veya Veri Bilimcileri
  • kim : TensorFlow modellerini analiz etmek ve anlamak isteyen
  • bu : bağımsız bir kitaplık veya bir TFX işlem hattının bileşeni
  • Bu : modelleri, eğitimde tanımlanan aynı metriklere göre dağıtılmış bir şekilde büyük miktarda veriye dayalı olarak değerlendirir. Bu ölçümler, veri dilimlerinde karşılaştırılır ve Jupyter veya Colab not defterlerinde görselleştirilir.
  • aksine : model iç gözlem sunan tensorboard gibi bazı iç gözlem araçları

TFMA, Apache Beam kullanarak hesaplamalarını büyük miktarda veri üzerinden dağıtılmış bir şekilde gerçekleştirir. Aşağıdaki bölümler, temel bir TFMA değerlendirme kanalının nasıl kurulacağını açıklamaktadır. Bkz mimari yatan uygulanmasına ilişkin daha fazla ayrıntı.

Sadece atlamak ve başlamak istiyorsanız, colab defterimize bakın.

Bu sayfa ayrıca tensorflow.org adresinden de görüntülenebilir.

Desteklenen Model Türleri

TFMA, tensorflow tabanlı modelleri desteklemek için tasarlanmıştır, ancak diğer çerçeveleri de desteklemek için kolayca genişletilebilir. Geçmişte, TFMA, TFMA'yı kullanmak için bir EvalSavedModel oluşturulmasını gerektiriyordu, ancak TFMA'nın en son sürümü, kullanıcının ihtiyaçlarına bağlı olarak birden çok model türünü destekliyordu. Bir EvalSavedModel'in ayarlanması yalnızca tf.estimator tabanlı bir model kullanılıyorsa ve özel eğitim süresi metrikleri gerekliyse gerekli olmalıdır.

TFMA artık sunum modeline göre çalıştığından, TFMA artık eğitim zamanında eklenen metrikleri otomatik olarak değerlendirmeyecektir. Bu durumun istisnası, bir keras modelinin kullanılmasıdır, çünkü keras, kaydedilen modelle birlikte kullanılan ölçümleri kaydetmektedir. Ancak, bu zor bir gereksinimse, en son TFMA geriye dönük olarak uyumludur, öyle ki bir EvalSavedModel hala bir TFMA ardışık düzeninde çalıştırılabilir.

Aşağıdaki tablo varsayılan olarak desteklenen modelleri özetlemektedir:

Model türü Eğitim Süresi Metrikleri Eğitim Sonrası Metrikler
TF2 (keras) Y * Y
TF2 (genel) Yok Y
EvalSavedModel (tahminci) Y Y
Yok (pd.DataFrame, vb.) Yok Y
  • Eğitim Süresi ölçümleri, eğitim zamanında tanımlanan ve modelle kaydedilen (TFMA EvalSavedModel veya keras kaydedilen model) ölçümleri ifade eder. Eğitim sonrası ölçümler, tfma.MetricConfig aracılığıyla eklenen ölçümleri ifade eder.
  • Genel TF2 modelleri, çıkarım için kullanılabilen imzaları dışa aktaran ve ne keras ne de tahmin ediciye dayalı olmayan özel modellerdir.

Bu farklı model türlerinin nasıl kurulup yapılandırılacağı hakkında daha fazla bilgi için SSS bölümüne bakın.

Kurmak

Bir değerlendirmeyi çalıştırmadan önce, az miktarda kurulum gereklidir. İlk olarak, değerlendirilecek model, ölçümler ve dilimler için özellikler sağlayan bir tfma.EvalConfig nesnesi tanımlanmalıdır. İkinci olarak, değerlendirme sırasında kullanılacak gerçek modele (veya modellere) işaret eden bir tfma.EvalSharedModel oluşturulması gerekir. Bunlar tanımlandıktan sonra, değerlendirme, uygun bir veri tfma.run_model_analysis çağırarak gerçekleştirilir. Daha fazla ayrıntı için kurulum kılavuzuna bakın.

Bir TFX işlem hattı içinde çalışıyorsa, TFMA'nın bir TFX Değerlendiricisi bileşeni olarak çalışacak şekilde nasıl yapılandırılacağını öğrenmek için TFX kılavuzuna bakın.

Örnekler

Tek Model Değerlendirmesi

Aşağıda, bir sunum modelinde değerlendirme yapmak için tfma.run_model_analysis kullanılmaktadır. Gereken farklı ayarların açıklaması için kurulum kılavuzuna bakın.

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics { class_name: "AUC" }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='/path/to/saved/model', eval_config=eval_config)

eval_result = tfma.run_model_analysis(
    eval_shared_model=eval_shared_model,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location='/path/to/file/containing/tfrecords',
    output_path='/path/for/output')

tfma.view.render_slicing_metrics(eval_result)

Dağıtılmış değerlendirme için, dağıtılmış bir çalıştırıcı kullanarak bir Apache Beam ardışık düzeni oluşturun. tfma.ExtractEvaluateAndWriteResults hattında, değerlendirme ve sonuçları yazmak için tfma.ExtractEvaluateAndWriteResults kullanın. Sonuçlar tfma.load_eval_result kullanılarak görselleştirme için tfma.load_eval_result .

Örneğin:

# To run the pipeline.
from google.protobuf import text_format
from tfx_bsl.tfxio import tf_example_record

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics { class_name: "AUC" }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='/path/to/saved/model', eval_config=eval_config)

output_path = '/path/for/output'

tfx_io = tf_example_record.TFExampleRecord(
    file_pattern=data_location, raw_record_column_name=tfma.ARROW_INPUT_COLUMN)

with beam.Pipeline(runner=...) as p:
  _ = (p
       # You can change the source as appropriate, e.g. read from BigQuery.
       # This assumes your data is a TFRecords file containing records in the
       # tf.train.Example format. If using EvalSavedModel then use the following
       # instead: 'ReadData' >> beam.io.ReadFromTFRecord(file_pattern=...)
       | 'ReadData' >> tfx_io.BeamSource()
       | 'ExtractEvaluateAndWriteResults' >>
       tfma.ExtractEvaluateAndWriteResults(
            eval_shared_model=eval_shared_model,
            eval_config=eval_config,
            output_path=output_path))

# To load and visualize results.
# Note that this code should be run in a Jupyter Notebook.
result = tfma.load_eval_result(output_path)
tfma.view.render_slicing_metrics(result)

Model geçerliliği

Bir aday ve temele göre model doğrulaması gerçekleştirmek için yapılandırmayı bir eşik ayarı içerecek şekilde güncelleyin ve iki modeli tfma.run_model_analysis .

Örneğin:

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics {
      class_name: "AUC"
      threshold {
        value_threshold {
          lower_bound { value: 0.9 }
        }
        change_threshold {
          direction: HIGHER_IS_BETTER
          absolute { value: -1e-10 }
        }
      }
    }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_models = [
  tfma.default_eval_shared_model(
      model_name=tfma.CANDIDATE_KEY,
      eval_saved_model_path='/path/to/saved/candiate/model',
      eval_config=eval_config),
  tfma.default_eval_shared_model(
      model_name=tfma.BASELINE_KEY,
      eval_saved_model_path='/path/to/saved/baseline/model',
      eval_config=eval_config),
]

output_path = '/path/for/output'

eval_result = tfma.run_model_analysis(
    eval_shared_models,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location='/path/to/file/containing/tfrecords',
    output_path=output_path)

tfma.view.render_slicing_metrics(eval_result)
tfma.load_validation_result(output_path)

Görselleştirme

TFMA değerlendirme sonuçları, TFMA'da bulunan ön uç bileşenleri kullanılarak bir Jupyter dizüstü bilgisayarda görselleştirilebilir. Örneğin:

TFMA Dilimleme Metrikleri Tarayıcısı .

Daha fazla bilgi