آپاچی پرتو یک چارچوب برای اجرای دسته ای و جریان پردازش کارهایی که بر روی انواع موتورهای اعدام اجرا داده می باشد. تعدادی از کتابخانه های TFX از Beam برای اجرای وظایف استفاده می کنند که درجه بالایی از مقیاس پذیری را در میان خوشه های محاسباتی امکان پذیر می کند. Beam شامل پشتیبانی از انواع موتورهای اجرایی یا "runners" میشود، از جمله یک runner مستقیم که روی یک گره محاسباتی اجرا میشود و برای توسعه، آزمایش یا استقرار کوچک بسیار مفید است. Beam یک لایه انتزاعی را فراهم می کند که TFX را قادر می سازد بر روی هر اجرا کننده پشتیبانی شده بدون تغییر کد اجرا شود. TFX از Beam Python API استفاده می کند، بنابراین محدود به رانرهایی است که توسط Python API پشتیبانی می شوند.
استقرار و مقیاس پذیری
با افزایش نیازهای بار کاری، پرتو می تواند به استقرارهای بسیار بزرگ در میان خوشه های محاسباتی بزرگ مقیاس شود. این تنها با مقیاس پذیری دونده زیرین محدود می شود. دوندگان در استقرارهای بزرگ معمولاً در یک سیستم ارکستراسیون کانتینری مانند Kubernetes یا Apache Mesos برای خودکارسازی استقرار، مقیاسبندی و مدیریت برنامهها مستقر میشوند.
را ببینید آپاچی پرتو اسناد و مدارک برای کسب اطلاعات بیشتر در آپاچی پرتو.
برای کاربران Google Cloud، Dataflow دونده توصیه می شود، فراهم می کند که بدون سرور و مقرون به صرفه از طریق پلت فرم autoscaling از منابع، ایجاد توازن کار پویا، یکپارچه سازی عمیق با دیگر خدمات Google Cloud است، ساخته شده در امنیت، و نظارت بر.
کدهای سفارشی پایتون و وابستگی ها
یکی از پیچیدگی های قابل توجه استفاده از Beam در خط لوله TFX، مدیریت کد سفارشی و/یا وابستگی های مورد نیاز از ماژول های اضافی پایتون است. در اینجا چند نمونه از مواردی که ممکن است مشکل باشد آورده شده است:
- preprocessing_fn باید به ماژول پایتون خود کاربر مراجعه کند
- یک استخراج کننده سفارشی برای مولفه Evaluator
- ماژول های سفارشی که از یک جزء TFX زیر کلاس هستند
TFX متکی بر پشتیبانی پرتو برای مدیریت پایتون خط لوله وابستگی که مسئولیت رسیدگی به وابستگی پایتون. در حال حاضر دو راه برای مدیریت این موضوع وجود دارد:
- ارائه کدهای پایتون و وابستگی ها به عنوان بسته منبع
- [فقط جریان داده] استفاده از تصویر کانتینر به عنوان کارگر
در ادامه به این موارد پرداخته می شود.
ارائه کدهای پایتون و وابستگی ها به عنوان یک بسته منبع
این برای کاربرانی که:
- آشنایی با بسته بندی پایتون و
- فقط از کد منبع پایتون استفاده کنید (یعنی بدون ماژول C یا کتابخانه های مشترک).
لطفا یکی از دو راه در دنبال مدیریت پایتون خط لوله وابستگی به ارائه این یکی با استفاده از از beam_pipeline_args زیر است:
- --setup_file
- --بسته_اضافی
- --requirements_file
توجه: در هر یک از موارد فوق، لطفا مطمئن شوید که نسخه های مشابه از tfx
است به عنوان یک وابستگی ذکر شده است.
[فقط جریان داده] استفاده از تصویر ظرف برای کارگر
TFX 0.26.0 و بالاتر دارای پشتیبانی آزمایشی برای استفاده از تصویر ظرف سفارشی برای کارگران Dataflow.
برای استفاده از این، شما باید:
- ساخت یک تصویر کارگر بارانداز است که هر دو
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 Cloud می توانید در نظر با استفاده از ابر ساخت که به سادگی مراحل فوق خودکار.
- فراهم می کند که زیر
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 (ب / 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([...])