برنامج TFX Airflow

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

بايثونPyPI

مقدمة

تم تصميم هذا البرنامج التعليمي لتقديم TensorFlow Extended (TFX) ومساعدتك على تعلم إنشاء خطوط أنابيب التعلم الآلي الخاصة بك. يتم تشغيله محليًا ، ويُظهر التكامل مع TFX و TensorBoard بالإضافة إلى التفاعل مع TFX في أجهزة الكمبيوتر المحمولة Jupyter.

ستتبع عملية تطوير نموذجية لـ ML ، بدءًا من فحص مجموعة البيانات ، وينتهي بك الأمر بخط أنابيب عمل كامل. على طول الطريق سوف تستكشف طرق تصحيح الأخطاء وتحديث خط الأنابيب الخاص بك ، وقياس الأداء.

يتعلم أكثر

يرجى الاطلاع على دليل مستخدم TFX لمعرفة المزيد.

خطوة بخطوة

ستنشئ تدريجيًا خط الأنابيب الخاص بك من خلال العمل خطوة بخطوة ، باتباع عملية تطوير نموذجية لـ ML. فيما يلي الخطوات:

  1. قم بإعداد بيئتك
  2. قم بإحضار هيكل خط الأنابيب الأولي
  3. الغوص في بياناتك
  4. هندسة الميزات
  5. تمرين
  6. تحليل أداء النموذج
  7. جاهز للإنتاج

المتطلبات الأساسية

  • لينكس / ماك
  • Virtualenv
  • Python 3.5+
  • شخص سخيف

الحزم المطلوبة

اعتمادًا على بيئتك ، قد تحتاج إلى تثبيت عدة حزم:

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

إذا كنت تقوم بتشغيل Python 3.6 ، فيجب عليك تثبيت python3.6-dev:

sudo apt-get install python3.6-dev

إذا كنت تقوم بتشغيل Python 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

إذا لم يكن لديك Python 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 مناسبة عندما تكون إدارة الإصدار للاستدلال أمرًا مهمًا
  • تستخدم Google خطوط أنابيب TFX لإنتاج ML

أنت تتبع عملية تطوير نموذجية ML

  • استيعاب بياناتنا وفهمها وتنظيفها
  • هندسة الميزات
  • تمرين
  • تحليل أداء النموذج
  • رغوة الصابون تكرار شطف
  • جاهز للإنتاج

إضافة رمز لكل خطوة

تم تصميم البرنامج التعليمي بحيث يتم تضمين جميع التعليمات البرمجية في الملفات ، ولكن يتم التعليق على جميع التعليمات البرمجية للخطوات من 3 إلى 7 وتمييزها بالتعليقات المضمنة. تحدد التعليقات المضمنة الخطوة التي ينطبق عليها سطر التعليمات البرمجية. على سبيل المثال ، رمز الخطوة 3 مميز بالتعليق # Step 3 .

عادةً ما يقع الرمز الذي ستضيفه لكل خطوة في 3 مناطق من الكود:

  • الواردات
  • تكوين DAG
  • تم إرجاع القائمة من استدعاء create_pipeline ()
  • الكود الداعم في taxi_utils.py

أثناء استعراض البرنامج التعليمي ، ستقوم بإلغاء التعليق عن سطور التعليمات البرمجية التي تنطبق على خطوة البرنامج التعليمي التي تعمل عليها حاليًا. سيؤدي ذلك إلى إضافة الرمز لهذه الخطوة ، وتحديث خط الأنابيب الخاص بك. أثناء قيامك بذلك ، نشجعك بشدة على مراجعة الشفرة التي لا تعلق عليها .

مجموعة بيانات تاكسي شيكاغو

سيارة اجرهتاكسي شيكاغو

أنت تستخدم مجموعة بيانات رحلات سيارات الأجرة الصادرة عن مدينة شيكاغو.

يمكنك قراءة المزيد حول مجموعة البيانات في Google BigQuery . استكشف مجموعة البيانات الكاملة في BigQuery UI .

هدف النموذج - التصنيف الثنائي

هل سيقدم العميل إكرامية أكثر أم أقل من 20٪؟

الخطوة 1: قم بإعداد بيئتك

يقوم البرنامج النصي للإعداد ( setup_demo.sh ) بتثبيت TFX و Airflow ، ويقوم بتكوين 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 لتمكين وتشغيل DAGs:

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

# trigger
airflow trigger_dag <your DAG name>

في انتظار اكتمال خط الأنابيب

بعد تشغيل خط الأنابيب الخاص بك في عرض DAGs ، يمكنك مشاهدة خط الأنابيب الخاص بك يكمل المعالجة. مع تشغيل كل مكون ، سيتغير لون المخطط التفصيلي للمكون في الرسم البياني DAG لإظهار حالته. عندما ينتهي أحد المكونات من معالجة المخطط التفصيلي سيتحول إلى اللون الأخضر الداكن لإظهار أنه قد تم الانتهاء منه.

حتى الآن لديك فقط مكون CsvExampleGen في خط الأنابيب الخاص بنا ، لذلك عليك الانتظار حتى يتحول إلى اللون الأخضر الداكن (حوالي دقيقة واحدة).

الإعداد الكامل

الخطوة 3: الغوص في بياناتك

المهمة الأولى في أي علم بيانات أو مشروع ML هي فهم البيانات وتنظيفها.

  • فهم أنواع البيانات لكل معلم
  • ابحث عن القيم الشاذة والقيم المفقودة
  • افهم توزيعات كل ميزة

عناصر

مكونات البياناتمكونات البيانات

  • يستوعب ExampleGen مجموعة بيانات الإدخال ويقسمها.
  • StatisticsGen يحسب إحصائيات لمجموعة البيانات.
  • SchemaGen SchemaGen بفحص الإحصائيات وإنشاء مخطط بيانات.
  • يبحث ExampleValidator عن القيم الشاذة والقيم المفقودة في مجموعة البيانات.

في محرر:

  • في ~ / airflow / dags ، قم بإلغاء التعليق على الأسطر التي تحمل علامة Step 3 في taxi_pipeline.py
  • توقف لحظة لمراجعة الكود الذي لم تقم بتعليقه

في المستعرض:

  • ارجع إلى صفحة قائمة DAGs في Airflow من خلال النقر على رابط "DAGs" في الزاوية اليسرى العليا
  • انقر فوق زر التحديث على الجانب الأيمن لسيارة الأجرة DAG
    • يجب أن تشاهد "DAG [سيارة أجرة] أصبحت الآن طازجة مثل ديزي"
  • تاكسي الزناد
  • انتظر حتى يكتمل خط الأنابيب
    • كل أخضر غامق
    • استخدم التحديث على الجانب الأيمن أو تحديث الصفحة

الغوص في البيانات

مرة أخرى على Jupyter:

في وقت سابق ، قمت بتشغيل jupyter notebook ، والذي فتح جلسة Jupyter في علامة تبويب المتصفح. عد الآن إلى علامة التبويب تلك في متصفحك.

  • افتح step3.ipynb
  • اتبع دفتر الملاحظات

الغوص في البيانات

مثال أكثر تقدمًا

المثال المعروض هنا يهدف فقط إلى البدء. للحصول على مثال أكثر تقدمًا ، راجع TensorFlow Data Validation Colab .

لمزيد من المعلومات حول استخدام TFDV لاستكشاف مجموعة بيانات والتحقق منها ، راجع الأمثلة على tensorflow.org .

الخطوة 4: هندسة الميزات

يمكنك زيادة الجودة التنبؤية لبياناتك و / أو تقليل الأبعاد باستخدام هندسة الميزات.

  • تقاطعات الميزة
  • المفردات
  • حفلات الزفاف
  • PCA
  • الترميز القاطع

تتمثل إحدى مزايا استخدام TFX في أنك ستكتب رمز التحويل الخاص بك مرة واحدة ، وستكون التحولات الناتجة متسقة بين التدريب والخدمة.

عناصر

تحول

  • ينفذ التحويل هندسة الميزات على مجموعة البيانات.

في محرر:

  • في ~ / airflow / dags ، قم بإلغاء التعليق على الأسطر التي تحمل علامة Step 4 في كل من taxi_pipeline.py و taxi_utils.py
  • توقف لحظة لمراجعة الكود الذي لم تقم بتعليقه

في المستعرض:

  • ارجع إلى صفحة قائمة DAGs في Airflow
  • انقر فوق زر التحديث على الجانب الأيمن لسيارة الأجرة DAG
    • يجب أن تشاهد "DAG [سيارة أجرة] أصبحت الآن طازجة مثل ديزي"
  • تاكسي الزناد
  • انتظر حتى يكتمل خط الأنابيب
    • كل أخضر غامق
    • استخدم التحديث على الجانب الأيمن أو تحديث الصفحة

هندسة الخصائص

مرة أخرى على Jupyter:

ارجع إلى علامة التبويب Jupyter في متصفحك.

  • افتح step4.ipynb
  • اتبع دفتر الملاحظات

مثال أكثر تقدمًا

المثال المعروض هنا يهدف فقط إلى البدء. للحصول على مثال أكثر تقدمًا ، راجع TensorFlow Transform Colab .

الخطوة الخامسة: التدريب

قم بتدريب نموذج TensorFlow باستخدام بياناتك المحولة والرائعة والنظيفة.

  • قم بتضمين التحويلات من الخطوة 4 حتى يتم تطبيقها بشكل متسق
  • حفظ النتائج كنموذج SavedModel للإنتاج
  • تصور واستكشف عملية التدريب باستخدام TensorBoard
  • احفظ أيضًا نموذج EvalSavedModel لتحليل أداء النموذج

عناصر

في محرر:

  • في ~ / airflow / dags ، قم بإلغاء التعليق على الأسطر التي تحمل علامة Step 5 في كل من taxi_pipeline.py و taxi_utils.py
  • توقف لحظة لمراجعة الكود الذي لم تقم بتعليقه

في المستعرض:

  • ارجع إلى صفحة قائمة DAGs في Airflow
  • انقر فوق زر التحديث على الجانب الأيمن لسيارة الأجرة DAG
    • يجب أن تشاهد "DAG [سيارة أجرة] أصبحت الآن طازجة مثل ديزي"
  • تاكسي الزناد
  • انتظر حتى يكتمل خط الأنابيب
    • كل أخضر غامق
    • استخدم التحديث على الجانب الأيمن أو تحديث الصفحة

تدريب نموذج

مرة أخرى على Jupyter:

ارجع إلى علامة التبويب Jupyter في متصفحك.

  • افتح step5.ipynb
  • اتبع دفتر الملاحظات

تدريب نموذج

مثال أكثر تقدمًا

المثال المعروض هنا يهدف فقط إلى البدء. للحصول على مثال أكثر تقدمًا ، راجع البرنامج التعليمي TensorBoard .

الخطوة السادسة: تحليل أداء النموذج

فهم أكثر من مجرد مقاييس المستوى الأعلى.

  • يختبر المستخدمون أداء نموذجي لاستفساراتهم فقط
  • يمكن إخفاء الأداء الضعيف لشرائح البيانات بواسطة مقاييس المستوى الأعلى
  • نموذج العدل مهم
  • غالبًا ما تكون المجموعات الفرعية الرئيسية للمستخدمين أو البيانات مهمة جدًا ، وقد تكون صغيرة
    • الأداء في الظروف الحرجة ولكن غير العادية
    • الأداء للجماهير الرئيسية مثل المؤثرين
  • إذا كنت تستبدل نموذجًا قيد الإنتاج حاليًا ، فتأكد أولاً من أن النموذج الجديد أفضل
  • المقيِّم يخبر مكون Pusher إذا كان النموذج على ما يرام

عناصر

  • يقوم المقيم بتحليل عميق لنتائج التدريب ، ويضمن أن النموذج "جيد بما فيه الكفاية" ليتم دفعه إلى الإنتاج.

في محرر:

  • في ~ / airflow / dags ، قم بإلغاء التعليق على الأسطر التي تحمل علامة Step 6 في كل من taxi_pipeline.py
  • توقف لحظة لمراجعة الكود الذي لم تقم بتعليقه

في المستعرض:

  • ارجع إلى صفحة قائمة DAGs في Airflow
  • انقر فوق زر التحديث على الجانب الأيمن لسيارة الأجرة DAG
    • يجب أن تشاهد "DAG [سيارة أجرة] أصبحت الآن طازجة مثل ديزي"
  • تاكسي الزناد
  • انتظر حتى يكتمل خط الأنابيب
    • كل أخضر غامق
    • استخدم التحديث على الجانب الأيمن أو تحديث الصفحة

تحليل أداء النموذج

مرة أخرى على Jupyter:

ارجع إلى علامة التبويب Jupyter في متصفحك.

  • افتح step6.ipynb
  • اتبع دفتر الملاحظات

تحليل أداء النموذج

مثال أكثر تقدمًا

المثال المعروض هنا يهدف فقط إلى البدء. للحصول على مثال أكثر تقدمًا ، راجع دروس TFMA Chicago Taxi .

الخطوة 7: جاهز للإنتاج

إذا كان النموذج الجديد جاهزًا ، فاجعله كذلك.

  • ينشر Pusher SavedModels في المواقع المعروفة

أهداف النشر تتلقى نماذج جديدة من مواقع معروفة

  • خدمة TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

عناصر

  • ينشر Pusher النموذج إلى بنية تحتية تخدم.

في محرر:

  • في ~ / airflow / dags ، قم بإلغاء التعليق على الأسطر التي تحمل علامة Step 7 في كل من taxi_pipeline.py
  • توقف لحظة لمراجعة الكود الذي لم تقم بتعليقه

في المستعرض:

  • ارجع إلى صفحة قائمة DAGs في Airflow
  • انقر فوق زر التحديث على الجانب الأيمن لسيارة الأجرة DAG
    • يجب أن تشاهد "DAG [سيارة أجرة] أصبحت الآن طازجة مثل ديزي"
  • تاكسي الزناد
  • انتظر حتى يكتمل خط الأنابيب
    • كل أخضر غامق
    • استخدم التحديث على الجانب الأيمن أو تحديث الصفحة

جاهز للإنتاج

الخطوات التالية

لقد قمت الآن بتدريب النموذج الخاص بك والتحقق منه ، وقمت بتصدير ملف SavedModel ضمن دليل ~/airflow/saved_models/taxi . نموذجك جاهز الآن للإنتاج. يمكنك الآن نشر النموذج الخاص بك على أي من أهداف نشر TensorFlow ، بما في ذلك:

  • خدمة TensorFlow ، لخدمة النموذج الخاص بك على خادم أو مزرعة خوادم ومعالجة طلبات استدلال REST و / أو gRPC.
  • TensorFlow Lite ، لتضمين نموذجك في تطبيق جوال أصلي يعمل بنظام Android أو iOS ، أو في تطبيق Raspberry Pi أو IoT أو متحكم دقيق.
  • TensorFlow.js ، لتشغيل النموذج الخاص بك في متصفح الويب أو تطبيق Node.JS.