ধারক-ভিত্তিক উপাদান নির্মাণ

কন্টেইনার-ভিত্তিক উপাদানগুলি আপনার পাইপলাইনে যেকোন ভাষায় লেখা কোড সংহত করার নমনীয়তা প্রদান করে, যতক্ষণ না আপনি একটি ডকার কন্টেইনারে সেই কোডটি কার্যকর করতে পারেন।

আপনি যদি TFX পাইপলাইনে নতুন হন, তাহলে TFX পাইপলাইনের মূল ধারণা সম্পর্কে আরও জানুন

একটি ধারক-ভিত্তিক উপাদান তৈরি করা

কন্টেইনার-ভিত্তিক উপাদানগুলি কন্টেইনারাইজড কমান্ড-লাইন প্রোগ্রাম দ্বারা সমর্থিত। আপনার যদি ইতিমধ্যে একটি কন্টেইনার ইমেজ থাকে, তাহলে আপনি ইনপুট এবং আউটপুট ঘোষণা করতে create_container_component ফাংশন ব্যবহার করে এটি থেকে একটি উপাদান তৈরি করতে TFX ব্যবহার করতে পারেন। ফাংশন পরামিতি:

  • নাম: উপাদানটির নাম।
  • ইনপুটস: একটি অভিধান যা ইনপুট নামগুলিকে প্রকারের সাথে মানচিত্র করে। আউটপুট: একটি অভিধান যা আউটপুট নামগুলিকে প্রকারের প্যারামিটারে ম্যাপ করে: একটি অভিধান যা প্যারামিটারের নামগুলি প্রকারের সাথে মানচিত্র করে।
  • ছবি: ধারক ছবির নাম, এবং ঐচ্ছিকভাবে ছবি ট্যাগ।
  • কমান্ড: কন্টেইনার এন্ট্রিপয়েন্ট কমান্ড লাইন। একটি শেল মধ্যে মৃত্যুদন্ড কার্যকর করা হয় না. কমান্ড লাইন প্লেসহোল্ডার অবজেক্ট ব্যবহার করতে পারে যা সংকলনের সময় ইনপুট, আউটপুট বা প্যারামিটার দিয়ে প্রতিস্থাপিত হয়। স্থানধারক বস্তুগুলি tfx.dsl.component.experimental.placeholders থেকে আমদানি করা যেতে পারে। মনে রাখবেন যে জিনজা টেমপ্লেট সমর্থিত নয়।

রিটার্ন মান: একটি কম্পোনেন্ট ক্লাস বেস_কম্পোনেন্ট থেকে উত্তরাধিকারসূত্রে পাওয়া যায়।

স্থানধারক

ইনপুট বা আউটপুট আছে এমন একটি উপাদানের জন্য, command প্রায়ই প্লেসহোল্ডার থাকা প্রয়োজন যা রানটাইমে প্রকৃত ডেটা দিয়ে প্রতিস্থাপিত হয়। এই উদ্দেশ্যে বেশ কয়েকটি স্থানধারক প্রদান করা হয়েছে:

  • InputValuePlaceholder : ইনপুট আর্টিফ্যাক্টের মানের জন্য একটি স্থানধারক। রানটাইমে, এই স্থানধারকটি আর্টিফ্যাক্টের মানের স্ট্রিং উপস্থাপনা দিয়ে প্রতিস্থাপিত হয়।

  • InputUriPlaceholder : ইনপুট আর্টিফ্যাক্ট আর্গুমেন্টের URI-এর জন্য একটি স্থানধারক। রানটাইমে, এই স্থানধারকটি ইনপুট আর্টিফ্যাক্টের ডেটার URI দিয়ে প্রতিস্থাপিত হয়।

  • OutputUriPlaceholder : আউটপুট আর্টিফ্যাক্ট আর্গুমেন্টের URI-এর জন্য একটি স্থানধারক। রানটাইমে, এই স্থানধারকটিকে URI দিয়ে প্রতিস্থাপিত করা হয় যেখানে উপাদানটিকে আউটপুট আর্টিফ্যাক্টের ডেটা সংরক্ষণ করা উচিত।

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'),
    ],
)