कंटेनर-आधारित घटकों का निर्माण

कंटेनर-आधारित घटक किसी भी भाषा में लिखे गए कोड को आपकी पाइपलाइन में एकीकृत करने की सुविधा प्रदान करते हैं, जब तक आप उस कोड को डॉकर कंटेनर में निष्पादित कर सकते हैं।

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

एक कंटेनर-आधारित घटक बनाना

कंटेनर-आधारित घटक कंटेनरीकृत कमांड-लाइन प्रोग्राम द्वारा समर्थित होते हैं। यदि आपके पास पहले से ही एक कंटेनर छवि है, तो आप इनपुट और आउटपुट घोषित करने के लिए create_container_component फ़ंक्शन का उपयोग करके उसमें से एक घटक बनाने के लिए TFX का उपयोग कर सकते हैं। फ़ंक्शन पैरामीटर:

  • नाम: घटक का नाम.
  • इनपुट्स: एक शब्दकोश जो इनपुट नामों को प्रकारों से मैप करता है। आउटपुट: एक शब्दकोश जो आउटपुट नामों को प्रकार के मापदंडों से मैप करता है: एक शब्दकोश जो पैरामीटर नामों को प्रकारों से मैप करता है।
  • छवि: कंटेनर छवि नाम, और वैकल्पिक रूप से छवि टैग।
  • कमांड: कंटेनर एंट्रीपॉइंट कमांड लाइन। किसी शेल के भीतर निष्पादित नहीं किया गया. कमांड लाइन प्लेसहोल्डर ऑब्जेक्ट्स का उपयोग कर सकती है जिन्हें संकलन समय पर इनपुट, आउटपुट या पैरामीटर के साथ बदल दिया जाता है। प्लेसहोल्डर ऑब्जेक्ट को tfx.dsl.component.experimental.placeholders से आयात किया जा सकता है। ध्यान दें कि जिंजा टेम्प्लेट समर्थित नहीं हैं।

रिटर्न वैल्यू: बेस_कंपोनेंट.बेसकंपोनेंट से विरासत में मिला एक कंपोनेंट क्लास जिसे तुरंत चालू किया जा सकता है और पाइपलाइन के अंदर उपयोग किया जा सकता है।

प्लेसहोल्डर

ऐसे घटक के लिए जिसमें इनपुट या आउटपुट हैं, command अक्सर प्लेसहोल्डर की आवश्यकता होती है जिन्हें रनटाइम पर वास्तविक डेटा से बदल दिया जाता है। इस उद्देश्य के लिए कई प्लेसहोल्डर प्रदान किए गए हैं:

  • InputValuePlaceholder : इनपुट आर्टिफैक्ट के मूल्य के लिए एक प्लेसहोल्डर। रनटाइम पर, इस प्लेसहोल्डर को आर्टिफैक्ट के मूल्य के स्ट्रिंग प्रतिनिधित्व के साथ बदल दिया जाता है।

  • InputUriPlaceholder : इनपुट आर्टिफैक्ट तर्क के यूआरआई के लिए एक प्लेसहोल्डर। रनटाइम पर, इस प्लेसहोल्डर को इनपुट आर्टिफैक्ट के डेटा के यूआरआई से बदल दिया जाता है।

  • OutputUriPlaceholder : आउटपुट आर्टिफैक्ट तर्क के यूआरआई के लिए एक प्लेसहोल्डर। रनटाइम पर, इस प्लेसहोल्डर को यूआरआई से बदल दिया जाता है जहां घटक को आउटपुट आर्टिफैक्ट का डेटा संग्रहीत करना चाहिए।

TFX घटक कमांड-लाइन प्लेसहोल्डर्स के बारे में और जानें।

उदाहरण कंटेनर-आधारित घटक

निम्नलिखित एक गैर-पायथन घटक का एक उदाहरण है जो डेटा को डाउनलोड, रूपांतरित और अपलोड करता है:

import tfx.v1 as tfx

grep_component = tfx.dsl.components.create_container_component(
    name='FilterWithGrep',
    inputs={
        'text': tfx.standard_artifacts.ExternalArtifact,
    },
    outputs={
        'filtered_text': tfx.standard_artifacts.ExternalArtifact,
    },
    parameters={
        'pattern': str,
    },
    # The component code uses gsutil to upload the data to Google Cloud Storage, so the
    # container image needs to have gsutil installed and configured.
    image='google/cloud-sdk:278.0.0',
    command=[
        'sh', '-exc',
        '''
          pattern="$1"
          text_uri="$3"/data  # Adding suffix, because currently the URI are "directories". This will be fixed soon.
          text_path=$(mktemp)
          filtered_text_uri="$5"/data  # Adding suffix, because currently the URI are "directories". This will be fixed soon.
          filtered_text_path=$(mktemp)

          # Getting data into the container
          gsutil cp "$text_uri" "$text_path"

          # Running the main code
          grep "$pattern" "$text_path" >"$filtered_text_path"

          # Getting data out of the container
          gsutil cp "$filtered_text_path" "$filtered_text_uri"
        ''',
        '--pattern', tfx.dsl.placeholders.InputValuePlaceholder('pattern'),
        '--text', tfx.dsl.placeholders.InputUriPlaceholder('text'),
        '--filtered-text', tfx.dsl.placeholders.OutputUriPlaceholder('filtered_text'),
    ],
)