מידע על Dataflow ML

אתם יכולים להשתמש ביכולות עיבוד הנתונים של Dataflow ML כדי ליצור צינורות עיבוד לחיזוי ולהסקת מסקנות וגם כדי להכין נתונים לאימון.

דיאגרמה של תהליך העבודה של למידת מכונה ב-Dataflow.

איור 1. תהליך העבודה המלא של למידת מכונה ב-Dataflow.

דרישות ומגבלות

  • ‫Dataflow ML תומך בצינורות עיבוד נתונים באצווה ובסטרימינג.
  • RunInference API נתמך ב-Apache Beam מגרסה 2.40.0 ואילך.
  • MLTransform API נתמך ב-Apache Beam מגרסה 2.53.0 ואילך.
  • יש מטפלים במודלים ל-PyTorch,‏ scikit-learn,‏ TensorFlow,‏ ONNX ו-TensorRT. במקרה של מסגרות שלא נתמכות, אפשר להשתמש ב-handler של מודל מותאם אישית.

הכנת נתונים לאימון

צינורות עיבוד נתונים של חיזוי והסקת מסקנות

‫Dataflow ML משלב את היכולות של Dataflow עם RunInferenceAPI של Apache Beam. באמצעות RunInference API, מגדירים את המאפיינים של המודל ומעבירים את ההגדרה הזו לטרנספורמציה RunInference. התכונה הזו מאפשרת למשתמשים להריץ את המודל בצינורות Dataflow שלהם בלי שהם צריכים לדעת את פרטי ההטמעה של המודל. אתם יכולים לבחור את המסגרת שהכי מתאימה לנתונים שלכם, כמו TensorFlow ו-PyTorch.

הפעלת כמה מודלים בצינור לעיבוד נתונים

משתמשים בטרנספורמציה RunInference כדי להוסיף כמה מודלים של הסקה לצינור Dataflow. מידע נוסף, כולל פרטי קוד, זמין במאמר בנושא צינורות (pipelines) של כמה מודלים במסמכי Apache Beam.

פיתוח צינור עיבוד נתונים בשפות שונות

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

הוראות מפורטות וצינור לדוגמה זמינים במאמר שימוש ב-RunInference מתוך Java SDK.

שימוש ב-GPU עם Dataflow

לצינורות עיבוד נתונים של אצווה או סטרימינג שנדרש בהם שימוש במאיצים, אפשר להריץ צינורות עיבוד נתונים של Dataflow במכשירי GPU של NVIDIA. מידע נוסף זמין במאמר בנושא הפעלת צינור Dataflow עם מעבדי GPU.

פתרון בעיות ב-Dataflow ML

בקטע הזה מפורטות אסטרטגיות לפתרון בעיות וקישורים שיכולים לעזור לכם כשאתם משתמשים ב-Dataflow ML.

הפונקציה Stack מצפה שכל טנזור יהיה בגודל שווה

אם תספקו תמונות בגדלים שונים או הטבעות מילים באורכים שונים כשאתם משתמשים ב-RunInference API, יכול להיות שתופיע השגיאה הבאה:

File "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", line 232, in run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: stack expects each tensor to be equal size, but got [12] at entry 0 and [10] at entry 1 [while running 'PyTorchRunInference/ParDo(_RunInferenceDoFn)']

השגיאה הזו מתרחשת כי אי אפשר להוסיף לרשימת טנסורים ב-API של RunInference רכיבי טנסור בגדלים שונים. פתרונות עקיפים מפורטים במאמר Unable to batch tensor elements (אי אפשר לאגד אלמנטים של טנסור) במסמכי Apache Beam.

איך נמנעים משגיאות שקשורות לזיכרון כשמשתמשים במודלים גדולים

כשאתם טוענים מודל ML בינוני או גדול, יכול להיות שייגמר הזיכרון במחשב. ‫Dataflow מספק כלים שיעזרו לכם להימנע משגיאות של חוסר זיכרון (OOM) כשאתם טוענים מודלים של למידת מכונה (ML). מידע נוסף זמין במאמר בנושא שיטות מומלצות לשינוי RunInference.

המאמרים הבאים