مكون خط أنابيب TFX المقيم

يقوم مكون خط أنابيب Evaluator TFX بإجراء تحليل عميق لنتائج التدريب الخاصة بنماذجك، لمساعدتك على فهم كيفية أداء نموذجك على مجموعات فرعية من بياناتك. يساعدك المُقيم أيضًا على التحقق من صحة النماذج المصدرة، مما يضمن أنها "جيدة بما يكفي" ليتم دفعها إلى الإنتاج.

عند تمكين التحقق من الصحة، يقوم المقيِّم بمقارنة النماذج الجديدة مع خط الأساس (مثل نموذج العرض الحالي) لتحديد ما إذا كانت "جيدة بما يكفي" بالنسبة إلى خط الأساس. ويتم ذلك عن طريق تقييم كلا النموذجين في مجموعة بيانات تقييمية وحساب أدائهما على المقاييس (مثل المساحة تحت المنحة، الخسارة). إذا كانت مقاييس النموذج الجديد تفي بالمعايير المحددة من قبل المطور فيما يتعلق بالنموذج الأساسي (على سبيل المثال، المساحة تحت المنحنى ليست أقل)، فإن النموذج "مبارك" (مميز بعلامة جيد)، مما يشير إلى الدافع أنه لا بأس في دفع النموذج إلى الإنتاج.

المقيم وتحليل نموذج TensorFlow

يستفيد Evaluator من مكتبة TensorFlow Model Analysis لإجراء التحليل، والتي بدورها تستخدم Apache Beam للمعالجة القابلة للتطوير.

استخدام مكون المقيم

عادةً ما يكون نشر مكون خط أنابيب المُقيِّم أمرًا سهلاً للغاية ويتطلب القليل من التخصيص، نظرًا لأن معظم العمل يتم بواسطة مكون Evaluator TFX.

لإعداد المقيم، هناك حاجة إلى المعلومات التالية:

  • المقاييس المراد تكوينها (مطلوبة فقط في حالة إضافة مقاييس إضافية خارج تلك المحفوظة في النموذج). راجع مقاييس تحليل نموذج 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:
  ...

تتوفر المزيد من التفاصيل في مرجع واجهة برمجة تطبيقات التقييم .