מבוא
מסמך זה יספק הוראות ליצירת TensorFlow המורחב (TFX) צינור באמצעות תבניות אשר מסופקות עם חבילת TFX Python. רוב ההוראות הן פקודות מעטפת לינוקס, וכנגד תאים קוד מחברת Jupyter אשר להפעיל פקודות אלה באמצעות !
מסופקים.
תוכלו לבנות צינור באמצעות מוניות Trips הנתונים שפורסמו על ידי עיריית שיקגו. אנו ממליצים לך בחום לנסות לבנות צינור משלך באמצעות מערך הנתונים שלך על ידי שימוש בצינור זה כבסיס.
אנחנו נבנינו צינור באמצעות Apache Beam Orchestrator . אם אתה מעוניין להשתמש Kubeflow Orchestrator על Google Cloud, ראה TFX על הדרכת צינורות בפלטפורמת ענן AI .
דרישות מוקדמות
- לינוקס / MacOS
- Python >= 3.5.3
אתה יכול לקבל את כל התנאים המוקדמים בקלות על ידי מפעיל מחברת זה ב- Google Colab .
שלב 1. הגדר את הסביבה שלך.
לאורך מסמך זה, נציג פקודות פעמיים. פעם אחת בתור פקודת מעטפת מוכנה להעתיק ולהדביק, פעם אחת כתא מחברת Jupyter. אם אתה משתמש ב-Colab, פשוט דלג על בלוק סקריפט מעטפת והפעל תאי מחברת.
כדאי להכין סביבת פיתוח לבניית צינור.
תקן tfx
חבילת פייתון. אנו ממליצים להשתמש virtualenv
בסביבה המקומית. אתה יכול להשתמש בקטע הסקריפט הבא של מעטפת כדי להגדיר את הסביבה שלך.
# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install -q --user --upgrade tfx==0.23.0
אם אתה משתמש בקולאב:
import sys
!{sys.executable} -m pip install -q --user --upgrade -q tfx==0.23.0
שגיאה: חבילה מסויימת 0.some_version.1 כוללת דרישה חבילה אחרת!=2.0.,<3,>=1.15, אבל תהיה לך חבילה אחרת 2.0.0 שאינה תואמת.
אנא התעלם משגיאות אלה ברגע זה.
# Set `PATH` to include user python binary directory.
HOME=%env HOME
PATH=%env PATH
%env PATH={PATH}:{HOME}/.local/bin
env: PATH=/tmpfs/src/tf_docs_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:/opt/android-studio/current/bin:/usr/local/go/bin:/usr/local/go/packages/bin:/opt/kubernetes/client/bin/:/home/kbuilder/.local/bin:/home/kbuilder/.local/bin
בוא נבדוק את הגרסה של TFX.
python -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
python3 -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
TFX version: 0.23.0
וכן, זה נעשה. אנחנו מוכנים ליצור צינור.
שלב 2. העתק תבנית מוגדרת מראש לספריית הפרויקט שלך.
בשלב זה, ניצור ספריה וקבצים של פרויקט צינור עובד על ידי העתקת קבצים נוספים מתבנית מוגדרת מראש.
אתה יכול לתת צינור שלך בשם אחר על ידי שינוי PIPELINE_NAME
להלן. זה יהפוך גם לשם של ספריית הפרויקט שבה יוכנסו הקבצים שלך.
export PIPELINE_NAME="my_pipeline"
export PROJECT_DIR=~/tfx/${PIPELINE_NAME}
PIPELINE_NAME="my_pipeline"
import os
# Create a project directory under Colab content directory.
PROJECT_DIR=os.path.join(os.sep,"content",PIPELINE_NAME)
TFX כולל את taxi
תבנית עם חבילת python TFX. אם אתה מתכנן לפתור בעיית חיזוי נקודתית, כולל סיווג ורגרסיה, תבנית זו יכולה לשמש כנקודת התחלה.
tfx template copy
עותקים פקודת CLI מוגדרים מראש קבצי התבנית לתוך ספריית הפרויקט שלך.
tfx template copy \
--pipeline_name="${PIPELINE_NAME}" \
--destination_path="${PROJECT_DIR}" \
--model=taxi
!tfx template copy \
--pipeline_name={PIPELINE_NAME} \
--destination_path={PROJECT_DIR} \
--model=taxi
2020-09-07 09:09:40.131982: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Copying taxi pipeline template Traceback (most recent call last): File "/home/kbuilder/.local/bin/tfx", line 8, in <module> sys.exit(cli_group()) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/commands/template.py", line 73, in copy template_handler.copy_template(ctx.flags_dict) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 168, in copy_template replace_dict) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 107, in _copy_and_replace_placeholder_dir tf.io.gfile.makedirs(dst) File "/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 480, in recursive_create_dir_v2 _pywrap_file_io.RecursivelyCreateDir(compat.as_bytes(path)) tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied
שנה את ההקשר של ספריית העבודה במחברת זו לספריית הפרויקט.
cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline' /tmpfs/src/temp/docs/tutorials/tfx
שלב 3. עיין בקבצי המקור שהועתקו.
תבנית TFX מספקת קבצי פיגום בסיסיים לבניית צינור, כולל קוד מקור של Python, נתונים לדוגמה ומחברות Jupyter לניתוח הפלט של הצינור. taxi
התבנית משתמשת במערך הזהה שיקגו מוניות מודל ML כמו הדרכת Airflow .
ב-Google Colab, אתה יכול לעיין בקבצים על ידי לחיצה על סמל תיקיה בצד שמאל. קבצים צריכים להיות מועתקים תחת פרויקט directoy, ששם הוא my_pipeline
במקרה הזה. אתה יכול ללחוץ על שמות ספריות כדי לראות את תוכן הספרייה, וללחוץ פעמיים על שמות קבצים כדי לפתוח אותם.
הנה מבוא קצר לכל אחד מקבצי Python.
-
pipeline
- מדריך זה מכיל את ההגדרה של הצינור-
configs.py
- מגדיר קבוע נפוצות לרצי צינור -
pipeline.py
- מגדיר רכיבי TFX וצנרת
-
-
models
- ספרייה זו מכילה הגדרות מודל ML.-
features.py
,features_test.py
- מגדיר את התכונות של מודל -
preprocessing.py
,preprocessing_test.py
- מגדיר עיבוד מקדים עבודות באמצעותtf::Transform
-
estimator
- ספרייה זו מכילה מודל המבוסס הערכה.-
constants.py
- מגדיר קבוע של המודל -
model.py
,model_test.py
- מגדיר מודל DNN שימוש במעריך TF
-
-
keras
- ספריה זו מכילה מודל המבוסס Keras.-
constants.py
- מגדיר קבוע של המודל -
model.py
,model_test.py
- מגדיר מודל DNN באמצעות Keras
-
-
-
beam_dag_runner.py
,kubeflow_dag_runner.py
- מגדירים הרצים עבור כל מנוע תזמור
ייתכן שתבחין כי יש כמה קבצים עם _test.py
בשמם. אלו הן בדיקות יחידה של הצינור ומומלץ להוסיף בדיקות יחידות נוספות ככל שתטמיעו צינורות משלכם. אתה יכול להריץ בדיקות יחידות על ידי אספקת שם המודול של קבצי בדיקה עם -m
דגל. בדרך כלל אפשר לקבל שם מודול ידי מחיקת .py
רחבה והחלפה /
עם .
. לדוגמה:
python -m models.features_test
{sys.executable} -m models.features_test
{sys.executable} -m models.keras.model_test
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.features_test' (ModuleNotFoundError: No module named 'models') /tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.keras.model_test' (ModuleNotFoundError: No module named 'models')
שלב 4. הפעל את צינור ה-TFX הראשון שלך
אתה יכול ליצור צינור באמצעות pipeline create
פקודה.
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
2020-09-07 09:09:45.612839: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating pipeline Invalid pipeline path: beam_dag_runner.py
לאחר מכן, תוכל להריץ את הצינור נוצר באמצעות run create
פקודה.
tfx run create --engine=beam --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=beam --pipeline_name={PIPELINE_NAME}
2020-09-07 09:09:50.725339: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
אם מוצלח, תראה Component CsvExampleGen is finished.
כאשר אתה מעתיק את התבנית, רק רכיב אחד, CsvExampleGen, כלול בצינור.
שלב 5. הוסף רכיבים לאימות נתונים.
בשלב זה, תוכלו להוסיף רכיבים עבור אימות נתונים כולל StatisticsGen
, SchemaGen
, ו ExampleValidator
. אם אתם מעוניינים אימות נתונים, ראה תחילת העבודה עם אימות נתונים Tensorflow .
אנו לשנות הגדרת צינור להעתקת pipeline/pipeline.py
. אם אתה עובד על הסביבה המקומית שלך, השתמש בעורך המועדף עליך כדי לערוך את הקובץ. אם אתה עובד על Google Colab,
לחץ על סמל התיקייה מצד שמאל כדי לפתוח
Files
נוף.
לחץ
my_pipeline
כדי לפתוח את ספר הטלפונים ולחץpipeline
הספרייה פתוחה ולחץ פעמיים עלpipeline.py
כדי לפתוח את הקובץ.
מצא ההערה 3 קווים אשר להוסיף
StatisticsGen
,SchemaGen
, וExampleValidator
בצנרת. (טיפ: למצוא הערות המכילותTODO(step 5):
).
השינוי שלך יישמר אוטומטית תוך מספר שניות. ודא כי
*
סימן מולpipeline.py
נעלם בכותרת הכרטיסייה. אין כפתור שמירה או קיצור דרך עבור עורך הקבצים ב-Colab. קבצים פיתון עורך הקובץ ניתן לשמור על סביבת זמן הריצה אפילוplayground
במצב.
כעת עליך לעדכן את הצינור הקיים עם הגדרת צינור שונה. השתמש tfx pipeline update
הפקודה כדי לעדכן צינור שלך, ואחריו tfx run create
פקודה ליצור בטווח ביצוע חדש של צינור המעודכן.
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:09:55.915484: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:01.148250: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
אתה אמור להיות מסוגל לראות את יומן הפלט מהרכיבים שנוספו. הצינור שלנו יוצר חפצי תפוקה ב tfx_pipeline_output/my_pipeline
בספרייה.
שלב 6. הוסף רכיבים לאימון.
בשלב זה, תוכלו להוסיף רכיבים לאימונים אימות המודל כולל Transform
, Trainer
, ResolverNode
, Evaluator
, ו Pusher
.
פתיחת
pipeline/pipeline.py
. מצא uncomment 5 קווים אשר להוסיףTransform
,Trainer
,ResolverNode
,Evaluator
וPusher
בצנרת. (טיפ: מצאTODO(step 6):
)
כפי שעשית בעבר, כעת עליך לעדכן את הצינור הקיים עם הגדרת הצינור ששונתה. ההנחיות זהות שלב 5. עדכון בצנרת באמצעות tfx pipeline update
, וליצור בטווח ביצוע באמצעות tfx run create
.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:06.281753: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:11.333668: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
כאשר ריצת ביצוע זו מסתיימת בהצלחה, כעת יצרת והרצת את צינור ה-TFX הראשון שלך באמצעות Beam Orchestrator!
שלב 7. (אופציונאלי) נסה BigQueryExampleGen.
[BigQuery] הוא מחסן נתונים בענן ללא שרת, ניתן להרחבה וחסכוני. BigQuery יכול לשמש כמקור לדוגמאות הדרכה ב-TFX. בשלב זה, נוסיף BigQueryExampleGen
בצנרת.
אתה צריך Google Cloud Platform חשבון לשימוש BigQuery. נא להכין פרויקט GCP.
כניסה לפרויקט באמצעות ספריית auth colab או gcloud
שירות.
# You need `gcloud` tool to login in local shell environment.
gcloud auth login
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
print('Authenticated')
עליך לציין את שם פרויקט ה-GCP שלך כדי לגשת למשאבי BigQuery באמצעות TFX. סט GOOGLE_CLOUD_PROJECT
הסביבה משתנה לשם הפרויקט שלך.
export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
# Set your project name below.
# WARNING! ENTER your project name before running this cell.
%env GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
env: GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
פתיחת
pipeline/pipeline.py
. תגובה החוצהCsvExampleGen
ו uncomment הקו אשר יוצרים מופע שלBigQueryExampleGen
. אתה גם צריך uncommentquery
הטיעון שלcreate_pipeline
פונקציה.
אנחנו צריכים לפרט איזה פרויקט GCP להשתמש עבור BigQuery שוב, והדבר נעשה על ידי הגדרת --project
ב beam_pipeline_args
בעת יצירת צינור.
פתיחת
pipeline/configs.py
. ההגדרה בטל הערה שלBIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS
וBIG_QUERY_QUERY
. עליך להחליף את מזהה הפרויקט ואת ערך האזור בקובץ זה בערכים הנכונים עבור פרויקט ה-GCP שלך.
Open
beam_dag_runner.py
. שני טיעונים בטל הערה,query
ואתbeam_pipeline_args
, עבור create_pipeline () שיטה.
כעת הצינור מוכן להשתמש ב-BigQuery כמקור לדוגמה. עדכן את הצינור וצור ריצה כפי שעשינו בשלב 5 ו-6.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:16.406635: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:21.439101: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
מה הלאה: הכנס את הנתונים שלך לצינור.
יצרנו צינור למודל באמצעות מערך הנתונים של Chicago Taxi. עכשיו הגיע הזמן להכניס את הנתונים שלך לצינור.
ניתן לאחסן את הנתונים שלך בכל מקום שהצינור שלך יכול לגשת אליו, כולל GCS או BigQuery. תצטרך לשנות את הגדרת הצינור כדי לגשת לנתונים שלך.
- אם הנתונים שלך מאוחסן בקבצים, לשנות את
DATA_PATH
בkubeflow_dag_runner.py
אוbeam_dag_runner.py
ולהגדיר אותו למיקום של הקבצים שלך. אם הנתונים שלך מאוחסן BigQuery, לשנותBIG_QUERY_QUERY
בpipeline/configs.py
לשאילתה כראוי עבור הנתונים שלך. - הוספת תכונות
models/features.py
. - שינוי
models/preprocessing.py
כדי להפוך נתונים קלט לאימונים . - שינוי
models/keras/model.py
וmodels/keras/constants.py
כדי לתאר מודל ML שלך .- אתה יכול להשתמש גם במודל מבוסס אומד. שינוי
RUN_FN
מתמידmodels.estimator.model.run_fn
בpipeline/configs.py
.
- אתה יכול להשתמש גם במודל מבוסס אומד. שינוי
אנא ראה מדריך רכיב מאמן עבור הקדמה יותר.