अपाचे बीम और टीएफएक्स

अपाचे बीम बैच चल रहा है और प्रसंस्करण नौकरियों निष्पादन इंजन की एक किस्म पर चलने वाले डेटा स्ट्रीमिंग के लिए एक रूपरेखा प्रदान करता है। कई टीएफएक्स पुस्तकालय कार्यों को चलाने के लिए बीम का उपयोग करते हैं, जो गणना समूहों में उच्च स्तर की मापनीयता को सक्षम बनाता है। बीम में विभिन्न प्रकार के निष्पादन इंजन या "धावक" के लिए समर्थन शामिल है, जिसमें एक प्रत्यक्ष धावक भी शामिल है जो एकल गणना नोड पर चलता है और विकास, परीक्षण या छोटे परिनियोजन के लिए बहुत उपयोगी है। बीम एक अमूर्त परत प्रदान करता है जो टीएफएक्स को कोड संशोधनों के बिना किसी भी समर्थित धावक पर चलाने में सक्षम बनाता है। टीएफएक्स बीम पायथन एपीआई का उपयोग करता है, इसलिए यह उन धावकों तक सीमित है जो पायथन एपीआई द्वारा समर्थित हैं।

परिनियोजन और मापनीयता

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

देखें अपाचे बीम अपाचे बीम बारे में अधिक जानकारी के लिए दस्तावेज़।

Google मेघ उपयोगकर्ताओं के लिए, Dataflow सिफारिश धावक, जो संसाधनों, गतिशील काम पुनर्संतुलन, अन्य Google क्लाउड सेवाओं के साथ गहरे एकीकरण के autoscaling के माध्यम से एक serverless और लागत प्रभावी मंच प्रदान करता है, अंतर्निहित सुरक्षा और निगरानी है।

कस्टम पायथन कोड और निर्भरता

टीएफएक्स पाइपलाइन में बीम का उपयोग करने की एक उल्लेखनीय जटिलता कस्टम कोड और/या अतिरिक्त पायथन मॉड्यूल से आवश्यक निर्भरता को संभालना है। यहां कुछ उदाहरण दिए गए हैं कि कब यह समस्या हो सकती है:

  • preprocessing_fn को उपयोगकर्ता के अपने पायथन मॉड्यूल को संदर्भित करने की आवश्यकता है
  • मूल्यांकनकर्ता घटक के लिए एक कस्टम एक्सट्रैक्टर
  • कस्टम मॉड्यूल जो एक TFX घटक से उप-वर्गीकृत हैं

TFX के लिए बीम के समर्थन पर निर्भर करता है अजगर पाइपलाइन निर्भरता प्रबंध अजगर निर्भरता को संभालने के लिए। वर्तमान में इसे प्रबंधित करने के दो तरीके हैं:

  1. स्रोत पैकेज के रूप में पायथन कोड और निर्भरता प्रदान करना
  2. [केवल डेटा प्रवाह] कार्यकर्ता के रूप में एक कंटेनर छवि का उपयोग करना

इन पर आगे चर्चा की गई है।

स्रोत पैकेज के रूप में पायथन कोड और निर्भरता प्रदान करना

यह उन उपयोगकर्ताओं के लिए अनुशंसित है जो:

  1. पायथन पैकेजिंग से परिचित हैं और
  2. केवल पायथन स्रोत कोड का उपयोग करें (यानी, कोई सी मॉड्यूल या साझा पुस्तकालय नहीं)।

में पथ में से एक का पालन करें अजगर पाइपलाइन निर्भरता प्रबंध निम्नलिखित beam_pipeline_args के इस एक का उपयोग प्रदान करने के लिए:

  • --सेटअप_फाइल
  • --extra_package
  • --requirements_file

नोटिस: ऊपर से किसी भी मामले में, यह सुनिश्चित करें कि के समान संस्करण बनाने कृपया tfx एक निर्भरता के रूप में सूचीबद्ध है।

[केवल डेटा प्रवाह] एक कार्यकर्ता के लिए एक कंटेनर छवि का उपयोग करना

TFX 0.26.0 और इसके बाद के संस्करण का उपयोग कर के लिए प्रयोगात्मक समर्थन है कस्टम कंटेनर छवि Dataflow श्रमिकों के लिए।

इसका उपयोग करने के लिए, आपको यह करना होगा:

  • एक डोकर छवि है जो दोनों हैं, इस बिल्ड tfx और उपयोगकर्ताओं के कस्टम कोड और निर्भरता पहले से स्थापित।
    • उपयोगकर्ताओं को, जो (1) उपयोग के लिए tfx>=0.26 और (2) अजगर 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 को हटा दें।

कार्यसूची (बी / 179,738,639): के लिए दस्तावेज़ बनाने के लिए कैसे परीक्षण कस्टम कंटेनर के लिए स्थानीय स्तर पर बाद 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([...])