TensorFlow मॉडल विश्लेषण के साथ शुरुआत करना

सिंहावलोकन

टेन्सरफ्लो मॉडल विश्लेषण (टीएफएमए) मॉडल मूल्यांकन करने के लिए एक पुस्तकालय है।

  • इनके लिए : मशीन लर्निंग इंजीनियर या डेटा वैज्ञानिक
  • जो : अपने TensorFlow मॉडल का विश्लेषण और समझना चाहते हैं
  • यह है : एक स्टैंडअलोन लाइब्रेरी या टीएफएक्स पाइपलाइन का घटक
  • वह : प्रशिक्षण में परिभाषित समान मैट्रिक्स पर वितरित तरीके से बड़ी मात्रा में डेटा पर मॉडल का मूल्यांकन करता है। इन मेट्रिक्स की तुलना डेटा के स्लाइस से की जाती है, और Jupyter या Colab नोटबुक में विज़ुअलाइज़ की जाती है।
  • इसके विपरीत : कुछ मॉडल आत्मनिरीक्षण उपकरण जैसे टेंसरबोर्ड जो मॉडल आत्मनिरीक्षण की पेशकश करते हैं

टीएफएमए अपाचे बीम का उपयोग करके बड़ी मात्रा में डेटा पर वितरित तरीके से अपनी गणना करता है। निम्नलिखित अनुभाग वर्णन करते हैं कि बुनियादी टीएफएमए मूल्यांकन पाइपलाइन कैसे स्थापित करें। अंतर्निहित कार्यान्वयन पर अधिक विवरण के लिए आर्किटेक्चर देखें।

यदि आप बस इसमें शामिल होना और आरंभ करना चाहते हैं, तो हमारी कोलाब नोटबुक देखें।

इस पेज को Tensorflow.org से भी देखा जा सकता है।

समर्थित मॉडल प्रकार

टीएफएमए को टेंसरफ्लो आधारित मॉडलों का समर्थन करने के लिए डिज़ाइन किया गया है, लेकिन इसे अन्य ढांचे का समर्थन करने के लिए भी आसानी से बढ़ाया जा सकता है। ऐतिहासिक रूप से, टीएफएमए को टीएफएमए का उपयोग करने के लिए एक EvalSavedModel बनाने की आवश्यकता होती है, लेकिन टीएफएमए का नवीनतम संस्करण उपयोगकर्ता की जरूरतों के आधार पर कई प्रकार के मॉडल का समर्थन करता है। EvalSavenModel की स्थापना केवल तभी आवश्यक होनी चाहिए जब tf.estimator आधारित मॉडल का उपयोग किया जाता है और कस्टम प्रशिक्षण समय मेट्रिक्स की आवश्यकता होती है।

ध्यान दें कि क्योंकि TFMA अब सर्विंग मॉडल के आधार पर चलता है, TFMA अब प्रशिक्षण के समय जोड़े गए मेट्रिक्स का स्वचालित रूप से मूल्यांकन नहीं करेगा। इस मामले में अपवाद यह है कि यदि केरस मॉडल का उपयोग किया जाता है क्योंकि केरस सहेजे गए मॉडल के साथ उपयोग किए गए मेट्रिक्स को सहेजता है। हालाँकि, यदि यह एक कठिन आवश्यकता है, तो नवीनतम TFMA बैकवर्ड संगत है जैसे कि EvalSavedModel अभी भी TFMA पाइपलाइन में चलाया जा सकता है।

निम्न तालिका डिफ़ॉल्ट रूप से समर्थित मॉडलों का सारांश प्रस्तुत करती है:

मॉडल प्रकार प्रशिक्षण समय मेट्रिक्स प्रशिक्षण के बाद मेट्रिक्स
TF2 (केरस) य* वाई
TF2 (जेनेरिक) एन/ए वाई
इवलसेव्डमॉडल (आकलनकर्ता) वाई वाई
कोई नहीं (पीडी.डेटाफ़्रेम, आदि) एन/ए वाई
  • प्रशिक्षण समय मेट्रिक्स प्रशिक्षण समय पर परिभाषित और मॉडल के साथ सहेजे गए मेट्रिक्स को संदर्भित करता है (या तो टीएफएमए इवलसेव्डमॉडल या केरस सेव्ड मॉडल)। प्रशिक्षण के बाद मेट्रिक्स tfma.MetricConfig के माध्यम से जोड़े गए मेट्रिक्स को संदर्भित करता है।
  • जेनेरिक TF2 मॉडल कस्टम मॉडल हैं जो हस्ताक्षर निर्यात करते हैं जिनका उपयोग अनुमान के लिए किया जा सकता है और ये केरस या अनुमानक पर आधारित नहीं होते हैं।

इन विभिन्न मॉडल प्रकारों को सेटअप और कॉन्फ़िगर करने के तरीके के बारे में अधिक जानकारी के लिए FAQ देखें।

स्थापित करना

मूल्यांकन चलाने से पहले, थोड़ी मात्रा में सेटअप की आवश्यकता होती है। सबसे पहले, एक tfma.EvalConfig ऑब्जेक्ट को परिभाषित किया जाना चाहिए जो मूल्यांकन किए जाने वाले मॉडल, मेट्रिक्स और स्लाइस के लिए विनिर्देश प्रदान करता है। दूसरा एक tfma.EvalSharedModel बनाने की आवश्यकता है जो मूल्यांकन के दौरान उपयोग किए जाने वाले वास्तविक मॉडल (या मॉडल) को इंगित करता है। एक बार इन्हें परिभाषित कर लेने के बाद, उपयुक्त डेटासेट के साथ tfma.run_model_analysis कॉल करके मूल्यांकन किया जाता है। अधिक विवरण के लिए, सेटअप मार्गदर्शिका देखें।

यदि टीएफएक्स पाइपलाइन के भीतर चल रहा है, तो टीएफएक्स मूल्यांकनकर्ता घटक के रूप में चलाने के लिए टीएफएमए को कैसे कॉन्फ़िगर करें, इसके लिए टीएफएक्स गाइड देखें।

उदाहरण

एकल मॉडल मूल्यांकन

निम्नलिखित एक सर्विंग मॉडल पर मूल्यांकन करने के लिए tfma.run_model_analysis का उपयोग करता है। आवश्यक विभिन्न सेटिंग्स की व्याख्या के लिए सेटअप गाइड देखें।

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics { class_name: "AUC" }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='/path/to/saved/model', eval_config=eval_config)

eval_result = tfma.run_model_analysis(
    eval_shared_model=eval_shared_model,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location='/path/to/file/containing/tfrecords',
    output_path='/path/for/output')

tfma.view.render_slicing_metrics(eval_result)

वितरित मूल्यांकन के लिए, एक वितरित रनर का उपयोग करके अपाचे बीम पाइपलाइन का निर्माण करें। पाइपलाइन में, मूल्यांकन के लिए और परिणाम लिखने के लिए tfma.ExtractEvaluateAndWriteResults का उपयोग करें। परिणामों को tfma.load_eval_result का उपयोग करके विज़ुअलाइज़ेशन के लिए लोड किया जा सकता है।

उदाहरण के लिए:

# To run the pipeline.
from google.protobuf import text_format
from tfx_bsl.tfxio import tf_example_record

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics { class_name: "AUC" }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='/path/to/saved/model', eval_config=eval_config)

output_path = '/path/for/output'

tfx_io = tf_example_record.TFExampleRecord(
    file_pattern=data_location, raw_record_column_name=tfma.ARROW_INPUT_COLUMN)

with beam.Pipeline(runner=...) as p:
  _ = (p
       # You can change the source as appropriate, e.g. read from BigQuery.
       # This assumes your data is a TFRecords file containing records in the
       # tf.train.Example format. If using EvalSavedModel then use the following
       # instead: 'ReadData' >> beam.io.ReadFromTFRecord(file_pattern=...)
       | 'ReadData' >> tfx_io.BeamSource()
       | 'ExtractEvaluateAndWriteResults' >>
       tfma.ExtractEvaluateAndWriteResults(
            eval_shared_model=eval_shared_model,
            eval_config=eval_config,
            output_path=output_path))

# To load and visualize results.
# Note that this code should be run in a Jupyter Notebook.
result = tfma.load_eval_result(output_path)
tfma.view.render_slicing_metrics(result)

मॉडल सत्यापन

किसी उम्मीदवार और बेसलाइन के विरुद्ध मॉडल सत्यापन करने के लिए, थ्रेशोल्ड सेटिंग को शामिल करने के लिए कॉन्फ़िगरेशन को अपडेट करें और दो मॉडलों को tfma.run_model_analysis में पास करें।

उदाहरण के लिए:

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics {
      class_name: "AUC"
      threshold {
        value_threshold {
          lower_bound { value: 0.9 }
        }
        change_threshold {
          direction: HIGHER_IS_BETTER
          absolute { value: -1e-10 }
        }
      }
    }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_models = [
  tfma.default_eval_shared_model(
      model_name=tfma.CANDIDATE_KEY,
      eval_saved_model_path='/path/to/saved/candiate/model',
      eval_config=eval_config),
  tfma.default_eval_shared_model(
      model_name=tfma.BASELINE_KEY,
      eval_saved_model_path='/path/to/saved/baseline/model',
      eval_config=eval_config),
]

output_path = '/path/for/output'

eval_result = tfma.run_model_analysis(
    eval_shared_models,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location='/path/to/file/containing/tfrecords',
    output_path=output_path)

tfma.view.render_slicing_metrics(eval_result)
tfma.load_validation_result(output_path)

VISUALIZATION

टीएफएमए मूल्यांकन परिणामों को टीएफएमए में शामिल फ्रंटएंड घटकों का उपयोग करके ज्यूपिटर नोटबुक में देखा जा सकता है। उदाहरण के लिए:

टीएफएमए स्लाइसिंग मेट्रिक्स ब्राउज़र .

अधिक जानकारी