אפאצ'י קרן ו- TFX

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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

פריסה ומדרגיות

ככל שדרישות עומס העבודה גדלות, Beam יכול להתרחב לפריסות גדולות מאוד על פני אשכולות מחשוב גדולים. זה מוגבל רק על ידי המדרגיות של הרץ הבסיסי. רצים בפריסות גדולות ייפרסו בדרך כלל למערכת תזמור קונטיינרים כגון Kubernetes או Apache Mesos עבור אוטומציה של פריסת יישומים, קנה מידה וניהול.

עיין Apache Beam תיעוד לקבלת מידע נוסף על Apache Beam.

עבור משתמשי Google Cloud, dataflow הוא רץ המומלץ, המספקת פלטפורמה ללא שרת וחסכונית באמצעות autoscaling של משאבים, איזון עבודה דינאמית, אינטגרציה עמוקה עם שירותי ענן אחרים של Google, אבטחה מובנים, וניטור.

קוד Python ותלות מותאמים אישית

אחת המורכבות הבולטת של השימוש ב-Beam בצינור TFX היא טיפול בקוד מותאם אישית ו/או התלות הדרושה ממודולי Python נוספים. הנה כמה דוגמאות למקרים שבהם זה עשוי להיות בעיה:

  • preprocessing_fn צריך להתייחס למודול Python של המשתמש עצמו
  • חולץ מותאם אישית עבור רכיב ה-Evaluator
  • מודולים מותאמים אישית אשר מסווגים משנה מרכיב TFX

TFX מסתמך על תמיכה של Beam עבור ניהול תלויות צינור Python לטפל תלות Python. נכון לעכשיו יש שתי דרכים לנהל את זה:

  1. מתן קוד Python ותלות כחבילת מקור
  2. [זרימת נתונים בלבד] שימוש בתמונת מיכל כעובד

אלה נדונים בהמשך.

מתן קוד Python ותלות כחבילת מקור

זה מומלץ למשתמשים ש:

  1. מכירים את אריזות Python ו
  2. השתמש רק בקוד המקור של Python (כלומר, ללא מודולי C או ספריות משותפות).

אנא פעל באחד השבילים ב ניהול תלוי צינור Python לספק זה באמצעות אחת beam_pipeline_args הבא:

  • --setup_file
  • --extra_package
  • --requirements_file

הערה: בכל המקרים הנ"ל, אנא ודא כי באותה גרסה של tfx מופיע בתור תלות.

[זרימת נתונים בלבד] שימוש בתמונת מיכל עבור עובד

יש TFX 0.26.0 ומעלה תמיכה ניסיונית באמצעות תמונת מיכל מנהג לעובדי dataflow.

כדי להשתמש בזה, עליך:

  • לבנות תדמית דוקר שבה יש שני tfx ואת הקוד המותאם אישית של המשתמשים ויחסי תלות שהותקנו מראש.
    • עבור משתמשים אשר (1) שימוש tfx>=0.26 ו- (2) משתמש Python 3.7 לפתח הצינורות שלהם, הדרך הקלה ביותר לעשות זאת היא הארכת הגרסה המקבילה של הפקיד tensorflow/tfx תמונה:
# You can use a build-arg to dynamically pass in the
# version of TFX being used to your Dockerfile.

ARG TFX_VERSION
FROM tensorflow/tfx:${TFX_VERSION}
# COPY your code and dependencies in
  • דחף את התמונה שנבנתה ל-Container Image Registry אשר נגיש על ידי הפרויקט המשמש את Dataflow.
    • משתמשים ב- Google Cloud יכול לשקול שימוש Build ענן אשר ממכן יפה מעל צעדים.
  • ספק הבא beam_pipeline_args :
beam_pipeline_args.extend([
    '--runner=DataflowRunner',
    '--project={project-id}',
    '--worker_harness_container_image={image-ref}',
    '--experiments=use_runner_v2',
])

TODO(b/171733562): הסר את use_runner_v2 ברגע שהוא כברירת מחדל עבור Dataflow.

TODO (b / 179,738,639): צור בתיעוד כיצד מיכל מנהג מבחן מקומי לאחר https://issues.apache.org/jira/browse/BEAM-5440

טיעוני צינור קרן

מספר רכיבי TFX מסתמכים על Beam לעיבוד נתונים מבוזר. הם מוגדרים עם beam_pipeline_args , אשר צוין במהלך במהלך יצירת צינור:

my_pipeline = Pipeline(
    ...,
    beam_pipeline_args=[...])

0.30 TFX ומעל מוסיף ממשק, with_beam_pipeline_args , הארכת ארגומנטים קרן צינור רמת לרכיב:

example_gen = CsvExampleGen(input_base=data_root).with_beam_pipeline_args([...])