Pomoc chronić Wielkiej Rafy Koralowej z TensorFlow na Kaggle Dołącz Wyzwanie

Pierwsze kroki z analizą modelu TensorFlow

Przegląd

TensorFlow Model Analysis (TFMA) to biblioteka do przeprowadzania oceny modeli.

  • Dla: Machine Learning Inżynierów lub dane Naukowców
  • którzy: chcą analizować i rozumieć swoje modele TensorFlow
  • to: biblioteka samodzielna lub elementem rurociągu TFX
  • że: analizuje modele na dużych ilości danych w sposób rozproszony na tych samych wskaźników określonych w szkoleniu. Te metryki są porównywane z wycinkami danych i wizualizowane w notatnikach Jupyter lub Colab.
  • W odróżnieniu od: niektóre narzędzia modelu introspekcji jak tensorboard że oferta modelu introspekcja

TFMA wykonuje swoje obliczenia w równomierny sposób na duże ilości danych, z wykorzystaniem Apache belkę . W poniższych sekcjach opisano, jak skonfigurować podstawowy potok oceny TFMA. Zobacz architektury bardziej szczegółowe informacje na temat podstawowej implementacji.

Jeśli chcesz po prostu wskoczyć i zacząć, sprawdź naszą colab notebooka.

Ta strona może być oglądany z tensorflow.org .

Obsługiwane typy modeli

TFMA jest przeznaczony do obsługi modeli opartych na tensorflow, ale można go łatwo rozszerzyć, aby obsługiwał również inne frameworki. Historycznie rzecz biorąc, TFMA wymagana jest EvalSavedModel być stworzony do korzystania TFMA, ale najnowsza wersja TFMA obsługuje wiele typów modeli, w zależności od potrzeb użytkownika. Konfigurowanie EvalSavedModel powinno być wymagane tylko wtedy, gdy tf.estimator model oparty jest używany i potrzebne są metryki czasu zwyczaj szkolenie.

Pamiętaj, że ponieważ TFMA działa teraz w oparciu o model udostępniania, TFMA nie będzie już automatycznie oceniać metryk dodanych w czasie szkolenia. Wyjątkiem od tego przypadku jest użycie modelu Keras, ponieważ Keras zapisuje metryki używane wraz z zapisanym modelem. Jednakże, jeśli jest to trudne wymaganie, najnowsza TFMA jest wstecznie kompatybilny taki sposób, że EvalSavedModel nadal można uruchomić w rurociągu TFMA.

Poniższa tabela zawiera podsumowanie modeli obsługiwanych domyślnie:

Typ modelu Wskaźniki czasu treningu Wskaźniki po szkoleniu
TF2 (kerasy) T* Y
TF2 (ogólne) Nie dotyczy Y
EvalSavedModel (szacowanie) Y Y
Brak (pd.DataFrame itp.) Nie dotyczy Y
  • Metryki czasu uczenia odnoszą się do metryk zdefiniowanych w czasie uczenia i zapisanych w modelu (albo TFMA EvalSavedModel, albo zapisany model Keras). Metryki ofertę szkolenia odnosi się do metryk dodanych przez tfma.MetricConfig .
  • Ogólne modele TF2 to modele niestandardowe, które eksportują sygnatury, których można używać do wnioskowania i które nie są oparte na keras ani estymatorze.

Zobacz nas na więcej informacji nie sposób instalacji i konfiguracji tych różnych typów modeli.

Ustawiać

Przed uruchomieniem oceny wymagana jest niewielka ilość konfiguracji. Po pierwsze, tfma.EvalConfig obiekt musi być zdefiniowany, że zawiera specyfikacje modelu metryk i plastry, które mają być oceniane. Drugi tfma.EvalSharedModel musi być stworzony, że punkty do rzeczywistego modelu (lub modeli) do wykorzystania w trakcie oceny. Po nich zostały zdefiniowane, ocena odbywa się poprzez wywołanie tfma.run_model_analysis z odpowiednim zbiorze. Aby uzyskać więcej informacji, zobacz setup guide.

Jeśli działa w rurociągu TFX, zobacz TFX instrukcji dla jak skonfigurować TFMA uruchomić jako TFX Evaluator komponentu.

Przykłady

Ocena pojedynczego modelu

Następujące zastosowania tfma.run_model_analysis przeprowadzić ocenę na obsługującym modelu. O wyjaśnienie różnych ustawieniach potrzebne zobaczyć konfiguracji przewodnika.

# 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)

Rozproszone oceny skonstruować Apache belki potoku zawodnik użyciu rozproszonego. W rurociągu użyj tfma.ExtractEvaluateAndWriteResults do oceny i wypisać wyniki. Wyniki mogą być ładowane do wizualizacji za pomocą tfma.load_eval_result .

Na przykład:

# 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)

Walidacja modelu

Aby wykonać walidację modelu przeciwko candiate i wyjściowym, zaktualizuj config włączenia ustawienie progu i przekazać dwa modele do tfma.run_model_analysis .

Na przykład:

# 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)

Wyobrażanie sobie

Wyniki oceny TFMA można zwizualizować w notatniku Jupyter za pomocą komponentów interfejsu użytkownika zawartych w TFMA. Na przykład:

Przeglądarka metryk krojenia TFMA .

Więcej informacji