Apache Beam এবং TFX

Apache Beam বিভিন্ন এক্সিকিউশন ইঞ্জিনে চালিত ব্যাচ এবং স্ট্রিমিং ডেটা প্রসেসিং কাজের জন্য একটি কাঠামো প্রদান করে। বেশ কিছু TFX লাইব্রেরি চলমান কাজের জন্য বীম ব্যবহার করে, যা কম্পিউট ক্লাস্টার জুড়ে উচ্চ মাত্রার মাপযোগ্যতা সক্ষম করে। রশ্মি বিভিন্ন এক্সিকিউশন ইঞ্জিন বা "রানার" এর জন্য সমর্থন অন্তর্ভুক্ত করে, যার মধ্যে রয়েছে সরাসরি রানার যা একটি একক কম্পিউট নোডে চলে এবং এটি উন্নয়ন, পরীক্ষা বা ছোট স্থাপনার জন্য খুবই উপযোগী। বিম একটি বিমূর্ততা স্তর প্রদান করে যা TFX কে কোড পরিবর্তন ছাড়াই যেকোনো সমর্থিত রানারে চালানোর জন্য সক্ষম করে। TFX Beam Python API ব্যবহার করে, তাই এটি Python API দ্বারা সমর্থিত রানারদের মধ্যে সীমাবদ্ধ।

স্থাপনা এবং পরিমাপযোগ্যতা

কাজের চাপ বাড়ার সাথে সাথে বীম বড় কম্পিউট ক্লাস্টার জুড়ে খুব বড় স্থাপনায় স্কেল করতে পারে। এটি শুধুমাত্র অন্তর্নিহিত রানারের মাপযোগ্যতার দ্বারা সীমাবদ্ধ। বৃহৎ স্থাপনায় রানারদের সাধারণত একটি কন্টেইনার অর্কেস্ট্রেশন সিস্টেমে মোতায়েন করা হবে যেমন কুবারনেটস বা অ্যাপাচি মেসোস স্বয়ংক্রিয় অ্যাপ্লিকেশন স্থাপনা, স্কেলিং এবং পরিচালনার জন্য।

Apache Beam সম্পর্কে আরও তথ্যের জন্য Apache Beam ডকুমেন্টেশন দেখুন।

Google ক্লাউড ব্যবহারকারীদের জন্য, Dataflow হল প্রস্তাবিত রানার, যা সম্পদের অটোস্কেলিং, গতিশীল কাজের পুনঃব্যালেন্সিং, অন্যান্য Google ক্লাউড পরিষেবার সাথে গভীর একীকরণ, অন্তর্নির্মিত নিরাপত্তা এবং পর্যবেক্ষণের মাধ্যমে একটি সার্ভারহীন এবং ব্যয়-কার্যকর প্ল্যাটফর্ম প্রদান করে।

কাস্টম পাইথন কোড এবং নির্ভরতা

একটি TFX পাইপলাইনে বীম ব্যবহারের একটি উল্লেখযোগ্য জটিলতা হল কাস্টম কোড এবং/অথবা অতিরিক্ত পাইথন মডিউল থেকে প্রয়োজনীয় নির্ভরতাগুলি পরিচালনা করা। যখন এটি একটি সমস্যা হতে পারে তার কিছু উদাহরণ এখানে দেওয়া হল:

  • preprocessing_fn-কে ব্যবহারকারীর নিজস্ব পাইথন মডিউল উল্লেখ করতে হবে
  • মূল্যায়নকারী উপাদানের জন্য একটি কাস্টম এক্সট্র্যাক্টর
  • কাস্টম মডিউল যা একটি TFX উপাদান থেকে উপ-শ্রেণীভুক্ত

TFX পাইথন নির্ভরতা পরিচালনা করতে পাইথন পাইপলাইন নির্ভরতা পরিচালনার জন্য বীমের সমর্থনের উপর নির্ভর করে। বর্তমানে এটি পরিচালনা করার দুটি উপায় রয়েছে:

  1. সোর্স প্যাকেজ হিসাবে পাইথন কোড এবং নির্ভরতা প্রদান করা
  2. [শুধুমাত্র ডেটাফ্লো] কর্মী হিসাবে একটি ধারক চিত্র ব্যবহার করা

এগুলো পরবর্তীতে আলোচনা করা হয়েছে।

একটি উৎস প্যাকেজ হিসাবে পাইথন কোড এবং নির্ভরতা প্রদান করা

এটি ব্যবহারকারীদের জন্য সুপারিশ করা হয় যারা:

  1. পাইথন প্যাকেজিং এর সাথে পরিচিত এবং
  2. শুধুমাত্র পাইথন সোর্স কোড ব্যবহার করুন (যেমন, কোন সি মডিউল বা শেয়ার্ড লাইব্রেরি)।

নিম্নলিখিত beam_pipeline_args ব্যবহার করে এটি প্রদান করতে পাইথন পাইপলাইন নির্ভরতা পরিচালনা করার জন্য অনুগ্রহ করে একটি পথ অনুসরণ করুন:

  • --সেটআপ_ফাইল
  • --অতিরিক্ত_প্যাকেজ
  • --requirements_file

নোটিশ: উপরের যেকোনো ক্ষেত্রে, দয়া করে নিশ্চিত করুন যে tfx এর একই সংস্করণ নির্ভরতা হিসাবে তালিকাভুক্ত করা হয়েছে।

[শুধুমাত্র ডেটাফ্লো] একজন শ্রমিকের জন্য একটি ধারক চিত্র ব্যবহার করা

TFX 0.26.0 এবং তার উপরে ডেটাফ্লো কর্মীদের জন্য কাস্টম কন্টেইনার ইমেজ ব্যবহার করার জন্য পরীক্ষামূলক সমর্থন রয়েছে।

এটি ব্যবহার করার জন্য, আপনাকে এটি করতে হবে:

  • একটি ডকার ইমেজ তৈরি করুন যাতে tfx এবং ব্যবহারকারীদের কাস্টম কোড এবং নির্ভরতা উভয়ই প্রি-ইনস্টল করা থাকে।
    • ব্যবহারকারীদের জন্য যারা (1) tfx>=0.26 ব্যবহার করে এবং (2) তাদের পাইপলাইনগুলি বিকাশ করতে python 3.7 ব্যবহার করে, এটি করার সবচেয়ে সহজ উপায় হল অফিসিয়াল tensorflow/tfx চিত্রের সংশ্লিষ্ট সংস্করণটি প্রসারিত করা:
# You can use a build-arg to dynamically pass in the
# version of TFX being used to your Dockerfile.

ARG TFX_VERSION
FROM tensorflow/tfx:${TFX_VERSION}
# COPY your code and dependencies in
  • একটি ধারক ইমেজ রেজিস্ট্রিতে নির্মিত চিত্রটিকে পুশ করুন যা ডেটাফ্লো দ্বারা ব্যবহৃত প্রকল্প দ্বারা অ্যাক্সেসযোগ্য।
    • Google ক্লাউড ব্যবহারকারীরা ক্লাউড বিল্ড ব্যবহার করার কথা বিবেচনা করতে পারেন যা উপরের ধাপগুলোকে সুন্দরভাবে স্বয়ংক্রিয় করে।
  • নিম্নলিখিত beam_pipeline_args প্রদান করুন:
beam_pipeline_args.extend([
    '--runner=DataflowRunner',
    '--project={project-id}',
    '--worker_harness_container_image={image-ref}',
    '--experiments=use_runner_v2',
])

TODO(b/171733562): dataflow এর জন্য ডিফল্ট হয়ে গেলে use_runner_v2 সরান।

TODO(b/179738639): https://issues.apache.org/jira/browse/BEAM-5440- এর পরে স্থানীয়ভাবে কাস্টম কন্টেইনার কীভাবে পরীক্ষা করবেন তার জন্য ডকুমেন্টেশন তৈরি করুন

বিম পাইপলাইন আর্গুমেন্ট

বিতরণকৃত ডেটা প্রক্রিয়াকরণের জন্য বেশ কিছু TFX উপাদান বীমের উপর নির্ভর করে। এগুলি beam_pipeline_args এর সাথে কনফিগার করা হয়েছে, যা পাইপলাইন তৈরির সময় নির্দিষ্ট করা হয়:

my_pipeline = Pipeline(
    ...,
    beam_pipeline_args=[...])

TFX 0.30 এবং তার উপরে একটি ইন্টারফেস যোগ করে, with_beam_pipeline_args , প্রতি কম্পোনেন্টে পাইপলাইন লেভেল বিম আর্গস প্রসারিত করার জন্য:

example_gen = CsvExampleGen(input_base=data_root).with_beam_pipeline_args([...])