คำถามเกี่ยวกับ TFX? เข้าร่วมกับเราที่ Google I / O!

ส่วนประกอบของ Evaluator TFX Pipeline

ส่วนประกอบไปป์ไลน์ของ Evaluator TFX ทำการวิเคราะห์เชิงลึกเกี่ยวกับผลการฝึกอบรมสำหรับโมเดลของคุณเพื่อช่วยให้คุณเข้าใจว่าโมเดลของคุณทำงานอย่างไรกับชุดข้อมูลย่อยของคุณ ผู้ประเมินยังช่วยคุณตรวจสอบความถูกต้องของโมเดลที่ส่งออกเพื่อให้มั่นใจว่า "ดีพอ" ที่จะผลักดันไปสู่การใช้งานจริง

เมื่อเปิดใช้งานการตรวจสอบความถูกต้องผู้ประเมินจะเปรียบเทียบโมเดลใหม่กับพื้นฐาน (เช่นโมเดลที่ให้บริการในปัจจุบัน) เพื่อพิจารณาว่า "ดีพอ" เมื่อเทียบกับพื้นฐานหรือไม่ ทำได้โดยการประเมินทั้งสองแบบในชุดข้อมูลการประเมินและคำนวณประสิทธิภาพของเมตริก (เช่น AUC การสูญเสีย) หากเมตริกของโมเดลใหม่ตรงตามเกณฑ์ที่นักพัฒนาระบุซึ่งสัมพันธ์กับโมเดลพื้นฐาน (เช่น AUC ไม่ต่ำกว่า) โมเดลนั้นจะ "มีความสุข" (ทำเครื่องหมายว่าดี) แสดงให้ผู้ ผลักดัน ทราบว่าสามารถผลักดันโมเดลไปสู่การผลิต

  • สิ้นเปลือง:
    • การแยก eval จาก ExampleGen
    • แบบจำลองที่ผ่านการฝึกอบรมจาก เทรนเนอร์
    • รูปแบบที่ได้รับพรก่อนหน้านี้ (หากต้องทำการตรวจสอบความถูกต้อง)
  • ปล่อย:
    • ผลการวิเคราะห์เป็น ML Metadata
    • ผลการตรวจสอบความถูกต้องเป็น ML Metadata (หากต้องทำการตรวจสอบความถูกต้อง)

ผู้ประเมินและการวิเคราะห์แบบจำลอง TensorFlow

ผู้ประเมินใช้ประโยชน์จาก ไลบรารี TensorFlow Model Analysis เพื่อทำการวิเคราะห์ซึ่งจะใช้ Apache Beam สำหรับการประมวลผลที่ปรับขนาดได้

การใช้ส่วนประกอบผู้ประเมิน

ส่วนประกอบไปป์ไลน์ของ Evaluator นั้นง่ายมากในการปรับใช้และต้องการการปรับแต่งเพียงเล็กน้อยเนื่องจากงานส่วนใหญ่ทำโดยคอมโพเนนต์ Evaluator TFX

ในการตั้งค่าผู้ประเมินจำเป็นต้องมีข้อมูลต่อไปนี้:

  • เมตริกที่จะกำหนดค่า (จำเป็นต้องมีเฉพาะในกรณีที่มีการเพิ่มเมตริกเพิ่มเติมนอกเหนือจากที่บันทึกด้วยโมเดล) ดู Tensorflow Model Analysis Metrics สำหรับข้อมูลเพิ่มเติม
  • สไลซ์เพื่อกำหนดค่า (หากไม่ได้รับสไลซ์จะมีการเพิ่มสไลซ์ "โดยรวม" ตามค่าเริ่มต้น) ดู Tensorflow Model Analysis Setup สำหรับข้อมูลเพิ่มเติม

หากต้องมีการตรวจสอบความถูกต้องจำเป็นต้องมีข้อมูลเพิ่มเติมดังต่อไปนี้:

  • รุ่นใดที่จะเปรียบเทียบกับ (พรล่าสุด ฯลฯ )
  • การตรวจสอบโมเดล (ขีด จำกัด ) เพื่อตรวจสอบ ดู Tensorflow Model Analysis Model Validations สำหรับข้อมูลเพิ่มเติม

เมื่อเปิดใช้งานการตรวจสอบความถูกต้องจะดำเนินการกับเมตริกและชิ้นส่วนทั้งหมดที่กำหนดไว้

รหัสทั่วไปมีลักษณะดังนี้:

from tfx import components
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=latest_blessed_model_resolver.LatestBlessedModelResolver,
      model=Channel(type=Model),
      model_blessing=Channel(type=ModelBlessing)
).with_id('latest_blessed_model_resolver')

model_analyzer = components.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:
  ...