أباتشي شعاع يوفر إطارا لتشغيل دفعة وتدفق ومعالجة البيانات والوظائف التي تعمل على مجموعة متنوعة من محركات التنفيذ. تستخدم العديد من مكتبات TFX Beam لتشغيل المهام ، مما يتيح درجة عالية من قابلية التوسع عبر مجموعات الحوسبة. يتضمن Beam دعمًا لمجموعة متنوعة من محركات التنفيذ أو "المتسابقين" ، بما في ذلك عداء مباشر يعمل على عقدة حسابية واحدة وهو مفيد جدًا للتطوير أو الاختبار أو عمليات النشر الصغيرة. يوفر Beam طبقة تجريد تمكن TFX من العمل على أي عداء مدعوم بدون تعديلات التعليمات البرمجية. تستخدم TFX واجهة برمجة تطبيقات Beam Python ، لذا فهي مقصورة على المتسابقين المدعومين من قبل Python API.
النشر وقابلية التوسع
مع زيادة متطلبات عبء العمل ، يمكن لـ Beam التوسع في عمليات النشر الكبيرة جدًا عبر مجموعات الحوسبة الكبيرة. هذا مقيد فقط من خلال قابلية التوسع للعداء الأساسي. عادةً ما يتم نشر المتسابقين في عمليات النشر الكبيرة في نظام تنسيق الحاوية مثل Kubernetes أو Apache Mesos لأتمتة نشر التطبيقات وقياسها وإدارتها.
رؤية أباتشي شعاع الوثائق لمزيد من المعلومات حول أباتشي شعاع.
لمستخدمي جوجل الغيمة، تدفق البيانات هو عداء الموصى بها، والتي توفر serverless وفعالة من حيث التكلفة منصة من خلال autoscaling الموارد، إعادة التوازن عمل ديناميكية، التكامل العميق مع خدمات Google Cloud أخرى، الذي بني في الأمن والمراقبة.
كود Python المخصص والتبعيات
أحد التعقيدات الملحوظة لاستخدام Beam في خط أنابيب TFX هو التعامل مع التعليمات البرمجية المخصصة و / أو التبعيات المطلوبة من وحدات Python النمطية الإضافية. فيما يلي بعض الأمثلة على الوقت الذي قد تكون فيه هذه مشكلة:
- يحتاج preprocessing_fn إلى الإشارة إلى وحدة Python الخاصة بالمستخدم
- مستخرج مخصص لمكون المقيم
- وحدات مخصصة مصنفة فرعية من مكون TFX
تعتمد TFX على دعم شعاع ل إدارة بيثون خطوط الأنابيب التابعة لمعالجة تبعيات بيثون. يوجد حاليًا طريقتان لإدارة هذا:
- توفير كود Python والتبعيات كحزمة مصدر
- [تدفق البيانات فقط] استخدام صورة حاوية كعامل
وتناقش هذه بعد ذلك.
توفير كود Python والتبعيات كحزمة مصدر
يوصى بهذا للمستخدمين الذين:
- تعرف على حزم Python و
- استخدم فقط شفرة مصدر Python (على سبيل المثال ، لا توجد وحدات C أو مكتبات مشتركة).
يرجى اتباع أحد المسارات في إدارة بيثون خطوط الأنابيب التابعة لإعطاء هذا واحد باستخدام لbeam_pipeline_args التالية:
- --ملف الإعداد
- - حزمة_إضافية
- --متطلبات_ملف
تنبيه: من أي من الحالات المذكورة أعلاه، الرجاء التأكد من أن نفس الإصدار من tfx
يتم سرد ك تبعية.
[تدفق البيانات فقط] استخدام صورة حاوية لعامل
TFX 0.26.0 وفوق يحظى بدعم تجريبي لاستخدام العرف صورة حاوية للعاملين في تدفق البيانات.
من أجل استخدام هذا ، يجب عليك:
- بناء صورة عامل الميناء الذي على حد سواء
tfx
والتعليمات البرمجية المخصصة المستخدمين وتبعيات مثبتة مسبقا.- للمستخدمين الذين (1) استخدام
tfx>=0.26
و (2) يستخدم بيثون 3.7 لتطوير قنواتها، وأسهل طريقة للقيام بذلك هو توسيع نسخة المقابلة من المسؤولtensorflow/tfx
الصورة:
- للمستخدمين الذين (1) استخدام
# 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
- ادفع الصورة التي تم إنشاؤها إلى سجل صورة حاوية يمكن الوصول إليه بواسطة المشروع الذي يستخدمه Dataflow.
- يمكن لمستخدمي Google الغيمة النظر في استخدام سحابة البناء الذي بأتمتة طيف الخطوات المذكورة أعلاه.
- توفير التالية
beam_pipeline_args
:
beam_pipeline_args.extend([
'--runner=DataflowRunner',
'--project={project-id}',
'--worker_harness_container_image={image-ref}',
'--experiments=use_runner_v2',
])
TODO (ب / 171733562): قم بإزالة use_runner_v2 بمجرد أن يكون افتراضيًا لـ Dataflow.
TODO (ب / 179738639): إنشاء وثائق عن كيفية حاوية مخصصة اختبار محليا بعد https://issues.apache.org/jira/browse/BEAM-5440
الحجج شعاع خط الأنابيب
تعتمد العديد من مكونات TFX على Beam لمعالجة البيانات الموزعة. وتكوينها مع 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([...])