close menu

פייטורצ' מול טנזורפלואו 2022 – תמונת מצב עדכנית

האם כדאי להשתמש ב-PyTorch או ב-TensorFlow? זו אולי אחת השאלות הכי נפוצות בקרב קהילת ה-AI, והתשובה רחוקה מלהיות ברורה וחד משמעית.

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


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

שיקולים מעשיים

אמנם כל אחת מהספריות עברה תהליך שונה, אך כיום הדימיון בין הספריות גובר על השוני ביניהן. אמנם בעבר לדבג את TensorFlow היתה משימה מסובכת מאוד ואף לא אפשרית תוך כדי ריצה עקב המבנה הסטטי שלה, היום זה ממש לא המצב. TensorFlow הטמיעה בתוכה את Keras, שאבה דברים חיוביים מ-PyTorch והפכה את חווית המשתמש לנוחה יותר. מן העבר השני, PyTorch עשתה צעדים לקראת TensorFlow והכניסה לתוכה יכולות של deployment ושיפורים נוספים. בפועל הספריות כבר לא רחוקות אחת מן השניה מבחינה קונספטואלית, מה שהופך חלק מההבדלים שהיו בעבר ללא רלוונטיים, ולכן נמקד את הדיון בשלושת הנקודות העיקריות המשפיעות על ההחלטה באיזה ספריה כדאי להשתמש:

  1. זמינות מודלים מאומנים (Pre-trained models): רשתות נוירונים הולכות ונהיות פופולריות יותר ויותר, ויחד עם זאת הן גדלות עוד ועוד (לאחרונה גוגל הכריזה על רשת עם יותר מ-1.6 טריליון פרמטרים – כמעט פי עשרה מ-GPT3). בהתאם לכך, אימון מודלים State-of-the-Art (SOTA) מאפס הוא פשוט לא אפשרי יותר, אפילו לא עבור חברות עתירות משאבים. לשמחתנו, הרבה מודלים SOTA זמינים לציבור ופתוחים לשימוש רחב עבור על מי שמעוניין.
  2. Deployment: פיתוח מודלים מוצלחים הוא חסר חשיבות אם לא ניתן להשתמש בהם. היכולת להטמיע מודלים בצורה נוחה ומהירה במוצרי קצה היא חשובה ביותר, במיוחד לאור העלייה בפופולריות של מוצרים המושתתים על אלגוריתמים לומדים; ליכולת ההטמעה של מודל יש את הפוטנציאל ליצור-או-להרוס הרבה מוצרים מבוססי למידה.
  3. אקןסיסטם: מודלים עבור משימות קצה כבר אינם עומדים בפני עצמם, אלא הם חלק ממערכות גדולות יותר. השימוש המאסיבי במודלים של בינה מלאכותית הופך את הסביבה הגדולה לגורם משמעותי – המצאותם של כלים מותאמים שתומכים בספריות הפיתוח, היכולת ליישם את הקוד במוצר שעובד בזמן אמת, ועוד. כל אלו, יחד עם חומרות ייעודיות עבור רשתות נוירונים המתממשקות לספרית הקוד (כמו למשל Edge TPU של גוגל), הינם גורמים בעליהשפעה לא מבוטלת על היכולת להשתמש בספריה.

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

PyTorch נגד TensorFlow: זמינות מודלים מאומנים

אימון מודלים from scratch היא משימה מאוד מורכבת, ולרוב גם מאוד יקרה בזמן ובמשאבי חישוב. אתגרים מורכבים נעזרים היום ברשתות ענקיות, ומימוש פתרון מ-0 הוא בלתי ישים עבור רוב החברות, כאשר האתגר הוא כפול:

א. דרושים משאבים רבים בשביל לאמן מודלים עם מיליונים ואף מילארדים של פרמטרים.

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

העלות של אימון מודל GPT-3 למשל, בעל 175 מיליארד פרמטרים, הינה 4.6 מיליון דולר, ומשך האימון של כזה מודל הינו 355 שנה על GPU יחיד!. לרוב החברות והחוקרים אין את המשאבים החישוביים כדי לבצע זאת בעצמם, לכן גישה למודלים שאומנו מראש עליהם ניתן לבצע transfer learning או fine tuning, הוא יקר ערך.

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

  • HuggingFace

ספריית HuggingFace, שהולכת וצוברת תאוצה בתקופה האחרונה, מאפשרת לשלב מודלים SOTA מאומנים בתוך מערכות מורכבות בעזרת שורות קוד בודדות.

כאשר משווים בין המודלים של HuggingFace הזמינים לכל אחת מהספריות, העובדות הן לא פחות ממדהימות. להלן אנו רואים גרף של המספר הכולל של המודלים הזמינים ב-HuggingFace, כאשר הם מחולקים לאחת משלוש קטגוריות – מתאימים רק ל-PyTorch, מתאימים רק ל-TensorFlow, או מתאימים לשתי הספריות.

https://www.assemblyai.com/blog/content/images/2021/12/Number-of-Models-on-HuggingFace.png

Number of Models on HuggingFace

כפי שניתן לראות, התחרות בין הספריות כלל אינה מתחילה. מספר המודלים הזמינים לשימוש עבור PyTorch גבוה בצורה משמעותית מאלו הזמינים ל-TensorFlow: כמעט 85% מהמודלים זמינים רק לPyTorch, כאשר יתר המודלים מתחלקים כמעט באופן שווה בין שתי הקטוגריות הנוספות. נמצא אם כן שבעוד שעם PyTorch ניתן להשתמש ביותר מ-90% מהמודלים, עם TensorFlow ניתן לעשות זאת עם כ-15% בלבד.

הדבר בולט עוד יותר כאשר מתבוננים ב-30 המודלים הפופולריים ביותר ב-HuggingFace. בעוד שכולם זמינים למשתמשי PyTorch, פחות משני שליש זמינים עבור TensorFlow,כאשר אין אף לא מודל אחד שזמין ל-TensorFlow בלבד.

Number-of-Top-30-Models-on-HuggingFace

Number of Top 30 Models on HuggingFace

  • מאמרים אקדמיים

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

הסטגימה הרווחת לפיה PyTorch היא ספרייה שיותר נוחה ומותאמת למחקר. נתבונן על נתונים עדכניים המתבססים על שמונת הכנסים הגדולים בתחום של AI ונבדוק אם הסטיגמה נכונה (אפילו יש ממשק אינטראקטיבי שמתעדכן כל הזמן):

Fraction of papers using PT vs TF

Fraction of papers using PyTorch vs. TensorFlow

כפי שניתן לראות, הגידול בשימוש ב-PyTorch הוא מהיר מאוד, לעומת דעיכה בשימוש ב-TensorFlow (הגרף הימני). אם מסתכלים רק על המאמרים שהשתמשו ב-TensorFlow או ב-PyTorch – לפני 5 שנים רק 7% השתמשו ב-PyTorch ואילו היום כמעט 80% עושים זאת (הגרף השמאלי). מה הסיבה לכך? כנראה הקשיים לבצע מחקר עם TensorFlow 1 הובילו את החוקרים לחפש אלטרנטיבה אחרת – PyTorch. בעוד שרוב הבעיות של TensorFlow טופלו (עם השחרור של TensorFlow 2 ב-2019), המומנטום של PyTorch היה כבר מספיק חזק כדי לבסס את עצמה כספריית המחקר המרכזית.

מגמה דומה עולה גם אם מתבוננים על התזוזות של החוקרים עצמם בין הספריות. אם נשווה בין החוקרים שפרסמו מאמרים גם ב-2018 וגם ב-2019 ונסתכל על הספריות בהן הם השתמשו, נראה נדידה גדולה יחסית של חוקרים שכבר התנסו ב-TensorFlow ובחרו לעבור ל-PyTorch. מגמה הפוכה כמעט ולא קיימת – 85% מהחוקרים שהשתמשו ב-PyTorch ב-2018, נשארו איתה גם ב-2019.

fraction of researchers who migrated frameworks

Fraction of researchers who migrated frameworks

אמנם הנתונים מתבססים על התקופה טרום השחרור של TensorFlow 2, אולם כפי שנראה בהמשך, עובדה זו לא ממש השפיעה על קהילת המחקר.

  • Papers with Code

לבסוף, נסתכל על נתונים מתוך Papers with Code – אתר שמאגד משאבים חינמיים בתחום של AI – דאטהסטים, קודים ומודלים. נסתכל על גרף שהאתר עצמו מספק, המראה את השימוש ב-Frameworks השונים בחמש שנים האחרונות.

Paper Implementations grouped by framework

Paper Implementations grouped by framework

כאמור, הגרף את אחוז המאמרים שמשתמשים בספריות השונות,כאשר הנתונים מתעדכנים בכל רבעון, מסוף 2017 ועד היום. ניתן לראות עלייה ברורה של מאמרים שמשתמשים ב-PyTorch, ובמספרים – מתוך 4500 רפוזיטורים שנוצרו ברבעון האחרון, 60% מבוסיים על PyTorch, ואילו רק 11% על TensorFlow.

נתונים אלו מתחברים למסקנה מהטע הקודם המצביעה על דעיכה בשימוש ב-TensorFlow למטרות מחקר. גם השחרור של TensorFlow 2 ב-2019, שפתר את מרבית הקשיים לבצע מחקר שהיו ב-TensorFlow 1, לא היה מספיק כדי לעצור את המגמה.

  • זמינות מודלים מאומנים – סיכום

ברור מהנתונים לעיל ש-PyTorch שולטת, ובפער גדול, בכמות המודלים הזמינים ובפרוייקטים מחקריים. גם שחרור TensorFlow 2, שהפך את הספריה לפשוטה יותר עבור צרכים מחקריים, לא הספיק, כיוון שהנוחות של PyTorch לא נתנה למשתמשים סיבה לחזור לסיבוב נוסף של שימוש ב-TensorFlow. בנוסף, גם אלו שכבר התנסו עם TensorFlow 1 וניסו להשתמש בגרסה החדשה נתקלו בבעיות תאימות לאחור בין הגרסאות, מה שרק החמיר את הבעיה. אם כן, PyTorch הוא בבירור המנצח בתחום של זמינות מודלים ושימוש במחקר, והוא אכן אומץ על ידי מרבית הקהילה שמתעסקת במחקר, ורוב הפרסומים והמודלים הזמינים מבוססים על PyTorch. עם זאת, ישנם כמה יוצאים מן הכלל:

  • Google AI: דבר טבעי שהחוקרים של גוגל, המפתחת של TensorFlow, ישתמשו בספריה זו הן למחקר והן לפיתוח. כמות המחקרים הגבוהה מבית היוצר של גוגל בכל זאת יכולה להביא חוקרים להתעניין (גם) ב-TensorFlow.
  • DeepMind: חברת DeepMind, שגם לה פעילות לא מבוטלת בתחום המחקר, הפכה ב-2016 את TensorFlow לספרית ה"תקן" שלה. אמנם ב-2020 החברה הכריזה שהיא מאמצת את השימוש ב-JAX כדי להאיץ את המחקרים שלהם, אך החברה עדיין משתמשת גם ב-TensorFlow, ואף יצרה לה high-level API בשם Sonnet. נפח הפעילות של החברה (שאמנם קטן יותר מגוגל מבחינת כמות פרסומים אך גדול מזה של פייסבוק, היוצרת של PyTorch), עדיין משאיר עניין בשימוש ב-TensorFlow.
  • OpenAI: לעומת DeepMind, חברת OpenAI דווקא בחרה ב-202 לאמץ את PyTorch. אולם בחירה זו אינו טוטאלית – רוב הפרוייקטים בתחום של למידה מבוססת חיזוקים (Reinforcement Learning) מיושמים ב-TensorFlow. לכן דווקא לאלו המתעסקים בתחום מחקר זה, יתכן שהבחירה ב-TensorFlow יכולה להיות עדיפה.
  • JAX: לגוגל יש ספרייה נוספת שנקראת JAX, והיא צוברת פופולריות בקהילה המחקרית. הקונספט של הספריה שונה מזה של PyTorch ו-מTensorFlow, ולכן לרוב החוקרים לא בטוח שהמעבר ל-JAX כדאי. אמנם יש מספר הולך וגדל של מודלים ומאמרים מבוססי JAX, אבל כרגע עדיין לא ברור עד כמה הספריה תהייה נפוצה בקהילה המחקרית בשנים הבאות ביחס לשתי הגדולות.

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

PyTorch נגד TensorFlow: יכולת הטמעה במוצרים – Deployment

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

למעשה, כבר מאז שחרורה של TensorFlow היא מיצבה את עצמה כברירת המחדל עבור deployment, ויש לך סיבה טובה. ל-TensorFlow יש הרבה כלים שהופכים את כל התהליך מקצה לקצה של פיתוח מודל והטמעתו במוצר ליותר קל ויעיל. TensorFlow Serving ו-TensorFlow Lite מאפשרים להטמיע שימוש במודלים במגוון רחב של מוצרים ללא שום קושי – ענן, שרתים, מכשירים ניידים ומכשירי IoT.

PyTorch לעומת זאת היתה הרחק מאחור ביכולות ה-deployment שלה, אך עם השנים היא שחררה מוצרים בכדי לגשר על כך. ההשקה של TorchServe בשנה שעברה ו-PyTorch Live לפני כחודשיים, הביאו יכולות deployment משמעותיות, אך האם זה מספיק בשביל לנתמודד עם TensorFlow באופן מסחרי? בואו נסתכל יחד.

TensorFlow

כחלק מהפילוסופיה של TensorFlow, היא מאפשרת ייצור של גרפים סטטיים (בעבר זו היתה האופציה היחידה, אך ב-TensorFlow 2 זה כבר לא כך). מבנה זה אמנם מייצר קשיים מסוימים, כמו דיבאג למשל, אך יש לו יתרונות לא מבוטלים – לא צריך ליצור את הגרף בכל איטרציה מחדש, מה שמייעל מאוד את כל המערכת. הקונספט הזה של מודל סטטי אופטימלי גם ל-inference, מה שנותן לו יתרון בשימוש במכשירי קצה. כאשר רוצים לבצע deployment למודל של TensorFlow, ניתן להשתמש ב-TensorFlow Serving או ב-TensorFlow Lite, כתלות בצרכים השונים.

  • TensorFlow Serving:

TensorFlow Serving הינו API של TensorFlow להטמעת מודלים על גבי שרתים (פנימיים או בענן), והוא חלק מ-TensorFlow Extended (TFX), פלטפורמת למידת מכונה End-to-End. השימוש ב-Serving מאפשר בקלות להטמיע מספר מודלים תחת תגיות שונות באותו מוצר, ובהתאמה להשתמש במודל המתאים בזמן inference, תוך שמירה על יציבות ארכיטקטורת השרת וה-API. ככלל, האינטגרציה של Serving עם כלים אחרים, כמו למשל: Google Cloud (דרך Vertex AI), Kubernetes ו-Docker., היא פשוטה ויעילה.

  • TensorFlow Lite:

עבור מכשירים דלי משאבים, כמו למשל פלאפונים ניידים, וכן עבור מוצרי IoT, ניתן להשתמש ב-TensorFlow Lite (TFLite). ספריה זו דוחסת ומייעלת מודלים עבור מכשירים אלו, ומתמודדת עם 5 מגבלות של מכשירים מבוססי בינה מלאכותית –  latencyconnectivityprivacy, size, and power. השימוש ב-TFLite זהה לשימוש ב-Serving (דרך Keras), מה שמאפשר להשוות בין הביצועים של המודל המקורי ב-Serving והמודל הדחוס ב-TFLite. בנוסף, TFLite ניתן לשימוש גם באנדרואיד וב-iOS, וכן במיקרו-קונטרולרים (למשל – ARM עם Bazel או CMake) ומעבדי לינוקס (למשל – Coral). הAPI-ים של TensorFlow עבור פייתון, ג'אווה, C++, ג'אווה סקריפט ו-Swift, מאפשרים למפתחים להשתמש במגוון שפות עבור הטמעת המודלים.

PyTorch

בשנים הראשונות PyTorch היתה כמעט חסרת ערך עבור deployment, אך בזמן האחרונה היא השקיעה הרבה בשביל להפוך לרלוונטית גם בתחום זה. לפני כן, משתמשי PyTorch היו צריכים להשתמש בFlask או Django כדי לבנות REST API מעל המודל, אולם מאז השחרור של TorchServe ו-PyTorch Live, כבר לא צריך להשתמש בספריות חיצוניות בשביל לבצע deployment.

  • TorchServe:

TorchServe היא ספריית קוד-פתוח למטרות deployment שנוצרה משיתוף פעולה בין אמאזון לבין פייסבוק (הבעלים של PyTorch), ופורסמה ב-2020. אמנם היא תומכת במגוון אפשרויות פיתוח, אך היא (עדיין) איננה מתחרה שווה לאלטרנטיבה ב-TensorFlow.

  • PyTorch Live:

PyTorch פרסמו את PyTorch Mobile ב-2019, כך שבדומה ל-TFLite, יהיה ניתן לבצע את כל התהליך ב-PyTorch החל מפיתוח המודל ועד הטמעתו במוצר עבור מכשירי אנדרואיד, iOS ולינוקס.

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

Deployment – מילות סיכום

בנקודת זמן הנוכחית, אין עוררין על כך שספריית TensorFlow עדיפה בתחום זה. Serving ו-TFLite יותר ותיקים ויציבים מאשר המקבילות שלהן ב-PyTorch, והאפשרות להשתמש ב-TFLite יחד עם מכשירים מבוססי Google Coral, הופך אותה להכרחית במקרים רבים. לעומתם, PyTorch Live מוכוון רק למכשירים ניידים, ו-TorchServe עדיין טרי מהתנור, והם כרגע לא ממש משתווים ליכולות של TensorFlow. כיוון ש-PyTorch עושה מאמצים רבים לשדרג את עצמה בתחום זה, קשה לדעת איך יתפתח תחום זה בשנים הבאות, אבל לעת עתה אין ספק של-TensorFlow יש יתרון גדול.

הערה חשובה: עבור אלו שרוצים לפתח מודלים ב-PyTorch ולהשתמש ביכולות ה-deployment של TensorFlow – יש אפשרות לבצע המרה בין הספריות באמצעות ONNX (כדי להעביר את המודלים מPyTorch ל-TensorFlow), אך זה לא תמיד עובד חלק ויכול להוביל לבעיות.

 

PyTorch נגד TensorFlow: אקוסיסטם

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

PyTorch

  • Hub:

בנוסף לפלטפורמות כמו HuggingFace שראינו לעיל, יש את PyTorch Hub – פלטפורמה מוכוונת מחקר לשיתוף מאגרים עם מודלים מאומנים שניתן לטעון אותם ולבצע fine tuning. המודלים הקיימים מוכוונים עבור דומיינים שונים – speech, vision, NLP ועוד. בנוסף, יש בחבילה גם מודלים גנרטיביים (generative models), כולל GAN-ים ליצירת תמונות, סרטונים, קבצי שמע ועוד באיכות גבוהה. במדריך הזה למשל, ניתן לראות כיצד ניתן בכמה שורות לטעון מודל ולקבל פרצופים של סלבריטאים, שיוצרו על ידי GAN:

pgan

 

  • PyTorch-XLA:

עבור אימון מודלים שרצים על Cloud TPUs של גוגל, הכלי PyTorch-XLA יכול לבצע את האינטגרציה בין PyTorch לבין ה-TPU בצורה פשוטה ונוחה. PyTorch-XLA היא בעצם חבילת פייתון, שמחברת PyTorch ו-TPU לבין קומפיילר דיפ לרנינג XLA.

  • TorchVision:

TorchVision היא ספריית ה-Computer Vision הרשמית של PyTorch. היא כוללת בערך את כל מה שצריך עבור פרוייקטים של Computer, כולל ארכיטקטורות עדכניות, מודלים מאומנים ו-datasets פופולריים. יש עוד ספריות עבור vision שאינן רשמיות של הספריה אך בנויות עליה, כמו למשל TIMM (PyTorch Image Models). לאחרונה deepcheck הישראלית פרסמה גם היא ספריה מוכוונת vision מבוססת PyTorch.

  • TorchText:

עבור עיבוד שפה טבעית (NLP), יש את הספריה הרשמית של PyTorch בתחום – TorchText. ספריה זו מכילה datasets פופולריים עבור מגוון משימות שפה, וכן מודלים מאומנים וארכיטקטורות עדכניות. גם כאן יש כמובן ספריות נוספות מבוססות PyTorch אך אינן רשמיות של הספריה, כמו למשל fairseq, המאפשרת ביצוע משימות כמו תרגום וסיכום מסמכים עבור טקסט של המשתמש. עוד בתחום ה-NLP – מכון המחקר Allen Institute for AI בנה ספריה בשם AllenNLP, ויש לה מגוון רחב של יכולות.

  • TorchAudio:

עבור קבצי שמע, PyTorch מספקת את החבילה הרשמית TorchAudio. חבילה זו, כמו החבילות ב-vision ו-NLP, כוללת את המודלים פופולריים בתחום, כדוגמתDeepSpeech ו-Wav2Vec, ובנוסף מספקת מדריכים מפורטים כיצד להתממשק לתוכנות נוספות. בתחום הספריות הלא רשמיות שמבוססות PyTorch ניתן למצוא את SpeechBrain, ויש גם APIs שלא דורשים הורדה אלא משולבים כ-plug-and-play, כמו שמפורט בלינק הזה. ישנם גם כלים לפיתוח End-to-End, כדוגמת ESPnet, התומכים במגוון של משימות הקשורות בדיבור ושמע.

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

TensorFlow

  • Hub:

TensorFlow Hub הוא מאגר של מודלים מאומנים שניתן לבצע עליהם fine-tune למשימות ספציפיות באמצעות מספר שורות קוד בלבד, בדומה ל-Hub של PyTorch. המודלים הזמינים מתאימים גם לחבילות של הספריה עצמה, כמו למשל TensorFlow Lite ו-TensorFlow.js. אם המודלים שבחבילה אינם מספיקים, או שרוצים לנסות להכנס לתוך המודלים עצמם ולהבין איך הם עובדים ואף לבצע בהם שינויים, ניתן להשתמש ב-Model Garden. חבילה זו מספקת מודלים מאומנים ומאפשרת לערוך אותם בצורה נוחה, ואף ישנם מדריכים למודלים רשמיים של גוגל, מודלים מתוך עולם המחקר ומודלים שמשתמשי הקהילה יצרו. TensorFlow מעוניינת להנגיש מודלים מאומנים של Model Garden ב-Hub, ושמודלים השמורים ב-Hub יהיו זמינים גם ב-Model Garden.

  • TensorFlow Extended (TFX):

TensorFlow Extended היא פלטפורמת ה-End-to-End הרשמית של TensorFlow עבור Deployment. היא מאפשרת לטעון ולהריץ נתונים, ואף לבצע עליהם שינויים ובדיקות ולידציה, וכמובן לאמן גם מודלים. בנוסף, כפי שציינו בפרק הקודם, ניתן לבצע Deployment למודלים באמצעות Serving או Lite. השימוש ב-TFX יכול להתבצע גם דרך Jupyter או Colab, ובנוסף ניתן להשתמש ב-Apache Airflow/Beam או Kubernetes. האינטגרציה של TFX יחד Google Cloud טובה מאוד ונוחה, וניתן לשלב גם שימוש ב-Vertex AI Pipelines. פלטפורמת Vertex, ששוחררה השנה, היא פלטפורמת ה-ML הרשמית עבור Google Cloud, וניתן בעזרתה לבצע אוטומציה, לפקח ולנהל מודלים מבוססי AI ללא שרת.

  • Coral:

אמנם יש הרבה חברות שמבססות את פתרונות הבינה המלאכותית שלהן על גבי הענן, אך יש צורך שהולך וגובר בתעשיה בפתרונות שאינן מבוססי ענן. Google Coral נועדה בדיוק בשביל צורך זה, והיא מספקת ערכת כלים שלמה לשילוב פתרונות AI על גבי מכשירים ללא גישה לענן. Coral מציעה מערך של מוצרי חומרה הנועדים לבניית דגמים (prototypes), ייצור תעשייתי וסנסורים, שחלקם הם למעשה Raspberry Pis חזקים יותר, שנוצרו במיוחד עבור יישומי בינה מלאכותית. מוצרים אלהמשתמשים ב-Edge TPU של גוגל עבור שיפור הביצועים (=inference מהיר יותר הצורך פחות סוללה) במכשירים דלי הספק. Coral מציעה גם מודלים מקומפלים עבור מגוון משימות, כגון סיהוי אובייקטים, סגמנטציה, זיהוי דיבור ועוד, בכדי לסייע למפתחים המעוניינים ליצור מערכות מבוססות AIמשלהם. ניתן לראות את השלבים החיוניים ליצירת מודל בתרשים הזרימה הבא:

Coral

  • TensorFlow.js:

TensorFlow.js היא ספריית JavaScript עבור Machine Learning המאפשרת לאמן ולהטמיע מודלים הן בדפדפן והן בצד השרת עם Node.js. הספריה מספקת גם תיעוד עשיר יחד עם דוגמאות מפורטות ומידע על איך לייבא מודלים מאומנים מראש, ואפילו הדגמות דמו יחד עם קטעי קוד מצורפים.

  • Cloud:

TensorFlow Cloud היא ספרייה המאפשרת לחבר את הסביבה הלוקאלית של המפתח ל-Google Cloud. ה-APIs מסייעים לגשר על התהליך של בניית המודל ואיתור באגים בסביבת הפיתוח, לבין אימון וחיפוש היפר-פרמטרים ב-Google Cloud, ללא צורך להשתמש ב-Cloud Console.

  • Colab:

Google Colab המוכרת הינה סביבה מבוססת ענן, דומה מאוד ל-Jupyter. קל מאוד לחבר את Colab ל-Google Cloud ולאמן מודלים על GPU או TPU. עם הזמן התווספה גם תמיכה של PyTorch עבור Colab, ככה שבמובן הזה אין הבדל בין הספריות.

  • Datasets:

Google Research’s Datasets הינו מסד נתונים של גוגל, המכיל המון datasets, ומעודכן כל הזמן על ידי גוגל עצמה. בנוסף לנתונים עצמם, יש גם מנוע חיפוש – Dataset Search המאפשר לבצע חיפוש נח במאגר ה-datasets. בדומה ל-Colab, גם מפתחי PyTorch יכולים להשתמש בממשק זה.

Ecosystems – מילות סיום

בניגוד לפרקים הקודמים – זמינות מודלים ו-Deployment – בהם היה הבדל ברור לטובת אחת מהספריות, כאן הפער הרבה יותר קטן. עם זאת, עדיין יש בסופו של דבר יתרון קטן ל-TensorFlow, בעיקר בזכות ההשקעה הרבה של גוגל לדאוג לכך שיהיה מוצר זמין ב-TensorFlow לפיתוח End-to-End עבור כל דומיין. האינטגרציה הצמודה עם Google Cloud יחד עם TFX הופכים את תהליך הפיתוח ליעיל ונח, והקלות של העברת מודלים למכשירי Google Coral מעניקה יתרון משמועתי ל-TensorFlow עבור חלק מהתעשיות.

אז – באיזו ספריה להשתמש?

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

תעשייה

כפי שראינו לעיל, עבור צרכים תעשייתיים, TensorFlow עדיין עדיפה למרות החידושים של PyTorch. יכולות ה-Deployment של TensorFlow ופלטפורמת TensorFlow Extended לצורך פיתוח והטמעה מקצה לקצה שווים הרבה עבור מי שמתעסק עם product. מן העבר השני, המהדורה האחרונה של TorchServe יכולה לספק את צרכי המוצר ואף להיות עדיפה במקרים בהם יש שימוש במודלים SOTA הזמינים רק ב-PyTorch. לחילופין, במקרה זה ניתן ליצור את המודל ב-PyTorch ואז להמיר באמצעות ONNX ל-TensorFlow ולהשתמש בכלים היעודיים שלו. גם עבור מכשירים ניידים ניתן לשקול שימוש ב-PyTorch, הודות ל-PyTorch Live, אך עבור משימות הכוללות אודיו או וידאו זה אינו מספיק ועדיף להשתמש ב-TensorFlow. בחירה דומה כדאי לעשות גם עבור מוצרי IoT המשתמשים בבינה מלאכותית, בזכות השילוב של TFLite יחד עם Coral.

בשורה התחתונה: אם אתה צריך לבחור ספריה אחת, TensorFlow היא הבחירה המתאימה עבורך.

PT_TF_ind

Industry

מחקר

הגרפים שהצגנו בחלק הראשון מדברים בעד עצמם – רוב המחקר נעשה בעזרת PyTorch וכך גם רוב המודלים הזמינים. אמנם יש מחקר שמבתצע ב-TensorFlow (בעיקר על ידי חוקרי גוגל), אך הבחירה הטבעית היא לגמרי PyTorch. עם זאת, ישנם כמה חריגים בולטים לכלל זה, והבולט שבהם הוא התחום של למידה מבוססת חיזוקים (RL). ל-TensorFlow יש ספריית Agents מקורית ל-Reinforcement Learning, ובנוסף ספריית RL של DeepMind (שנקאת acme) ממומשת ב-TensorFlow, וכך גם מאגר מודלי Baselines של OpenAI. מי שבכל זאת רוצה להשתמש ב-PyTorch גם עבור RL, יכול להתבסס עם gym של OpenAI, שיכולה להתממשק עם שתי הספריות. עם TensorFlow או PyTorch. בזמן האחרון הפופולריות של JAX של גוגל עולה, אך ספריה זו שונה במתודה שלה והיא דומה הרבה יותר ל-NumPy. על גבי JAX יש את Haiku של DeepMind, וגם היא מתחילה לקבל הד.

בשורה התחתונה: אם אתה צריך לבחור מסגרת אחת, בחר PyTorch, אך שווה גם לעקוב אחרי ההתפתחות של JAX.

PT_TF_research

Research

שינוי בקריירה

תחום מעניין שכדאי להסתכל עליו הוא שוק העבודה. מפתח שמעוניין להכנס לתחום של AI ורוצה לחפש עבודה ב-deep learning ימצא עניין בגרף הבא, המנתח הצעות עבודה בכל ארצות הברית אתרים כמו LinkedIn ו-ZipRecruiter:PT_TF_jobs

כמובן שגרף זה מושפע מהיתרון שיש ל-TensorFlow עבור צרכים תעשיתיים.

תחביב/צעד ראשון:

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

PT_TF_hobby

 

מילות סיום

כפי שנוכחנו לראות, הוויכוח PyTorch vs TensorFlow הוא דיון שמשתנה כל הזמן, וחשוב להסתכל על המצב העדכני של הספריות בכדי שנוכל להשוות ביניהן באופן הוגן. בעוד שבעבר היו הבדלים טכניים רבים בין הספריות, היום זה כבר לא המצב – שתי הספריות כבר "בוגרות" ובשלות, מוקפות בהמון חבילות משלימות, בעלות תיעוד רחב ומספר משתמשים גדול. יתכן והמסקנה הכי ברורה היא שבאמת אין מנצחת חד משמעית וכל אחת מהבחירות היא טובה. אמנם PyTorch מיצבה את עצמה כספריית מחקר ו-TensorFlow עדיין שולטת בתעשייה, אך זה לא גורף לגמרי וישנם מקרים בהם המצבים הפוכים. אני מקווה שהכתבה סייעה לכם להתמצא יותר טוב בתווך שבין הספריות, ושבעזרתה תוכלו לבצע את הבחירה הנכונה עבורכם כאשר תרצו לבחור ספרית פיתוח עבור פרוייקט ה-AI שלכם!


הפוסט נכתב על ידי אברהם רביב, והוא מבוסס על הבלוג של Ryan O'Connor.

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

עוד בנושא: