MLモデル評価

モデル評価は、MLの取り組みにおいて不可欠な部分です。これにより、モデルのパフォーマンスを未知のデータセットに対してベンチマークできます。選択したメトリクスの抽出、視覚化の作成、メタデータのログ記録、および異なるモデルのパフォーマンスの比較を行うことができます。MLOpsエコシステムでは、データセットが増加または変化したり、モデルを再トレーニングしたりする場合、モデルまたは複数のモデルの進化を監視するために、モデル評価ステップが不可欠です。

Beamは、ExtractEvaluateAndWriteResultsというPTransformを使用して、パイプライン内で直接TensorFlowモデルのモデル評価を実行するためのサポートを提供します。このPTransformは、TensorFlow Model Analysis (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ノートブックを参照してください。

この例では、オープンソースデータセットからのtfrecordの作成、モデルのトレーニング、およびBeamでの評価を示しています。