स्थानीय स्तर पर टीएफएक्स पाइपलाइन का निर्माण

TFX आपके मशीन लर्निंग (एमएल) वर्कफ़्लो को एक पाइपलाइन के रूप में व्यवस्थित करना आसान बनाता है, ताकि:

  • अपनी एमएल प्रक्रिया को स्वचालित करें, जिससे आप नियमित रूप से अपने मॉडल को पुनः प्रशिक्षित, मूल्यांकन और तैनात कर सकते हैं।
  • एमएल पाइपलाइन बनाएं जिसमें प्रदर्शन और विश्वसनीयता सुनिश्चित करने के लिए मॉडल प्रदर्शन का गहन विश्लेषण और नए प्रशिक्षित मॉडलों का सत्यापन शामिल हो।
  • विसंगतियों के लिए प्रशिक्षण डेटा की निगरानी करें और प्रशिक्षण-सेवा संबंधी विसंगति को दूर करें
  • हाइपरपैरामीटर के विभिन्न सेटों के साथ एक पाइपलाइन चलाकर प्रयोग की गति बढ़ाएं।

एक विशिष्ट पाइपलाइन विकास प्रक्रिया उत्पादन में तैनात होने से पहले डेटा विश्लेषण और घटक सेटअप के साथ एक स्थानीय मशीन पर शुरू होती है। यह मार्गदर्शिका स्थानीय स्तर पर पाइपलाइन बनाने के दो तरीकों का वर्णन करती है।

  • अपने एमएल वर्कफ़्लो की आवश्यकताओं को पूरा करने के लिए टीएफएक्स पाइपलाइन टेम्पलेट को कस्टमाइज़ करें। टीएफएक्स पाइपलाइन टेम्प्लेट पूर्वनिर्मित वर्कफ़्लो हैं जो टीएफएक्स मानक घटकों का उपयोग करके सर्वोत्तम प्रथाओं को प्रदर्शित करते हैं।
  • TFX का उपयोग करके एक पाइपलाइन बनाएं। इस उपयोग के मामले में, आप टेम्पलेट से शुरू किए बिना एक पाइपलाइन को परिभाषित करते हैं।

जैसे ही आप अपनी पाइपलाइन विकसित कर रहे हैं, आप इसे LocalDagRunner के साथ चला सकते हैं। फिर, एक बार पाइपलाइन घटकों को अच्छी तरह से परिभाषित और परीक्षण किया गया है, तो आप क्यूबफ्लो या एयरफ्लो जैसे उत्पादन-ग्रेड ऑर्केस्ट्रेटर का उपयोग करेंगे।

शुरू करने से पहले

टीएफएक्स एक पायथन पैकेज है, इसलिए आपको वर्चुअल वातावरण या डॉकर कंटेनर जैसे पायथन विकास वातावरण स्थापित करने की आवश्यकता होगी। तब:

pip install tfx

यदि आप टीएफएक्स पाइपलाइनों में नए हैं, तो जारी रखने से पहले टीएफएक्स पाइपलाइनों की मुख्य अवधारणाओं के बारे में अधिक जानें

एक टेम्पलेट का उपयोग करके एक पाइपलाइन बनाएं

टीएफएक्स पाइपलाइन टेम्प्लेट पाइपलाइन परिभाषाओं का एक पूर्वनिर्मित सेट प्रदान करके पाइपलाइन विकास के साथ शुरुआत करना आसान बनाते हैं जिन्हें आप अपने उपयोग के मामले में अनुकूलित कर सकते हैं।

निम्नलिखित अनुभाग वर्णन करते हैं कि टेम्पलेट की एक प्रति कैसे बनाएं और इसे अपनी आवश्यकताओं के अनुरूप कैसे अनुकूलित करें।

पाइपलाइन टेम्पलेट की एक प्रति बनाएँ

  1. उपलब्ध टीएफएक्स पाइपलाइन टेम्पलेट्स की सूची देखें:

    tfx template list
    
  2. सूची से एक टेम्पलेट चुनें

    tfx template copy --model=template --pipeline_name=pipeline-name \
    --destination_path=destination-path
    

    निम्नलिखित को बदलें:

    • template : उस टेम्पलेट का नाम जिसे आप कॉपी करना चाहते हैं.
    • pipeline-name : बनाई जाने वाली पाइपलाइन का नाम।
    • destination-path : टेम्पलेट को कॉपी करने का पथ।

    tfx template copy कमांड के बारे में और जानें।

  3. आपके द्वारा निर्दिष्ट पथ पर पाइपलाइन टेम्पलेट की एक प्रति बनाई गई है।

पाइपलाइन टेम्पलेट का अन्वेषण करें

यह अनुभाग टेम्पलेट द्वारा बनाए गए मचान का अवलोकन प्रदान करता है।

  1. उन निर्देशिकाओं और फ़ाइलों का अन्वेषण करें जिन्हें आपकी पाइपलाइन की रूट निर्देशिका में कॉपी किया गया था

    • के साथ एक पाइपलाइन निर्देशिका
      • pipeline.py - पाइपलाइन को परिभाषित करता है, और सूचीबद्ध करता है कि कौन से घटकों का उपयोग किया जा रहा है
      • configs.py - कॉन्फ़िगरेशन विवरण रखें जैसे कि डेटा कहां से आ रहा है या किस ऑर्केस्ट्रेटर का उपयोग किया जा रहा है
    • एक डेटा निर्देशिका
      • इसमें आमतौर पर एक data.csv फ़ाइल होती है, जो ExampleGen के लिए डिफ़ॉल्ट स्रोत है। आप configs.py में डेटा स्रोत बदल सकते हैं।
    • प्रीप्रोसेसिंग कोड और मॉडल कार्यान्वयन के साथ एक मॉडल निर्देशिका

    • टेम्प्लेट स्थानीय परिवेश और क्यूबफ़्लो के लिए DAG रनर की प्रतिलिपि बनाता है।

    • कुछ टेम्प्लेट में पायथन नोटबुक भी शामिल हैं ताकि आप मशीन लर्निंग मेटाडेटा के साथ अपने डेटा और कलाकृतियों का पता लगा सकें।

  2. अपनी पाइपलाइन निर्देशिका में निम्नलिखित आदेश चलाएँ:

    tfx pipeline create --pipeline_path local_runner.py
    
    tfx run create --pipeline_name pipeline_name
    

    कमांड LocalDagRunner का उपयोग करके एक पाइपलाइन रन बनाता है, जो आपकी पाइपलाइन में निम्नलिखित निर्देशिका जोड़ता है:

    • एक tfx_metadata निर्देशिका जिसमें स्थानीय रूप से उपयोग किया जाने वाला ML मेटाडेटा स्टोर शामिल है।
    • एक tfx_pipeline_output निर्देशिका जिसमें पाइपलाइन के फ़ाइल आउटपुट शामिल हैं।
  3. अपनी पाइपलाइन की pipeline/configs.py फ़ाइल खोलें और सामग्री की समीक्षा करें। यह स्क्रिप्ट पाइपलाइन और घटक कार्यों द्वारा उपयोग किए जाने वाले कॉन्फ़िगरेशन विकल्पों को परिभाषित करती है। यह वह जगह है जहां आप डेटास्रोत के स्थान या एक रन में प्रशिक्षण चरणों की संख्या जैसी चीजें निर्दिष्ट करेंगे।

  4. अपनी पाइपलाइन की pipeline/pipeline.py फ़ाइल खोलें और सामग्री की समीक्षा करें। यह स्क्रिप्ट TFX पाइपलाइन बनाती है। प्रारंभ में, पाइपलाइन में केवल एक ExampleGen घटक होता है।

    • पाइपलाइन में और चरण जोड़ने के लिए pipeline.py में TODO टिप्पणियों में दिए गए निर्देशों का पालन करें।
  5. local_runner.py फ़ाइल खोलें और सामग्री की समीक्षा करें। यह स्क्रिप्ट एक पाइपलाइन रन बनाती है और रन के पैरामीटर निर्दिष्ट करती है, जैसे data_path और preprocessing_fn

  6. आपने टेम्प्लेट द्वारा बनाए गए मचान की समीक्षा की है और LocalDagRunner का उपयोग करके एक पाइपलाइन रन बनाया है। इसके बाद, अपनी आवश्यकताओं के अनुरूप टेम्पलेट को कस्टमाइज़ करें।

अपनी पाइपलाइन अनुकूलित करें

यह अनुभाग अपने टेम्पलेट को अनुकूलित करना शुरू करने का एक सिंहावलोकन प्रदान करता है।

  1. अपनी पाइपलाइन डिज़ाइन करें. एक टेम्पलेट जो मचान प्रदान करता है वह आपको टीएफएक्स मानक घटकों का उपयोग करके सारणीबद्ध डेटा के लिए एक पाइपलाइन को लागू करने में मदद करता है। यदि आप मौजूदा एमएल वर्कफ़्लो को पाइपलाइन में ले जा रहे हैं, तो आपको टीएफएक्स मानक घटकों का पूर्ण उपयोग करने के लिए अपने कोड को संशोधित करने की आवश्यकता हो सकती है। आपको ऐसे कस्टम घटक बनाने की भी आवश्यकता हो सकती है जो उन सुविधाओं को लागू करते हैं जो आपके वर्कफ़्लो के लिए अद्वितीय हैं या जो अभी तक TFX मानक घटकों द्वारा समर्थित नहीं हैं।

  2. एक बार जब आप अपनी पाइपलाइन डिज़ाइन कर लें, तो निम्नलिखित प्रक्रिया का उपयोग करके पाइपलाइन को पुनरावृत्तीय रूप से अनुकूलित करें। उस घटक से प्रारंभ करें जो आपकी पाइपलाइन में डेटा अंतर्ग्रहण करता है, जो आमतौर पर ExampleGen घटक होता है।

    1. अपने उपयोग के मामले में फिट होने के लिए पाइपलाइन या घटक को अनुकूलित करें। इन अनुकूलनों में निम्न जैसे परिवर्तन शामिल हो सकते हैं:

      • पाइपलाइन पैरामीटर बदलना।
      • पाइपलाइन में घटकों को जोड़ना या उन्हें हटाना।
      • डेटा इनपुट स्रोत को बदलना. यह डेटा स्रोत या तो एक फ़ाइल हो सकता है या BigQuery जैसी सेवाओं में क्वेरीज़ हो सकता है।
      • पाइपलाइन में किसी घटक का कॉन्फ़िगरेशन बदलना।
      • किसी घटक के अनुकूलन फ़ंक्शन को बदलना।
    2. यदि आप किसी भिन्न ऑर्केस्ट्रेटर का उपयोग कर रहे हैं, तो local_runner.py स्क्रिप्ट, या किसी अन्य उपयुक्त DAG रनर का उपयोग करके घटक को स्थानीय रूप से चलाएँ। यदि स्क्रिप्ट विफल हो जाती है, तो विफलता को डीबग करें और स्क्रिप्ट को चलाने का पुनः प्रयास करें।

    3. एक बार जब यह अनुकूलन काम करने लगे, तो अगले अनुकूलन पर आगे बढ़ें।

  3. पुनरावर्ती रूप से कार्य करते हुए, आप अपनी आवश्यकताओं को पूरा करने के लिए टेम्पलेट वर्कफ़्लो में प्रत्येक चरण को अनुकूलित कर सकते हैं।

एक कस्टम पाइपलाइन बनाएं

टेम्पलेट का उपयोग किए बिना कस्टम पाइपलाइन बनाने के बारे में अधिक जानने के लिए निम्नलिखित निर्देशों का उपयोग करें।

  1. अपनी पाइपलाइन डिज़ाइन करें. टीएफएक्स मानक घटक संपूर्ण एमएल वर्कफ़्लो को लागू करने में आपकी सहायता के लिए सिद्ध कार्यक्षमता प्रदान करते हैं। यदि आप मौजूदा एमएल वर्कफ़्लो को पाइपलाइन में ले जा रहे हैं, तो आपको टीएफएक्स मानक घटकों का पूर्ण उपयोग करने के लिए अपने कोड को संशोधित करने की आवश्यकता हो सकती है। आपको कस्टम घटक बनाने की भी आवश्यकता हो सकती है जो डेटा वृद्धि जैसी सुविधाओं को लागू करते हैं।

  2. निम्नलिखित उदाहरण का उपयोग करके अपनी पाइपलाइन को परिभाषित करने के लिए एक स्क्रिप्ट फ़ाइल बनाएं। यह मार्गदर्शिका इस फ़ाइल को my_pipeline.py के रूप में संदर्भित करती है।

    import os
    from typing import Optional, Text, List
    from absl import logging
    from ml_metadata.proto import metadata_store_pb2
    import tfx.v1 as tfx
    
    PIPELINE_NAME = 'my_pipeline'
    PIPELINE_ROOT = os.path.join('.', 'my_pipeline_output')
    METADATA_PATH = os.path.join('.', 'tfx_metadata', PIPELINE_NAME, 'metadata.db')
    ENABLE_CACHE = True
    
    def create_pipeline(
      pipeline_name: Text,
      pipeline_root:Text,
      enable_cache: bool,
      metadata_connection_config: Optional[
        metadata_store_pb2.ConnectionConfig] = None,
      beam_pipeline_args: Optional[List[Text]] = None
    ):
      components = []
    
      return tfx.dsl.Pipeline(
            pipeline_name=pipeline_name,
            pipeline_root=pipeline_root,
            components=components,
            enable_cache=enable_cache,
            metadata_connection_config=metadata_connection_config,
            beam_pipeline_args=beam_pipeline_args, <!-- needed? -->
        )
    
    def run_pipeline():
      my_pipeline = create_pipeline(
          pipeline_name=PIPELINE_NAME,
          pipeline_root=PIPELINE_ROOT,
          enable_cache=ENABLE_CACHE,
          metadata_connection_config=tfx.orchestration.metadata.sqlite_metadata_connection_config(METADATA_PATH)
          )
    
      tfx.orchestration.LocalDagRunner().run(my_pipeline)
    
    if __name__ == '__main__':
      logging.set_verbosity(logging.INFO)
      run_pipeline()

    आने वाले चरणों में, आप अपनी पाइपलाइन को create_pipeline में परिभाषित करते हैं और स्थानीय रनर का उपयोग करके अपनी पाइपलाइन को स्थानीय रूप से चलाते हैं।

    निम्नलिखित प्रक्रिया का उपयोग करके पुनरावृत्तीय रूप से अपनी पाइपलाइन बनाएं।

    1. अपने उपयोग के मामले में फिट होने के लिए पाइपलाइन या घटक को अनुकूलित करें। इन अनुकूलनों में निम्न जैसे परिवर्तन शामिल हो सकते हैं:

      • पाइपलाइन पैरामीटर बदलना।
      • पाइपलाइन में घटकों को जोड़ना या उन्हें हटाना।
      • डेटा इनपुट फ़ाइल को बदलना।
      • पाइपलाइन में किसी घटक का कॉन्फ़िगरेशन बदलना।
      • किसी घटक के अनुकूलन फ़ंक्शन को बदलना।
    2. स्थानीय रनर का उपयोग करके या सीधे स्क्रिप्ट चलाकर घटक को स्थानीय रूप से चलाएँ। यदि स्क्रिप्ट विफल हो जाती है, तो विफलता को डीबग करें और स्क्रिप्ट को चलाने का पुनः प्रयास करें।

    3. एक बार जब यह अनुकूलन काम करने लगे, तो अगले अनुकूलन पर आगे बढ़ें।

    अपनी पाइपलाइन के वर्कफ़्लो में पहले नोड से प्रारंभ करें, आमतौर पर पहला नोड आपकी पाइपलाइन में डेटा अंतर्ग्रहण करता है।

  3. अपने वर्कफ़्लो में पहला नोड अपनी पाइपलाइन में जोड़ें। इस उदाहरण में, पाइपलाइन ./data पर एक निर्देशिका से CSV लोड करने के लिए ExampleGen मानक घटक का उपयोग करती है।

    from tfx.components import CsvExampleGen
    
    DATA_PATH = os.path.join('.', 'data')
    
    def create_pipeline(
      pipeline_name: Text,
      pipeline_root:Text,
      data_path: Text,
      enable_cache: bool,
      metadata_connection_config: Optional[
        metadata_store_pb2.ConnectionConfig] = None,
      beam_pipeline_args: Optional[List[Text]] = None
    ):
      components = []
    
      example_gen = tfx.components.CsvExampleGen(input_base=data_path)
      components.append(example_gen)
    
      return tfx.dsl.Pipeline(
            pipeline_name=pipeline_name,
            pipeline_root=pipeline_root,
            components=components,
            enable_cache=enable_cache,
            metadata_connection_config=metadata_connection_config,
            beam_pipeline_args=beam_pipeline_args, <!-- needed? -->
        )
    
    def run_pipeline():
      my_pipeline = create_pipeline(
        pipeline_name=PIPELINE_NAME,
        pipeline_root=PIPELINE_ROOT,
        data_path=DATA_PATH,
        enable_cache=ENABLE_CACHE,
        metadata_connection_config=tfx.orchestration.metadata.sqlite_metadata_connection_config(METADATA_PATH)
        )
    
      tfx.orchestration.LocalDagRunner().run(my_pipeline)

    CsvExampleGen निर्दिष्ट डेटा पथ पर CSV में डेटा का उपयोग करके क्रमबद्ध उदाहरण रिकॉर्ड बनाता है। डेटा रूट के साथ CsvExampleGen घटक के input_base पैरामीटर को सेट करके।

  4. my_pipeline.py जैसी ही निर्देशिका में एक data निर्देशिका बनाएं। data निर्देशिका में एक छोटी CSV फ़ाइल जोड़ें।

  5. अपनी my_pipeline.py स्क्रिप्ट को चलाने के लिए निम्नलिखित कमांड का उपयोग करें।

    python my_pipeline.py
    

    परिणाम कुछ इस प्रकार होना चाहिए:

    INFO:absl:Component CsvExampleGen depends on [].
    INFO:absl:Component CsvExampleGen is scheduled.
    INFO:absl:Component CsvExampleGen is running.
    INFO:absl:Running driver for CsvExampleGen
    INFO:absl:MetadataStore with DB connection initialized
    INFO:absl:Running executor for CsvExampleGen
    INFO:absl:Generating examples.
    INFO:absl:Using 1 process(es) for Local pipeline execution.
    INFO:absl:Processing input csv data ./data/* to TFExample.
    WARNING:root:Couldn't find python-snappy so the implementation of _TFRecordUtil._masked_crc32c is not as fast as it could be.
    INFO:absl:Examples generated.
    INFO:absl:Running publisher for CsvExampleGen
    INFO:absl:MetadataStore with DB connection initialized
    INFO:absl:Component CsvExampleGen is finished.
    
  6. अपनी पाइपलाइन में घटकों को पुनरावर्ती रूप से जोड़ना जारी रखें।