このページは Cloud Translation API によって翻訳されました。
Switch to English

エバリュエーターTFXパイプラインコンポーネント

Evaluator TFXパイプラインコンポーネントは、モデルのトレーニング結果を詳細に分析し、データのサブセットでモデルがどのように実行されるかを理解するのに役立ちます。エバリュエーターは、エクスポートされたモデルを検証して、本番環境にプッシュするのに「十分」であることを確認するのにも役立ちます。

検証が有効になっている場合、エバリュエーターは新しいモデルをベースライン(現在提供されているモデルなど)と比較して、ベースラインに対して「十分」であるかどうかを判断します。これは、評価データセットで両方のモデルを評価し、メトリック(AUC​​、損失など)でのパフォーマンスを計算することで実現します。新しいモデルのメトリクスがベースラインモデルに対して開発者が指定した基準を満たす場合(AUCが低くないなど)、モデルは「祝福」され(良好としてマークされ)、モデルを本番環境にプッシュしてもよいことをプッシャーに示します。

エバリュエーターとTensorFlowモデルの分析

エバリュエーターはTensorFlowモデル分析ライブラリを利用して分析を実行します。分析はスケーラブルな処理にApache Beamを使用します。

評価コンポーネントの使用

エバリュエーターパイプラインコンポーネントは、ほとんどの作業がエバリュエーターTFXコンポーネントによって行われるため、通常はデプロイが非常に簡単で、カスタマイズはほとんど必要ありません。

エバリュエーターをセットアップするには、以下の情報が必要です。

  • 構成するメトリック(モデルに保存されているメトリック以外に追加のメトリックが追加される場合にのみ必要)。詳細については、 Tensorflowモデル分析指標をご覧ください。
  • 構成するスライス(スライスが指定されていない場合、デフォルトで「全体」のスライスが追加されます)。詳細については、 Tensorflowモデル分析の設定をご覧ください。

検証を含める場合は、次の追加情報が必要です。

有効にすると、定義されたすべてのメトリックとスライスに対して検証が実行されます。

典型的なコードは次のようになります:

from tfx import components
import tensorflow_model_analysis as tfma

...

# For TFMA evaluation

eval_config = tfma.EvalConfig(
    model_specs=[
        # This assumes a serving model with signature 'serving_default'. If
        # using estimator based EvalSavedModel, add signature_name='eval' and
        # remove the label_key. Note, if using a TFLite model, then you must set
        # model_type='tf_lite'.
        tfma.ModelSpec(label_key='<label_key>')
    ],
    metrics_specs=[
        tfma.MetricsSpec(
            # The metrics added here are in addition to those saved with the
            # model (assuming either a keras model or EvalSavedModel is used).
            # Any metrics added into the saved model (for example using
            # model.compile(..., metrics=[...]), etc) will be computed
            # automatically.
            metrics=[
                tfma.MetricConfig(class_name='ExampleCount'),
                tfma.MetricConfig(
                    class_name='BinaryAccuracy',
                    threshold=tfma.MetricThreshold(
                        value_threshold=tfma.GenericValueThreshold(
                            lower_bound={'value': 0.5}),
                        change_threshold=tfma.GenericChangeThreshold(
                            direction=tfma.MetricDirection.HIGHER_IS_BETTER,
                            absolute={'value': -1e-10})))
            ]
        )
    ],
    slicing_specs=[
        # An empty slice spec means the overall slice, i.e. the whole dataset.
        tfma.SlicingSpec(),
        # Data can be sliced along a feature column. In this case, data is
        # sliced along feature column trip_start_hour.
        tfma.SlicingSpec(feature_keys=['trip_start_hour'])
    ])

# The following component is experimental and may change in the future. This is
# required to specify the latest blessed model will be used as the baseline.
model_resolver = ResolverNode(
      instance_name='latest_blessed_model_resolver',
      resolver_class=latest_blessed_model_resolver.LatestBlessedModelResolver,
      model=Channel(type=Model),
      model_blessing=Channel(type=ModelBlessing))

model_analyzer = components.Evaluator(
      examples=examples_gen.outputs['examples'],
      model=trainer.outputs['model'],
      baseline_model=model_resolver.outputs['model'],
      # Change threshold will be ignored if there is no baseline (first run).
      eval_config=eval_config)

エバリュエーターは、 TFMAを使用してロードできるEvalResult (および検証が使用された場合はオプションでValidationResult )を生成します。以下は、Jupyterノートブックに結果をロードする方法の例です。

import tensorflow_model_analysis as tfma

output_path = evaluator.outputs['evaluation'].get()[0].uri

# Load the evaluation results.
eval_result = tfma.load_eval_result(output_path)

# Visualize the metrics and plots using tfma.view.render_slicing_metrics,
# tfma.view.render_plot, etc.
tfma.view.render_slicing_metrics(tfma_result)
...

# Load the validation results
validation_result = tfma.load_validation_result(output_path)
if not validation_result.validation_ok:
  ...