خطوط لوله TFX به شما امکان می دهد گردش کار یادگیری ماشینی (ML) خود را روی ارکستراتورها تنظیم کنید، مانند: Apache Airflow، Apache Beam و Kubeflow Pipelines. Pipelines گردش کار شما را به دنباله ای از مؤلفه ها سازماندهی می کند، جایی که هر مؤلفه یک مرحله از گردش کار ML شما را انجام می دهد. مؤلفه های استاندارد TFX عملکرد اثبات شده ای را ارائه می دهند تا به شما کمک کنند تا ساخت یک گردش کار ML را به راحتی شروع کنید. شما همچنین می توانید اجزای سفارشی را در گردش کار خود قرار دهید. اجزای سفارشی به شما امکان می دهند گردش کار ML خود را با موارد زیر گسترش دهید:
- ساخت اجزایی که برای رفع نیازهای شما طراحی شده اند، مانند دریافت داده ها از یک سیستم اختصاصی.
- اعمال افزایش، نمونهبرداری یا پاییننمونهسازی دادهها.
- تشخیص ناهنجاری را بر اساس فواصل اطمینان یا خطای بازتولید رمزگذار خودکار انجام دهید.
- ارتباط با سیستم های خارجی مانند میز کمک برای هشدار و نظارت.
- اعمال برچسب به نمونه های بدون برچسب.
- ادغام ابزارهای ساخته شده با زبان هایی غیر از پایتون در گردش کار ML شما، مانند انجام تجزیه و تحلیل داده ها با استفاده از R.
با ترکیب مؤلفههای استاندارد و مؤلفههای سفارشی، میتوانید یک گردش کار ML ایجاد کنید که نیازهای شما را برآورده کند و در عین حال از بهترین شیوههای تعبیهشده در مؤلفههای استاندارد TFX بهرهمند شوید.
این راهنما مفاهیم مورد نیاز برای درک مولفه های سفارشی TFX و راه های مختلفی که می توانید اجزای سفارشی بسازید را شرح می دهد.
آناتومی یک جزء TFX
این بخش یک نمای کلی در سطح بالا از ترکیب یک جزء TFX ارائه می دهد. اگر با خطوط لوله TFX تازه کار هستید، با خواندن راهنمای درک خطوط لوله TFX، مفاهیم اصلی را بیاموزید .
اجزای TFX از مشخصات کامپوننت و کلاس اجرایی تشکیل شده اند که در یک کلاس واسط کامپوننت بسته بندی شده اند.
مشخصات جزء قرارداد ورودی و خروجی جزء را تعریف می کند. این قرارداد مصنوعات ورودی و خروجی کامپوننت و پارامترهایی که برای اجرای کامپوننت استفاده می شوند را مشخص می کند.
کلاس اجرایی یک جزء، اجرای کار انجام شده توسط کامپوننت را فراهم می کند.
یک کلاس رابط کامپوننت ، مشخصات کامپوننت را با مجری برای استفاده به عنوان یک جزء در خط لوله TFX ترکیب می کند.
اجزای TFX در زمان اجرا
هنگامی که خط لوله یک جزء TFX را اجرا می کند، جزء در سه فاز اجرا می شود:
- ابتدا، درایور از مشخصات کامپوننت برای بازیابی مصنوعات مورد نیاز از فروشگاه ابرداده و ارسال آنها به کامپوننت استفاده می کند.
- بعد، Executor کار کامپوننت را انجام می دهد.
- سپس Publisher از مشخصات کامپوننت و نتایج حاصل از اجراکننده برای ذخیره خروجی های جزء در ذخیره سازی ابرداده استفاده می کند.
اکثر پیاده سازی های کامپوننت سفارشی نیازی به شخصی سازی درایور یا Publisher ندارند. به طور معمول، اصلاحات در Driver و Publisher فقط در صورتی لازم است که بخواهید تعامل بین اجزای خط لوله خود و ذخیره ابرداده را تغییر دهید. اگر فقط میخواهید ورودیها، خروجیها یا پارامترهای مؤلفه خود را تغییر دهید، فقط باید مشخصات مؤلفه را تغییر دهید.
انواع قطعات سفارشی
سه نوع مؤلفه سفارشی وجود دارد: مؤلفه های مبتنی بر تابع پایتون، مؤلفه های مبتنی بر کانتینر و مؤلفه های کاملاً سفارشی. بخشهای زیر انواع مختلف اجزا و مواردی را که باید از هر رویکرد استفاده کنید، توضیح میدهد.
اجزای مبتنی بر تابع پایتون
ساخت مؤلفه های مبتنی بر تابع پایتون نسبت به مؤلفه های مبتنی بر کانتینر یا مؤلفه های کاملاً سفارشی آسان تر است. مشخصات مؤلفه در آرگومان های تابع پایتون با استفاده از حاشیه نویسی نوع تعریف می شود که توضیح می دهد که آیا یک آرگومان یک مصنوع ورودی، مصنوع خروجی یا یک پارامتر است. بدنه تابع، مجری جزء را تعریف می کند. رابط کامپوننت با اضافه کردن کامپوننت @component
به عملکرد شما تعریف می شود.
با تزئین تابع خود با کامپوننت decorator @component
و تعریف آرگومان های تابع با حاشیه نویسی نوع، می توانید کامپوننتی را بدون پیچیدگی ساخت مشخصات کامپوننت، مجری و رابط کامپوننت ایجاد کنید.
نحوه ساخت اجزای مبتنی بر تابع پایتون را بیاموزید.
اجزای کانتینری
اجزای مبتنی بر کانتینر انعطافپذیری را برای ادغام کد نوشته شده به هر زبانی در خط لوله شما فراهم میکنند، تا زمانی که بتوانید آن کد را در یک ظرف Docker اجرا کنید. برای ایجاد یک کامپوننت مبتنی بر کانتینر، باید یک تصویر ظرف Docker بسازید که حاوی کد اجرایی کامپوننت شما باشد. سپس باید تابع create_container_component
را فراخوانی کنید تا تعریف کنید:
- ورودی ها، خروجی ها و پارامترهای مشخصات جزء شما.
- تصویر کانتینر و دستوری که مجری کامپوننت اجرا می کند.
این تابع نمونه ای از مولفه را برمی گرداند که می توانید آن را در تعریف خط لوله خود قرار دهید.
این رویکرد پیچیدهتر از ساخت یک مؤلفه مبتنی بر تابع پایتون است، زیرا نیازمند بستهبندی کد شما به عنوان یک تصویر ظرف است. این رویکرد برای گنجاندن کدهای غیر پایتون در خط لوله شما یا برای ساخت اجزای پایتون با محیطهای زمان اجرا یا وابستگیهای پیچیده بسیار مناسب است.
نحوه ساخت اجزای مبتنی بر کانتینر را بیاموزید.
اجزای کاملا سفارشی
کامپوننت های کاملا سفارشی به شما این امکان را می دهند که با تعریف مشخصات کامپوننت، مجری و کلاس های رابط کامپوننت، کامپوننت ها را بسازید. این رویکرد به شما این امکان را میدهد که از یک جزء استاندارد مطابق با نیازهای خود استفاده مجدد و گسترش دهید.
اگر کامپوننت موجود با همان ورودی ها و خروجی های کامپوننت سفارشی که در حال توسعه آن هستید تعریف شده باشد، می توانید به سادگی کلاس Executor جزء موجود را لغو کنید. این بدان معناست که شما می توانید مجدداً از مشخصات کامپوننت استفاده کنید و یک مجری جدید که از یک جزء موجود مشتق شده است را پیاده سازی کنید. به این ترتیب، شما از قابلیت های ساخته شده در اجزای موجود مجددا استفاده می کنید و تنها عملکرد مورد نیاز را اجرا می کنید.
با این حال، اگر ورودی ها و خروجی های کامپوننت جدید شما منحصر به فرد هستند، می توانید مشخصات کامپوننت کاملاً جدیدی را تعریف کنید.
این رویکرد برای استفاده مجدد از مشخصات اجزا و مجریان موجود بهترین است.
نحوه ساخت اجزای کاملا سفارشی را بیاموزید.