MindSpore של Huawei: מתחרה חדש על TensorFlow ו- PyTorch?

תוכן עניינים:

MindSpore של Huawei: מתחרה חדש על TensorFlow ו- PyTorch?
MindSpore של Huawei: מתחרה חדש על TensorFlow ו- PyTorch?

וִידֵאוֹ: MindSpore של Huawei: מתחרה חדש על TensorFlow ו- PyTorch?

וִידֵאוֹ: MindSpore של Huawei: מתחרה חדש על TensorFlow ו- PyTorch?
וִידֵאוֹ: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, מאי
Anonim

Huawei הודיעה כי תוכנת הביניים של MindSpore Deep Learning של TensorFlow ו- PyTorch היא כעת קוד פתוח. גלה במאמר זה את המאפיינים החשובים ביותר שלו.

MindSpore של Huawei
MindSpore של Huawei

Huawei הודיעה זה עתה כי מסגרת ה- MindSpore שלה לפיתוח יישומי AI הופכת להיות קוד פתוח וזמינה ב- GiHub וב- Gitee. MindSpore היא מסגרת למידה עמוקה נוספת להכשרת מודלים של רשת עצבית, בדומה ל- TensorFlow או PyTorch, המיועדת לשימוש מקצה ועד ענן, התומכת בשני GPUs וכמובן במעבדי Huawei Ascend.

באוגוסט האחרון, כאשר הודיעה Huawei על ההשקה הרשמית של מעבד ה- Ascend שלה, הוצגה לראשונה MindSpore, וקבעה כי בפגישת אימון אופיינית מבוססת ResNet-50, השילוב של Ascend 910 ו- MindSpore מהיר בערך כפול. כאשר מאמנים מודלים של AI לעומת כרטיסי למידה גדולים אחרים המשתמשים ב- TensorFlow נכון כי בשנים האחרונות צצו מסגרות רבות, ואולי MindSpore היא לא יותר מקבוצה אחת שיכולה אפילו להתחרות מרחוק עם TensorFlow (מגובה על ידי Google) ו- PyTorch (הנתמכת על ידי פייסבוק).

ארכיטקטורת מערכת

אתר MindSpore מתאר כי התשתית מורכבת משלוש שכבות עיקריות: ביטוי חזית, מנוע גרפי וזמן ריצה אחורי. האיור הבא מציג תרשים חזותי:

תמונה
תמונה

הרמה הראשונה של MindSpore מציעה API של Python למתכנתים. מכיוון שבלשנות שפה בקהילה שלנו היא פייתון בפועל, אחרת MindSpore רוצה להתחרות עם PyTorch ו- TensorFlow. באמצעות ממשק API זה, מתכנתים יכולים לתפעל מודלים (הדרכה, הסקה וכו ') ולעבד נתונים. רמה ראשונה זו כוללת גם תמיכה בייצוג ביניים קוד (MindSpore IR), שעליו יתבססו אופטימיזציות רבות שניתן לבצע במקביל ובידול אוטומטי (GHLO).

להלן שכבת הגרף מנוע המספקת את הפונקציונליות הנחוצה ליצירה ולביצוע בידול אוטומטי של גרף הביצוע. עם MindSpore הם בחרו במודל בידול אוטומטי שאינו PyTorch (שיוצר גרף ביצוע דינמי) או TensorFlow (למרות שבמקור נבחרה האפשרות ליצור לוח זמנים יעיל יותר של ביצוע סטטי, הוא מציע כעת גם אפשרות גרף ביצוע דינמי ומאפשר גרסה סטטית של הגרף באמצעות הקישוט @ tf.function של ה- API ברמה נמוכה שלו).

הבחירה של MindSpore היא להמיר את קוד המקור לפורמט קוד ביניים (MindSpore IR) כדי לנצל את שני הדגמים (למידע נוסף ראו בסעיף "הפרדה אוטומטית" באתר MindSpore).

השכבה הסופית מורכבת מכל הספריות וסביבות זמן הריצה הדרושות לתמיכה בארכיטקטורות החומרה השונות בהן יעובד הקוד. סביר להניח שזה יהיה backend דומה מאוד למסגרות אחרות, אולי עם תכונות של Huawei, כמו ספריות כמו HCCL (Huawei Collective Communication Library), המקבילה ל- NVIDIA NCCL (NVIDIA Collective Communication Library).

תמיכה בהדמיית אימונים

על פי מדריך MindSpore, למרות שאי אפשר היה להתקין ולהשתמש בהם, יש להם MindInsight ליצור ויזואליזציות שמזכירות מעט את TensorBoard, TensorFlow. התבונן בכמה צילומי מסך שהם מציגים באתר האינטרנט שלהם:

תמונה
תמונה
תמונה
תמונה

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

מַקבִּילוּת

במדריך שלהם הם מדברים על שני מצבי הקבלה (DATA_PARALLEL ו- AUTO_PARALLEL) ומספקים קוד לדוגמא שמאמן את ResNet-50 עם מערך CIFAR עבור מעבד Ascend 910 (שלא הצלחתי לבדוק). DATA_PARALLEL מתייחס לאסטרטגיה הידועה בכינויו מקביליות נתונים, הכוללת חלוקת נתוני אימון למספר קבוצות משנה, שכל אחת מהן פועלת על גבי אותו העתק של המודל, אך ביחידות עיבוד שונות. תמיכה במנועי גרף ניתנת להקלת קוד ובמיוחד להפרשות AUTO_PARALLEL.

מצב AUTO_PARALLEL מייעל באופן אוטומטי את ההקבלה על ידי שילוב של אסטרטגיית ההקבלה של הנתונים (שנדון לעיל) עם אסטרטגיית ההקבלה של המודל, בה המודל מחולק לחלקים שונים, וכל חלק מבוצע במקביל ביחידות עיבוד שונות. מצב אוטומטי זה בוחר את אסטרטגיית ההקבלה המציעה את היתרונות הטובים ביותר, עליהם ניתן לקרוא בקטע אוטומטי מקביל באתר MindSpore (אם כי הם אינם מתארים כיצד מתקבלות הערכות והחלטות). נצטרך לחכות כדי לפנות זמן לצוות הטכני להרחיב את התיעוד ולהבין פרטים נוספים על אסטרטגיית ההקבלה האוטומטית. אך ברור כי אסטרטגיית ההקבלה האוטומטית הזו היא קריטית, וכאן הם צריכים ויכולים להתחרות עם TensorFlow או PyTorch, וכך להשיג ביצועים טובים משמעותית באמצעות מעבדי Huawei.

מפת דרכים מתוכננת ואיך לתרום

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

מָשׁוֹב. כרגע אנו יכולים למצוא את השורות העיקריות הבאות:

  1. תמיכה במודלים נוספים (בהמתנה למודלים קלאסיים, GAN, RNN, רובוטריקים, מודלים למידה מוגברים, תכנות הסתברותי, AutoML וכו ').
  2. הרחב את ממשקי ה- API והספריות לשיפור השימושיות וחוויית התכנות (יותר מפעילים, יותר אופטימיזציה, יותר פונקציות אובדן וכו ').
  3. תמיכה מקיפה במעבד Huawei Ascend ואופטימיזציה של ביצועים (מיטוב אוסף, שיפור ניצול משאבים וכו ')
  4. אבולוציה של ערמת התוכנה וביצוע אופטימיזציות של גרפים חישוביים (שיפור ייצוג ה- IR הביניים, הוספת יכולות אופטימיזציה נוספות וכו ').
  5. תמיכה בשפות תכנות נוספות (לא רק בפייתון).
  6. שיפור למידה מבוזרת באמצעות אופטימיזציה של תזמון אוטומטי, הפצת נתונים וכו '.
  7. שפר את כלי MindInsight כדי להקל על המתכנת "לבצע ניפוי באגים" ולשפר את כוונון ההיפרפרמטר במהלך תהליך הלמידה.
  8. התקדמות במסירת פונקציונליות הסקה למכשירים ב- Edge (אבטחה, תמיכה במודלים שאינם פלטפורמות באמצעות ONNX וכו ')

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

סיכום

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

מוּמלָץ: