Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Начало работы с анализом модели TensorFlow

  • Для : инженеров по машинному обучению или специалистов по данным
  • кто : хотят проанализировать и понять свои модели TensorFlow
  • это : отдельная библиотека или компонент конвейера TFX
  • that : оценивает модели на больших объемах данных распределенным образом по тем же метрикам, которые определены при обучении. Эти метрики сравниваются по срезам данных и визуализируются в записных книжках Jupyter или Colab.
  • отличие : некоторые инструменты самоанализа модели, такие как тензорная доска, которые предлагают самоанализ модели

TFMA выполняет свои вычисления распределенным образом над большими объемами данных с помощью Apache Beam . В следующих разделах описывается, как настроить базовый конвейер оценки TFMA. См. Более подробную информацию об архитектуре базовой реализации.

Поддерживаемые типы моделей

TFMA разработан для поддержки моделей на основе тензорного потока, но может быть легко расширен и для поддержки других фреймворков. Исторически сложилось так, что TFMA требовала создания EvalSavedModel для использования TFMA, но последняя версия TFMA поддерживает несколько типов моделей в зависимости от потребностей пользователя. Настройка EvalSavedModel требуется только в том случае, если используется tf.estimator основе tf.estimator и требуются настраиваемые метрики времени обучения.

Обратите внимание, что, поскольку теперь TFMA работает на основе модели обслуживания, TFMA больше не будет автоматически оценивать метрики, добавленные во время обучения. Исключением из этого случая является использование модели keras, поскольку keras сохраняет метрики, используемые вместе с сохраненной моделью. Однако, если это жесткое требование, последняя версия TFMA имеет обратную совместимость, так что EvalSavedModel прежнему может выполняться в конвейере TFMA.

В следующей таблице перечислены модели, поддерживаемые по умолчанию:

Тип модели Метрики времени обучения Метрики после обучения
TF2 (керас) Y * Y
TF2 (общий) Нет данных Y
EvalSavedModel (оценка) Y Y
Нет (pd.DataFrame и т. Д.) Нет данных Y
  • Метрики времени обучения относятся к метрикам, определенным во время обучения и сохраненным вместе с моделью (либо TFMA EvalSavedModel, либо сохраненной моделью keras). Метрики после обучения - это метрики, добавленные через tfma.MetricConfig .
  • Общие модели TF2 - это настраиваемые модели, которые экспортируют сигнатуры, которые могут использоваться для вывода, и не основаны ни на керасе, ни на оценке.

См. Раздел FAQ для получения дополнительной информации о том, как устанавливать и настраивать эти различные типы моделей.

Примеры

Оценка одной модели

В следующем tfma.run_model_analysis используется для оценки модели обслуживания. Для объяснения различных необходимых настроек см. Руководство по установке .

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

Для распределенной оценки постройте конвейер Apache Beam, используя распределенный исполнитель. В конвейере используйте tfma.ExtractEvaluateAndWriteResults для оценки и записи результатов. Результаты можно загрузить для визуализации с помощью tfma.load_eval_result .

Например:

# To run the pipeline.
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)

output_path = '/path/for/output'

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.
       | 'ReadData' >> beam.io.ReadFromTFRecord(
           '/path/to/file/containing/tfrecords')
       | '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)

Проверка модели

Чтобы выполнить проверку модели относительно кандидата и базовой линии, обновите конфигурацию, включив в нее настройку порога, и передайте две модели в tfma.run_model_analysis .

Например:

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

Визуализация

Результаты оценки TFMA можно визуализировать в ноутбуке Jupyter с помощью компонентов внешнего интерфейса, включенных в TFMA. Например:

Браузер показателей среза TFMA .

Больше информации