מדריך זרימת אוויר של TFX

פִּיתוֹןPyPI

מבוא

מדריך זה נועד להציג את TensorFlow Extended (TFX) ולעזור לך ללמוד ליצור צינורות למידת מכונה משלך. הוא פועל באופן מקומי, ומציג אינטגרציה עם TFX ו-TensorBoard וכן אינטראקציה עם TFX במחברות של Jupyter.

אתה תעקוב אחר תהליך פיתוח ML טיפוסי, החל בבדיקת מערך הנתונים, ובסופו של דבר עם צינור עבודה שלם. לאורך הדרך תחקור דרכים לנפות באגים ולעדכן את הצינור שלך, ולמדוד ביצועים.

למד עוד

אנא עיין במדריך למשתמש של TFX למידע נוסף.

צעד אחר צעד

אתה תיצור בהדרגה את הצינור שלך על ידי עבודה צעד אחר צעד, בעקבות תהליך פיתוח ML טיפוסי. להלן השלבים:

  1. הגדר את הסביבה שלך
  2. העלה את שלד הצינור הראשוני
  3. צלול לתוך הנתונים שלך
  4. הנדסת תכונות
  5. הַדְרָכָה
  6. ניתוח ביצועי המודל
  7. מוכן לייצור

דרישות מוקדמות

  • לינוקס / MacOS
  • Virtualenv
  • Python 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

אם אתה מפעיל את 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
  • מונית_פתרון DAG

מה אתה עושה

אתה לומד כיצד ליצור צינור ML באמצעות TFX

  • צינורות TFX מתאימים כאשר אתה מתכוון לפרוס יישום ML של ייצור
  • צינורות TFX מתאימים כאשר מערכי נתונים גדולים
  • צינורות TFX מתאימים כאשר יש חשיבות לעקביות אימון/הגשה
  • צינורות TFX מתאימים כאשר ניהול גרסאות להסקה חשוב
  • גוגל משתמשת בצינורות TFX לייצור ML

אתה עוקב אחר תהליך פיתוח ML טיפוסי

  • בליעה, הבנה וניקוי הנתונים שלנו
  • הנדסת תכונות
  • הַדְרָכָה
  • נתח את ביצועי המודל
  • להקציף, לשטוף, לחזור
  • מוכן לייצור

הוספת הקוד לכל שלב

המדריך מתוכנן כך שכל הקוד כלול בקבצים, אך כל הקוד של שלבים 3-7 מסומן בהערות מוטבעות. ההערות המוטבעות מזהות לאיזה שלב שורת הקוד חלה. לדוגמה, הקוד של שלב 3 מסומן בהערה # Step 3 .

הקוד שתוסיף עבור כל שלב בדרך כלל נופל ל-3 אזורים של הקוד:

  • יבוא
  • תצורת DAG
  • הרשימה שהוחזרה מהקריאה create_pipeline()
  • הקוד התומך ב- taxi_utils.py

כשאתה עובר על המדריך, תבטל את ההערות לשורות הקוד החלות על שלב המדריך שאתה עובד עליו כעת. זה יוסיף את הקוד עבור אותו שלב, ויעדכן את הצינור שלך. בזמן שאתה עושה זאת, אנו ממליצים לך מאוד לעיין בקוד שאתה מבטל הערות .

ערכת נתונים של שיקגו מוניות

מוֹנִיתמונית בשיקגו

אתה משתמש במערך הנתונים של Taxi Trips שפורסם על ידי עיריית שיקגו.

תוכל לקרוא עוד על מערך הנתונים ב- Google BigQuery . חקור את מערך הנתונים המלא בממשק המשתמש של BigQuery .

יעד מודל - סיווג בינארי

האם הלקוח טיפ יותר או פחות מ-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 בצינור שלנו, אז אתה צריך להמתין עד שהוא יהפוך לירוק כהה (~1 דקות).

ההגדרה הושלמה

שלב 3: צלול לתוך הנתונים שלך

המשימה הראשונה בכל פרויקט מדעי נתונים או ML היא להבין ולנקות את הנתונים.

  • הבן את סוגי הנתונים עבור כל תכונה
  • חפש חריגות וערכים חסרים
  • הבן את ההפצות עבור כל תכונה

רכיבים

רכיבי נתוניםרכיבי נתונים

  • ExampleGen בולע ומפצל את מערך הנתונים של הקלט.
  • StatisticsGen מחשב נתונים סטטיסטיים עבור מערך הנתונים.
  • SchemaGen SchemaGen בוחנת את הסטטיסטיקה ויוצרת סכימת נתונים.
  • ExampleValidator מחפש חריגות וערכים חסרים במערך הנתונים.

בעורך:

  • ב-~/airflow/dags בטל הערות הקווים המסומנים Step 3 ב- taxi_pipeline.py
  • הקדישו רגע לעיון בקוד שביטלת את ההערות

בדפדפן:

  • חזור לדף רשימת DAGs ב-Airflow על ידי לחיצה על הקישור "DAGs" בפינה השמאלית העליונה
  • לחץ על כפתור הרענון בצד ימין עבור המונית DAG
    • אתה אמור לראות "DAG [מונית] עכשיו טרי כמו חיננית"
  • טריגר מונית
  • המתן לסיום הצינור
    • הכל ירוק כהה
    • השתמש ברענון בצד ימין או ברענון הדף

לצלול לתוך נתונים

חזרה על יופיטר:

קודם לכן, הפעלת את 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 בדפדפן שלך.

  • פתח את step4.ipynb
  • עקוב אחר המחברת

דוגמה מתקדמת יותר

הדוגמה המוצגת כאן נועדה למעשה רק כדי להתחיל. לדוגמא מתקדמת יותר ראה את TensorFlow Transform Colab .

שלב 5: הדרכה

אמן מודל TensorFlow עם הנתונים הנחמדים, הנקיים, שעברו טרנספורמציה.

  • כלול את התמורות משלב 4 כך שיושמו באופן עקבי
  • שמור את התוצאות בתור SavedModel לייצור
  • הדמיין וחקור את תהליך האימון באמצעות TensorBoard
  • שמור גם EvalSavedModel לניתוח ביצועי המודל

רכיבים

בעורך:

  • ב-~/airflow/dags בטל הערות הקווים המסומנים Step 5 גם ב- taxi_pipeline.py וגם ב- taxi_utils.py
  • הקדישו רגע לעיון בקוד שביטלת את ההערות

בדפדפן:

  • חזור לדף רשימת DAGs ב-Airflow
  • לחץ על כפתור הרענון בצד ימין עבור המונית DAG
    • אתה אמור לראות "DAG [מונית] עכשיו טרי כמו חיננית"
  • טריגר מונית
  • המתן לסיום הצינור
    • הכל ירוק כהה
    • השתמש ברענון בצד ימין או ברענון הדף

הכשרת דוגמנית

חזרה על יופיטר:

חזור ללשונית Jupyter בדפדפן שלך.

  • פתח את step5.ipynb
  • עקוב אחר המחברת

הכשרת דוגמנית

דוגמה מתקדמת יותר

הדוגמה המוצגת כאן נועדה למעשה רק כדי להתחיל. לדוגמא מתקדמת יותר ראה את המדריך של TensorBoard .

שלב 6: ניתוח ביצועי המודל

הבנת יותר מסתם המדדים ברמה העליונה.

  • משתמשים חווים ביצועי מודל עבור השאילתות שלהם בלבד
  • ביצועים גרועים בפרוסות נתונים יכולים להיות מוסתרים על ידי מדדים ברמה העליונה
  • הוגנות המודל חשובה
  • לעתים קרובות תת-קבוצות מפתח של משתמשים או נתונים חשובות מאוד, ועשויות להיות קטנות
    • ביצועים בתנאים קריטיים אך יוצאי דופן
    • ביצועים עבור קהלי מפתח כגון משפיענים
  • אם אתה מחליף דגם שנמצא כעת בייצור, תחילה ודא שהחדש טוב יותר
  • מעריך אומר לרכיב ה-Pusher אם הדגם תקין

רכיבים

  • Evaluator מבצע ניתוח מעמיק של תוצאות האימון, ומבטיח שהמודל "טוב מספיק" כדי להידחק לייצור.

בעורך:

  • ב-~/airflow/dags בטל הערות הקווים המסומנים Step 6 בשני taxi_pipeline.py
  • הקדישו רגע לעיון בקוד שביטלת את ההערות

בדפדפן:

  • חזור לדף רשימת DAGs ב-Airflow
  • לחץ על כפתור הרענון בצד ימין עבור המונית DAG
    • אתה אמור לראות "DAG [מונית] עכשיו טרי כמו חיננית"
  • טריגר מונית
  • המתן לסיום הצינור
    • הכל ירוק כהה
    • השתמש ברענון בצד ימין או ברענון הדף

ניתוח ביצועי המודל

חזרה על יופיטר:

חזור ללשונית Jupyter בדפדפן שלך.

  • פתח את step6.ipynb
  • עקוב אחר המחברת

ניתוח ביצועי המודל

דוגמה מתקדמת יותר

הדוגמה המוצגת כאן נועדה למעשה רק כדי להתחיל. לדוגמא מתקדמת יותר, עיין במדריך המוניות של TFMA Chicago .

שלב 7: מוכן לייצור

אם הדגם החדש מוכן, הפוך אותו כך.

  • Pusher פורס את SavedModels למיקומים ידועים

יעדי פריסה מקבלים דגמים חדשים ממקומות ידועים

  • הגשה של TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

רכיבים

  • Pusher פורס את המודל לתשתית שירות.

בעורך:

  • ב-~/airflow/dags בטל הערות הקווים המסומנים Step 7 בשני taxi_pipeline.py
  • הקדישו רגע לעיון בקוד שביטלת את ההערות

בדפדפן:

  • חזור לדף רשימת DAGs ב-Airflow
  • לחץ על כפתור הרענון בצד ימין עבור המונית DAG
    • אתה אמור לראות "DAG [מונית] עכשיו טרי כמו חיננית"
  • טריגר מונית
  • המתן לסיום הצינור
    • הכל ירוק כהה
    • השתמש ברענון בצד ימין או ברענון הדף

מוכן לייצור

הצעדים הבאים

כעת אימנת ואימתת את הדגם שלך, SavedModel קובץ SavedModel תחת ספריית ~/airflow/saved_models/taxi . הדגם שלך מוכן כעת לייצור. כעת תוכל לפרוס את המודל שלך לכל אחד מיעדי הפריסה של TensorFlow, כולל:

  • TensorFlow Serving , להגשת המודל שלך בשרת או חוות שרתים ועיבוד בקשות מסקנות REST ו/או gRPC.
  • TensorFlow Lite , עבור הכללת הדגם שלך באפליקציה סלולרית מקורית של אנדרואיד או iOS, או באפליקציית Raspberry Pi, IoT או מיקרו-בקר.
  • TensorFlow.js , להפעלת הדגם שלך בדפדפן אינטרנט או ביישום Node.JS.