ML 模型评估

模型评估是 ML 之旅中不可或缺的一部分。它可以让您将模型的性能与未见数据集进行比较。您可以提取选定的指标,创建可视化效果,记录元数据,并比较不同模型的性能。在您的 MLOps 生态系统中,模型评估步骤对于监控模型或多个模型的演变至关重要,尤其是在数据集随着时间的推移而增长或发生变化以及重新训练模型时。

Beam 通过使用名为 ExtractEvaluateAndWriteResults 的 PTransform,直接在管道内对 TensorFlow 模型运行模型评估提供支持。此 PTransform 是 TensorFlow 模型分析 (TFMA) 的一部分,这是一个用于对不同数据切片执行模型评估的库。TFMA 使用 Beam 以分布式方式对大量数据执行其计算,使您能够以分布式方式对大量数据进行模型评估。这些指标将在数据切片上进行比较,并在 Jupyter 或 Colab 笔记本中进行可视化。

TFMA 示例

以下是如何使用 ExtractEvaluateAndWriteResults 来评估线性回归模型的示例。

首先,定义配置以指定模型信息、选定的指标以及可选的数据切片。

from google.protobuf import text_format

# Define the TFMA evaluation configuration
eval_config = text_format.Parse("""

## Model information

  model_specs {
    # For keras and serving models, you need to add a `label_key`.
    label_key: "output"
  }

## This post-training metric information is merged with any built-in

## metrics from training

  metrics_specs {
    metrics { class_name: "ExampleCount" }
    metrics { class_name: "MeanAbsoluteError" }
    metrics { class_name: "MeanSquaredError" }
    metrics { class_name: "MeanPrediction" }
  }

  slicing_specs {}
""", tfma.EvalConfig())

然后,创建一个管道以运行评估。

from tfx_bsl.public import tfxio

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='model_path', eval_config=eval_config)

tfx_io = tfxio.TFExampleRecord(
          file_pattern='tfrecords_path',
          raw_record_column_name=tfma.ARROW_INPUT_COLUMN)

# Run evaluation
with beam.Pipeline() as pipeline:
    _ = (
        pipeline
        | 'ReadData' >> tfx_io.BeamSource()
        | 'EvalModel' >> tfma.ExtractEvaluateAndWriteResults(
           eval_shared_model=eval_shared_model,
           eval_config=eval_config,
           output_path='output_path'))

此管道将结果保存到选定的 output_path,包括配置文件、指标、图表等。

TFMA 端到端示例

有关在 Beam 上的 TFMA 中进行模型评估的完整端到端示例,请参见 tfma_beam 笔记本.

此示例展示了如何从开源数据集创建 tfrecords、训练模型以及在 Beam 中进行评估。