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 métricas do novo modelo atender aos critérios especificados pelo desenvolvedor em relação ao modelo base (por exemplo AUC não é inferior), o modelo é "abençoado" (marcada como boa), indicando ao Pusher que é ok para empurrar o modelo de produção.
- Consome:
- Uma divisão eval de ExampleGen
- Um modelo treinado desde instrutor
- Um modelo previamente abençoado (se a validação for realizada)
- Emite:
- Os resultados da análise para ML Metadados
- Resultados de validação para ML metadados (se a validação a ser executada)
Avaliador e análise do modelo TensorFlow
Avaliador aproveita o TensorFlow Modelo de Análise de biblioteca para realizar a análise, que por sua vez o uso Apache feixe 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). Veja Tensorflow Modelo de Análise de Métricas para mais informações.
- Fatias para configurar (se não forem fornecidas fatias, uma fatia "geral" será adicionada por padrão). Veja Setup Tensorflow Modelo de Análise para 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. Veja Tensorflow modelo Modelo de Análise de validações para 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 utilizando o 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 API avaliador .