آموزش TFX Airflow

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

پایتونPyPI

مقدمه

این آموزش برای معرفی TensorFlow Extended (TFX) طراحی شده است و به شما کمک می کند که خطوط لوله یادگیری ماشین خود را ایجاد کنید. به صورت محلی اجرا می شود و یکپارچگی با TFX و TensorBoard و همچنین تعامل با TFX در نوت بوک های Jupyter را نشان می دهد.

شما یک فرآیند معمولی توسعه ML را دنبال خواهید کرد، که با بررسی مجموعه داده شروع می شود و به یک خط لوله کاری کامل ختم می شود. در طول مسیر، راه‌هایی را برای اشکال‌زدایی و به‌روزرسانی خط لوله خود و اندازه‌گیری عملکرد بررسی خواهید کرد.

بیشتر بدانید

لطفاً برای کسب اطلاعات بیشتر به راهنمای کاربر TFX مراجعه کنید.

گام به گام

شما به تدریج خط لوله خود را با کار کردن گام به گام و پیروی از یک فرآیند توسعه ML معمولی ایجاد خواهید کرد. در اینجا مراحل انجام می شود:

  1. محیط خود را تنظیم کنید
  2. اسکلت اولیه خط لوله را بیاورید
  3. در داده های خود غوطه ور شوید
  4. مهندسی ویژگی
  5. آموزش
  6. تجزیه و تحلیل عملکرد مدل
  7. آماده برای تولید

پیش نیازها

  • لینوکس / MacOS
  • مجازی
  • پایتون 3.5+
  • Git

بسته های مورد نیاز

بسته به محیط خود ممکن است نیاز به نصب چندین بسته داشته باشید:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

اگر پایتون 3.6 را اجرا می کنید، باید python3.6-dev را نصب کنید:

sudo apt-get install python3.6-dev

اگر پایتون 3.7 را اجرا می کنید، باید python3.7-dev را نصب کنید:

sudo apt-get install python3.7-dev

علاوه بر این، اگر سیستم شما دارای نسخه GCC < 7 است، باید GCC را به روز کنید. در غیر این صورت هنگام اجرای airflow webserver ، خطاهایی را مشاهده خواهید کرد. شما می توانید نسخه فعلی خود را با:

gcc --version

اگر نیاز به به روز رسانی GCC دارید، می توانید این را اجرا کنید:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

محیط MacOS

اگر پایتون 3 و git را قبلاً نصب نکرده‌اید، می‌توانید با استفاده از مدیریت بسته Homebrew آن‌ها را نصب کنید:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

MacOS، بسته به پیکربندی، گاهی اوقات در هنگام اجرای Airflow با مشکل انشعاب رشته ها مواجه می شود. برای جلوگیری از این مشکلات باید ~/.bash_profile خود را ویرایش کنید و خط زیر را به انتهای فایل اضافه کنید:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

مواد آموزشی

کد این آموزش در آدرس زیر موجود است: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

کد بر اساس مراحلی که روی آن کار می کنید سازماندهی می شود، بنابراین برای هر مرحله کدی را که نیاز دارید و دستورالعمل هایی در مورد کارهایی که باید با آن انجام دهید را خواهید داشت.

فایل های آموزشی هم شامل تمرین و هم راه حل تمرین در صورت گیر افتادن است.

ورزش

  • taxi_pipeline.py
  • taxi_utils.py
  • تاکسی DAG

راه حل

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

کاری که شما انجام می دهید

شما در حال یادگیری نحوه ایجاد خط لوله ML با استفاده از TFX هستید

  • خطوط لوله TFX زمانی مناسب هستند که شما یک برنامه کاربردی ML تولیدی را اجرا می کنید
  • خطوط لوله TFX زمانی مناسب هستند که مجموعه داده ها بزرگ باشند
  • خطوط لوله TFX زمانی مناسب هستند که یکنواختی آموزش/خدمت مهم باشد
  • خطوط لوله TFX زمانی مناسب هستند که مدیریت نسخه برای استنتاج مهم باشد
  • گوگل از خطوط لوله TFX برای تولید ML استفاده می کند

شما یک فرآیند معمولی توسعه ML را دنبال می کنید

  • بلع، درک، و پاک کردن داده های ما
  • مهندسی ویژگی
  • آموزش
  • تحلیل عملکرد مدل
  • کف کنید، بشویید، تکرار کنید
  • آماده برای تولید

افزودن کد برای هر مرحله

آموزش به گونه ای طراحی شده است که تمام کدها در فایل ها گنجانده شده است، اما تمام کدهای مراحل 3-7 کامنت شده و با نظرات درون خطی علامت گذاری شده است. نظرات درون خطی مشخص می کند که خط کد برای کدام مرحله اعمال می شود. به عنوان مثال، کد مرحله 3 با نظر # Step 3 مشخص شده است.

کدی که برای هر مرحله اضافه می کنید معمولاً در 3 منطقه کد قرار می گیرد:

  • واردات
  • پیکربندی DAG
  • لیستی که از فراخوانی ()create_pipeline برگردانده شده است
  • کد پشتیبانی در taxi_utils.py

همانطور که آموزش را مرور می‌کنید، خطوط کدی را که برای مرحله آموزشی که در حال حاضر روی آن کار می‌کنید اعمال می‌شود، لغو نظر می‌دهید. این کد را برای آن مرحله اضافه می کند و خط لوله شما را به روز می کند. همانطور که شما این کار را انجام می دهید، ما قویاً شما را تشویق می کنیم که کدی را که از اظهار نظر حذف می کنید، مرور کنید .

مجموعه داده تاکسی شیکاگو

تاکسیتاکسی شیکاگو

شما از مجموعه داده سفرهای تاکسی منتشر شده توسط شهر شیکاگو استفاده می کنید.

می‌توانید اطلاعات بیشتری درباره مجموعه داده در Google BigQuery بخوانید. مجموعه داده کامل را در رابط کاربری BigQuery کاوش کنید.

هدف مدل - طبقه بندی باینری

آیا مشتری بیشتر از 20 درصد انعام می دهد؟

مرحله 1: محیط خود را راه اندازی کنید

اسکریپت راه اندازی ( setup_demo.sh ) TFX و Airflow را نصب می کند و جریان هوا را به گونه ای پیکربندی می کند که کار با آن را برای این آموزش آسان می کند.

در یک پوسته:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

باید setup_demo.sh را بررسی کنید تا ببینید چه کاری انجام می دهد.

مرحله 2: اسکلت اولیه خط لوله را بیاورید

سلام دنیا

در یک پوسته:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

در این مرحله نوت بوک Jupyter را راه اندازی کردید. بعداً نوت‌بوک‌های موجود در این پوشه را اجرا خواهید کرد.

در مرورگر:

  • یک مرورگر را باز کنید و به http://127.0.0.1:8080 بروید

عیب یابی

اگر با بارگیری کنسول Airflow در مرورگر وب خود مشکلی دارید، یا اگر هنگام اجرای airflow webserver خطایی وجود داشت، ممکن است برنامه دیگری در پورت 8080 اجرا شود. این پورت پیش فرض برای Airflow است، اما می توانید آن را تغییر دهید. به هر پورت کاربری دیگری که استفاده نمی شود. به عنوان مثال، برای اجرای Airflow در پورت 7070 می توانید موارد زیر را اجرا کنید:

airflow webserver -p 7070

دکمه های مشاهده DAG

دکمه های DAG

  • برای فعال کردن DAG از دکمه سمت چپ استفاده کنید
  • هنگام ایجاد تغییرات، از دکمه سمت راست برای بازخوانی DAG استفاده کنید
  • از دکمه سمت راست برای فعال کردن DAG استفاده کنید
  • روی تاکسی کلیک کنید تا به نمای نمودار DAG بروید

دکمه بازخوانی نمودار

CLI جریان هوا

همچنین می توانید از Airflow CLI برای فعال کردن و فعال کردن DAG های خود استفاده کنید:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

در انتظار تکمیل خط لوله

پس از اینکه خط لوله خود را در نمای DAGs فعال کردید، می توانید مراحل تکمیل خط لوله خود را مشاهده کنید. همانطور که هر جزء اجرا می شود، رنگ طرح جزء در نمودار DAG برای نشان دادن وضعیت آن تغییر می کند. وقتی پردازش یک جزء به پایان رسید، طرح کلی سبز تیره می شود تا نشان دهد که کار تمام شده است.

تا کنون فقط مولفه CsvExampleGen را در خط لوله ما دارید، بنابراین باید منتظر بمانید تا سبز تیره شود (~1 دقیقه).

راه اندازی کامل شد

مرحله 3: در داده های خود غوطه ور شوید

اولین وظیفه در هر پروژه علم داده یا ML، درک و پاکسازی داده ها است.

  • انواع داده ها را برای هر ویژگی درک کنید
  • به دنبال ناهنجاری ها و مقادیر گم شده باشید
  • توزیع های هر ویژگی را درک کنید

اجزاء

اجزای دادهاجزای داده

  • ExampleGen مجموعه داده ورودی را می خورد و تقسیم می کند.
  • StatisticsGen آمار مجموعه داده را محاسبه می کند.
  • SchemaGen SchemaGen آمار را بررسی می کند و یک طرح داده ایجاد می کند.
  • ExampleValidator به دنبال ناهنجاری ها و مقادیر گم شده در مجموعه داده می گردد.

در یک ویرایشگر:

  • در ~/airflow/dags خطوط مشخص شده Step 3 در taxi_pipeline.py را لغو نظر کنید
  • چند لحظه وقت بگذارید و کدی را که کامنت نکردید مرور کنید

در مرورگر:

  • با کلیک بر روی پیوند "DAGs" در گوشه سمت چپ بالا به صفحه لیست DAG ها در جریان هوا بازگردید
  • روی دکمه refresh در سمت راست برای DAG تاکسی کلیک کنید
    • شما باید ببینید "DAG [تاکسی] اکنون به عنوان یک دیزی تازه است"
  • ماشه تاکسی
  • منتظر بمانید تا خط لوله تکمیل شود
    • همه سبز تیره
    • از Refresh در سمت راست یا Refresh صفحه استفاده کنید

در داده ها غوطه ور شوید

بازگشت به ژوپیتر:

پیش از این، jupyter notebook را اجرا کردید که جلسه Jupyter را در برگه مرورگر باز کرد. اکنون به آن تب در مرورگر خود بازگردید.

  • step3.ipynb را باز کنید
  • دفترچه یادداشت را دنبال کنید

در داده ها غوطه ور شوید

نمونه پیشرفته تر

مثال ارائه شده در اینجا در واقع فقط برای شروع کار است. برای مثال پیشرفته تر TensorFlow Data Validation Colab را ببینید.

برای اطلاعات بیشتر در مورد استفاده از TFDV برای کاوش و اعتبارسنجی یک مجموعه داده، به مثال‌ها در tensorflow.org مراجعه کنید.

مرحله 4: مهندسی ویژگی

شما می توانید کیفیت پیش بینی داده های خود را افزایش دهید و/یا ابعاد را با مهندسی ویژگی کاهش دهید.

  • صلیب های ویژه
  • واژگان
  • تعبیه ها
  • PCA
  • رمزگذاری طبقه بندی شده

یکی از مزایای استفاده از TFX این است که شما کد تبدیل خود را یک بار می نویسید و تبدیل های حاصل بین آموزش و سرویس دهی سازگار خواهد بود.

اجزاء

تبدیل

  • Transform مهندسی ویژگی را روی مجموعه داده انجام می دهد.

در یک ویرایشگر:

  • در ~/airflow/dags خطوطی که Step 4 علامت گذاری شده اند را در هر دو taxi_pipeline.py و taxi_utils.py
  • چند لحظه وقت بگذارید و کدی را که کامنت نکردید مرور کنید

در مرورگر:

  • به صفحه فهرست DAG ها در جریان هوا بازگردید
  • روی دکمه refresh در سمت راست برای DAG تاکسی کلیک کنید
    • شما باید ببینید "DAG [تاکسی] اکنون به عنوان یک دیزی تازه است"
  • ماشه تاکسی
  • منتظر بمانید تا خط لوله تکمیل شود
    • همه سبز تیره
    • از Refresh در سمت راست یا Refresh صفحه استفاده کنید

مهندسی ویژگی

بازگشت به ژوپیتر:

به تب Jupyter در مرورگر خود بازگردید.

  • step4.ipynb را باز کنید
  • دفترچه یادداشت را دنبال کنید

نمونه پیشرفته تر

مثال ارائه شده در اینجا در واقع فقط برای شروع کار است. برای مثال پیشرفته تر TensorFlow Transform Colab را ببینید.

مرحله 5: آموزش

یک مدل TensorFlow را با داده های زیبا، تمیز و تبدیل شده خود آموزش دهید.

  • تبدیل های مرحله 4 را بگنجانید تا به طور مداوم اعمال شوند
  • نتایج را به عنوان SavedModel برای تولید ذخیره کنید
  • با استفاده از TensorBoard فرآیند آموزش را تجسم و کشف کنید
  • همچنین یک EvalSavedModel را برای تجزیه و تحلیل عملکرد مدل ذخیره کنید

اجزاء

در یک ویرایشگر:

  • در ~/airflow/dags خطوطی که Step 5 علامت گذاری شده اند را در هر دو taxi_pipeline.py و taxi_utils.py
  • چند لحظه وقت بگذارید و کدی را که کامنت نکردید مرور کنید

در مرورگر:

  • به صفحه فهرست DAG ها در جریان هوا بازگردید
  • روی دکمه refresh در سمت راست برای DAG تاکسی کلیک کنید
    • شما باید ببینید "DAG [تاکسی] اکنون به عنوان یک دیزی تازه است"
  • ماشه تاکسی
  • منتظر بمانید تا خط لوله تکمیل شود
    • همه سبز تیره
    • از Refresh در سمت راست یا Refresh صفحه استفاده کنید

آموزش یک مدل

بازگشت به ژوپیتر:

به تب Jupyter در مرورگر خود بازگردید.

  • step5.ipynb را باز کنید
  • دفترچه یادداشت را دنبال کنید

آموزش یک مدل

نمونه پیشرفته تر

مثال ارائه شده در اینجا در واقع فقط برای شروع کار است. برای مثال پیشرفته تر به آموزش TensorBoard مراجعه کنید.

مرحله 6: تجزیه و تحلیل عملکرد مدل

درک بیشتر از معیارهای سطح بالا.

  • کاربران عملکرد مدل را فقط برای جستارهای خود تجربه می کنند
  • عملکرد ضعیف در بخش‌هایی از داده‌ها را می‌توان با معیارهای سطح بالا پنهان کرد
  • انصاف مدل مهم است
  • اغلب زیر مجموعه های کلیدی کاربران یا داده ها بسیار مهم هستند و ممکن است کوچک باشند
    • عملکرد در شرایط بحرانی اما غیرعادی
    • عملکرد برای مخاطبان کلیدی مانند اینفلوئنسرها
  • اگر در حال تعویض مدلی هستید که در حال حاضر در حال تولید است، ابتدا مطمئن شوید که مدل جدید بهتر است
  • ارزیاب به مؤلفه Pusher می گوید که آیا مدل اوکی است

اجزاء

  • ارزیاب تجزیه و تحلیل عمیقی از نتایج آموزشی انجام می دهد و اطمینان حاصل می کند که مدل به اندازه کافی خوب است تا به سمت تولید سوق داده شود.

در یک ویرایشگر:

  • در ~/airflow/dags خطوطی که Step 6 در هر دو taxi_pipeline.py علامت گذاری شده اند را لغو نظر کنید.
  • چند لحظه وقت بگذارید و کدی را که کامنت نکردید مرور کنید

در مرورگر:

  • به صفحه فهرست DAG ها در جریان هوا بازگردید
  • روی دکمه refresh در سمت راست برای DAG تاکسی کلیک کنید
    • شما باید ببینید "DAG [تاکسی] اکنون به عنوان یک دیزی تازه است"
  • ماشه تاکسی
  • صبر کنید تا خط لوله تکمیل شود
    • همه سبز تیره
    • از Refresh در سمت راست یا Refresh صفحه استفاده کنید

تجزیه و تحلیل عملکرد مدل

بازگشت به ژوپیتر:

به تب Jupyter در مرورگر خود بازگردید.

  • step6.ipynb را باز کنید
  • دفترچه یادداشت را دنبال کنید

تجزیه و تحلیل عملکرد مدل

نمونه پیشرفته تر

مثال ارائه شده در اینجا در واقع فقط برای شروع کار است. برای مثال پیشرفته تر به آموزش تاکسی TFMA شیکاگو مراجعه کنید.

مرحله 7: آماده برای تولید

اگر مدل جدید آماده است، آن را درست کنید.

  • Pusher SavedModels را در مکان های شناخته شده مستقر می کند

اهداف استقرار مدل های جدید را از مکان های شناخته شده دریافت می کنند

  • سرویس TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • تنسورفلو هاب

اجزاء

  • Pusher مدل را در یک زیرساخت خدمت رسانی مستقر می کند.

در یک ویرایشگر:

  • در ~/airflow/dags خطوطی که Step 7 در هر دو taxi_pipeline.py علامت گذاری شده اند را لغو نظر کنید.
  • چند لحظه وقت بگذارید و کدی را که کامنت نکردید مرور کنید

در مرورگر:

  • به صفحه فهرست DAG ها در جریان هوا بازگردید
  • روی دکمه refresh در سمت راست برای DAG تاکسی کلیک کنید
    • شما باید ببینید "DAG [تاکسی] اکنون به عنوان یک دیزی تازه است"
  • ماشه تاکسی
  • صبر کنید تا خط لوله تکمیل شود
    • همه سبز تیره
    • از Refresh در سمت راست یا Refresh صفحه استفاده کنید

آماده برای تولید

مراحل بعدی

شما اکنون مدل خود را آموزش داده و اعتبارسنجی کرده اید و یک فایل SavedModel را در فهرست ~/airflow/saved_models/taxi صادر کرده اید. مدل شما اکنون آماده تولید است. اکنون می توانید مدل خود را در هر یک از اهداف استقرار TensorFlow، از جمله:

  • سرویس TensorFlow ، برای ارائه مدل شما در سرور یا مزرعه سرور و پردازش درخواست‌های استنتاج REST و/یا gRPC.
  • TensorFlow Lite ، برای گنجاندن مدل شما در یک برنامه تلفن همراه بومی Android یا iOS، یا در برنامه Raspberry Pi، IoT یا میکروکنترلر.
  • TensorFlow.js ، برای اجرای مدل خود در مرورگر وب یا برنامه Node.JS.