مؤلفه خط لوله ارزیاب TFX

مؤلفه خط لوله ارزیاب TFX تجزیه و تحلیل عمیقی را بر روی نتایج آموزشی برای مدل‌های شما انجام می‌دهد تا به شما در درک نحوه عملکرد مدل شما در زیر مجموعه‌های داده‌هایتان کمک کند. ارزیاب همچنین به شما کمک می کند تا مدل های صادراتی خود را اعتبارسنجی کنید و اطمینان حاصل کنید که آنها به اندازه کافی خوب هستند تا به سمت تولید سوق داده شوند.

هنگامی که اعتبارسنجی فعال است، ارزیابی کننده مدل‌های جدید را با خط مبنا (مانند مدل در حال ارائه فعلی) مقایسه می‌کند تا تعیین کند که آیا نسبت به خط مبنا «به اندازه کافی خوب» هستند یا خیر. این کار را با ارزیابی هر دو مدل بر روی یک مجموعه داده eval و محاسبه عملکرد آنها بر روی معیارها (به عنوان مثال AUC، ضرر) انجام می دهد. اگر معیارهای مدل جدید با معیارهای مشخص شده توسط توسعه‌دهنده نسبت به مدل پایه مطابقت داشته باشد (مثلاً AUC پایین‌تر نیست)، مدل «مبارک» است (به‌عنوان خوب علامت‌گذاری می‌شود)، که به Pusher نشان می‌دهد که خوب است مدل را به سمت تولید سوق دهد.

  • مصرف می کند:
    • جدایی ارزشی از نمونه ها
    • یک مدل آموزش دیده از ترینر
    • مدلی که قبلاً برکت داده شده بود (اگر اعتبارسنجی انجام شود)
  • منتشر می کند:

ارزیاب و تحلیل مدل جریان تنسور

ارزیاب از کتابخانه تحلیل مدل TensorFlow برای انجام تجزیه و تحلیل استفاده می کند که به نوبه خود از پرتو آپاچی برای پردازش مقیاس پذیر استفاده می کند.

با استفاده از مولفه ارزیاب

یک جزء خط لوله ارزیابی معمولاً بسیار آسان است و نیاز به سفارشی سازی کمی دارد، زیرا بیشتر کار توسط مؤلفه Evaluator TFX انجام می شود.

برای تنظیم ارزیاب اطلاعات زیر مورد نیاز است:

  • معیارهایی برای پیکربندی (فقط در صورتی لازم است که معیارهای اضافی خارج از اندازه‌هایی که با مدل ذخیره شده‌اند اضافه شوند). برای اطلاعات بیشتر به معیارهای تحلیل مدل تنسورفلو مراجعه کنید.
  • برش هایی برای پیکربندی (اگر هیچ برشی داده نشود، به طور پیش فرض یک برش "کلی" اضافه می شود). برای اطلاعات بیشتر به تنظیمات تحلیل مدل تنسورفلو مراجعه کنید.

اگر قرار است اعتبارسنجی گنجانده شود، اطلاعات اضافی زیر مورد نیاز است:

وقتی فعال باشد، اعتبارسنجی در برابر تمام معیارها و برش‌هایی که تعریف شده‌اند انجام می‌شود.

کد معمولی به شکل زیر است:

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 موجود است.