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

अवलोकन

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

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

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

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

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

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

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

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

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

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

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

स्थापित करना

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

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

उदाहरण

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

एक सर्विंग मॉडल पर मूल्यांकन करने के लिए निम्नलिखित 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

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

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

अधिक जानकारी