הצטרף אלינו ל-DevFest לאוקראינה 14-15 ביוני אונליין הירשם עכשיו

מדריך זרימת אוויר של 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

אם אתה לא צריך פיתון 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

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

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

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

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

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

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

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

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

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

רכיבים

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

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

בעורך:

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

בדפדפן:

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

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

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

מוקדם יותר, אתה רץ jupyter notebook , שנפתח מושב Jupyter בכרטיסייה חדשה בדפדפן. כעת חזור לכרטיסייה זו בדפדפן שלך.

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

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

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

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

לקבלת מידע נוסף על השימוש TFDV לחקור ולאמת במערך, לראות את הדוגמאות על tensorflow.org .

שלב 4: הנדסת תכונות

אתה יכול להגדיל את איכות הניבוי של הנתונים שלך ו/או להפחית את הממדיות עם הנדסת תכונות.

  • צלבי תכונה
  • אוצר מילים
  • הטבעות
  • PCA
  • קידוד קטגורי

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

רכיבים

שינוי צורה

  • Transform הנדסת תכונה מבצעת על בסיס הנתונים.

בעורך:

  • בשינה \ / זרימת אוויר / 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 לניתוח ביצועי המודל

רכיבים

בעורך:

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

בדפדפן:

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

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

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

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

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

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

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

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

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

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

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

רכיבים

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

בעורך:

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

בדפדפן:

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

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

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

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

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

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

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

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

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

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

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

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

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

רכיבים

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

בעורך:

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

בדפדפן:

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

מוכן לייצור

הצעדים הבאים

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

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