Únase a TensorFlow en Google I/O, del 11 al 12 de mayo Regístrese ahora

El componente de canalización Evaluator TFX

El componente de canalización Evaluator TFX realiza un análisis profundo de los resultados de entrenamiento de sus modelos, para ayudarlo a comprender cómo se desempeña su modelo en subconjuntos de sus datos. El Evaluador también lo ayuda a validar sus modelos exportados, asegurándose de que sean "lo suficientemente buenos" para pasar a producción.

Cuando la validación está habilitada, el Evaluador compara nuevos modelos con una línea de base (como el modelo de servicio actual) para determinar si son "suficientemente buenos" en relación con la línea de base. Lo hace evaluando ambos modelos en un conjunto de datos eval y calculando su desempeño en métricas (por ejemplo, AUC, pérdida). Si la medición del nuevo modelo cumplen los criterios para desarrolladores especificada en relación con el modelo de referencia (por ejemplo AUC no es menor), el modelo es "feliz" (marcado como bien), lo que indica que el empujador que está bien para impulsar el modelo de producción.

  • Consume:
    • Una división de eval ExampleGen
    • Un modelo entrenado desde Trainer
    • Un modelo previamente bendecido (si se va a realizar la validación)
  • Emite:
    • Los resultados del análisis a ML Metadatos
    • Validación de los resultados a ML metadatos (si la validación a realizar)

Análisis de modelo de Evaluator y TensorFlow

Evaluador aprovecha la TensorFlow Modelo de Análisis biblioteca para realizar el análisis, que a su vez uso Apache Beam para el procesamiento escalable.

Usando el Componente Evaluador

Un componente de canalización de Evaluator suele ser muy fácil de implementar y requiere poca personalización, ya que la mayor parte del trabajo lo realiza el componente Evaluator TFX.

Para configurar el evaluador se necesita la siguiente información:

Si se va a incluir la validación, se necesita la siguiente información adicional:

Cuando está habilitado, la validación se realizará con todas las métricas y sectores que se definieron.

El código típico tiene este aspecto:

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 = Resolver(
      strategy_class=dsl.experimental.LatestBlessedModelStrategy,
      model=Channel(type=Model),
      model_blessing=Channel(type=ModelBlessing)
).with_id('latest_blessed_model_resolver')

model_analyzer = 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)

El evaluador produce un EvalResult (y opcionalmente un ValidationResult si se utilizó la validación) que puede ser cargado usando TFMA . El siguiente es un ejemplo de cómo cargar los resultados en un cuaderno 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:
  ...

Más detalles están disponibles en la referencia de la API Evaluador .