O componente de pipeline TFX do avaliador

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O componente de pipeline Evaluator TFX realiza uma análise profunda dos resultados de treinamento para seus modelos, para ajudá-lo a entender como seu modelo funciona em subconjuntos de seus dados. O Evaluator também ajuda você a validar seus modelos exportados, garantindo que eles sejam "bons o suficiente" para serem enviados para produção.

Quando a validação está habilitada, o Avaliador compara novos modelos com uma linha de base (como o modelo em exibição no momento) para determinar se eles são "bons o suficiente" em relação à linha de base. Ele faz isso avaliando ambos os modelos em um conjunto de dados de avaliação e computando seu desempenho em métricas (por exemplo, AUC, perda). Se as métricas do novo modelo atenderem aos critérios especificados pelo desenvolvedor em relação ao modelo de linha de base (por exemplo, a AUC não for menor), o modelo será "abençoado" (marcado como bom), indicando ao Empurrador que não há problema em enviar o modelo para produção.

  • Consome:
    • Uma divisão eval de ExampleGen
    • Um modelo treinado do Trainer
    • Um modelo previamente abençoado (se a validação for realizada)
  • Emite:

Avaliador e análise do modelo TensorFlow

O Evaluator aproveita a biblioteca TensorFlow Model Analysis para realizar a análise, que por sua vez usa o Apache Beam para processamento escalável.

Usando o componente avaliador

Um componente de pipeline Evaluator geralmente é muito fácil de implantar e requer pouca personalização, pois a maior parte do trabalho é feita pelo componente Evaluator TFX.

Para configurar o avaliador são necessárias as seguintes informações:

  • Métricas a serem configuradas (somente necessárias se métricas adicionais estiverem sendo adicionadas fora daquelas salvas com o modelo). Consulte Métricas de análise de modelo do Tensorflow para obter mais informações.
  • Fatias para configurar (se nenhuma fatia for fornecida, uma fatia "geral" será adicionada por padrão). Consulte Configuração de análise de modelo do Tensorflow para obter mais informações.

Se a validação deve ser incluída, as seguintes informações adicionais são necessárias:

  • Com qual modelo comparar (última bênção, etc).
  • Validações de modelo (limiares) para verificar. Consulte Validações do modelo de análise do modelo do Tensorflow para obter mais informações.

Quando habilitada, a validação será realizada em relação a todas as métricas e fatias que foram definidas.

O código típico se parece com isso:

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)

O avaliador produz um EvalResult (e opcionalmente um ValidationResult se a validação foi usada) que pode ser carregado usando TFMA . Veja a seguir um exemplo de como carregar os resultados em um notebook 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:
  ...

Mais detalhes estão disponíveis na referência da API do avaliador .