Компонент конвейера Evaluator TFX выполняет глубокий анализ результатов обучения для ваших моделей, чтобы помочь вам понять, как ваша модель работает с подмножествами ваших данных. Оценщик также помогает проверить экспортированные модели, чтобы убедиться, что они «достаточно хороши» для запуска в производство.
Когда проверка включена, оценщик сравнивает новые модели с базовым уровнем (например, с текущей моделью), чтобы определить, являются ли они «достаточно хорошими» по сравнению с базовым уровнем. Это достигается путем оценки обеих моделей в наборе данных eval и вычисления их производительности по метрикам (например, AUC, потерям). Если метрики новой модели соответствуют указанным разработчиком критериям относительно базовой модели (например, AUC не ниже), модель «благословляется» (отмечается как хорошая), указывая отправителю , что можно отправить модель в производство.
- Потребляет:
- eval отделился от ExampleGen
- Обученная модель от Trainer
- Предварительно благословленная модель (если необходимо выполнить проверку)
- Излучает:
- Результаты анализа метаданных машинного обучения
- Результаты проверки для метаданных ML (если проверка должна быть выполнена)
Оценщик и анализ модели TensorFlow
Evaluator использует библиотеку анализа моделей TensorFlow для выполнения анализа, который, в свою очередь, использует Apache Beam для масштабируемой обработки.
Использование компонента оценки
Компонент конвейера Evaluator обычно очень прост в развертывании и требует небольшой настройки, поскольку большую часть работы выполняет компонент TFX Evaluator.
Для настройки оценщика необходима следующая информация:
- Метрики для настройки (требуется только в том случае, если добавляются дополнительные метрики помимо сохраненных вместе с моделью). Дополнительную информацию см. в разделе Метрики анализа модели Tensorflow .
- Слайсы для настройки (если слайсы не заданы, то по умолчанию будет добавлен «общий» слайс). Дополнительные сведения см. в разделе Настройка анализа модели Tensorflow .
Если валидация должна быть включена, необходима следующая дополнительная информация:
- С какой моделью сравнивать (последняя благословенная и т. д.).
- Валидации модели (пороги) для проверки. Дополнительную информацию см. в разделе Проверка модели анализа модели Tensorflow .
Если этот параметр включен, проверка будет выполняться по всем определенным метрикам и срезам.
Типичный код выглядит так:
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)
Оценщик создает EvalResult (и, возможно, ValidationResult , если использовалась проверка), который можно загрузить с помощью TFMA . Ниже приведен пример загрузки результатов в блокнот 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:
...
Более подробная информация доступна в справочнике по Evaluator API .