הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
למידה עמוקה מחוץ לקופסת nVidia
לפני 3 וחצי שנים סקרתי את מצב הלמידה העמוקה בקוד פתוח (מחוץ לעולם nVidia) והמצב היה בכי רע.
גם עכשיו המצב לא מזהיר. לפני מספר שנים רכשתי AMD rx6600XT ולא מזמן בתור ניסוי קניתי Intel Arc a380.
נתחיל מפתרון מבית AMD - השכפול של cuda בשם hip
קודם כל בניגוד לשנים הקודמות בהן אפילו לא הייתה תמיכה בכרטיסי RNDA התקנתי לאחרונה אובונטו 22.04 התקנתי rocm הורדתי pytorch מתאים - וזה עבד (כמעט היה צריך להגדיר משתנה סביבה כדי שיכיר בכרטיס שלא נתמך באופן רשמי) אבל זה עבד. לא נתקלתי עד עכשיו במשהו שלא עבד. שזה בהחלט התקדמות מרשימה. כמובן גם כל הקוד של AMD הוא פתוח שזה יתרון ענק.
אבל... הם זרקו תמיכה ב-GCN4 זאת אומרת הכרטיס הישן rx560 כבר לא עובד עם rocm ואפילו דרייבר OpenCL שלהם קורס. דרייבר Mesa פשוט גרוע ו-rustocl קטסטרופה אחת גדולה, אבל הצלחתי להתקין amdgpu-pro הישן והלא נתמך - אבל לפחות עובד.
כלומר בעלי RDNA נראה יהנו, אולי גם אלה עם Vega (אבל לא APU) ורק אם משתמשים בלינוקס.
השחקנית החדשה בשוק היא Intel Arc
בניגוד ל-AMD הם לא שכתבו cuda אלא עובדים עם pytorch כ-plugin. ההתקנה קצת יותר מסובכת אבל הצלחתי. להבנתי החל מ-pytorch 2.5 או 2.6 זה כבר אמור להיות שקוף יותר. הכרטיס עובד. האימונים? תלוי עד כמה הקוד שאתה מנסה להריץ תלוי בעבודה ישירה מול cuda בלבד. אבל הצלחתי אפילו להריץ yolo ועוד כל מיני רכיבים. כך שהמצב נראה טוב יחסית. אבל כמובן Intel החליטו ללכת בדרך ה-nית שאף אחד לא עובד עם זה sycl... טוב לפחות זה תקן פתוח (שתכל'ס רק Intel עובדים איתו)
מה לגבי ביצועים. טוב. עשיתי השוואה בין gtx960 לבין arc a380. מבחינת המפרט
- לשניהם יש 1024 מעבדים
- מהירות הזכרון של אינטל כ-143GB/s לעומת כ84GB/s בנבידיה
- השעון הוא 2450MHz לאינטל לעומת כ-1506MHz משמע: יש כ-5020GFlops מול 3080GFlops יתרון
איך הביצועים... לא בדיוק טובים לעומת מה שכתוב על הנייר
למרות שהמהירות התיאורתית אמורה להיות יותר טובה בכ-%63 בפועל באימון היתרון היה סה"כ 38% באימון בממוצע ו-48% בחיזוי. אם לוקחים חציון המצב עוד יותר גרוע. 13% שיפור באימון ו-40% בחיזוי.
סיכום
אז המצב השתפר פלאים לעומת מה שהיה. זה רחוק מהליות מושלם אבל יש התקדמות ומה שחשוב שההתקדמות החדשה היא בתחום קוד פתוח.
עכשיו מה לא טוב? עדיין כל אחת מהחברות הגדולות בוחרת בפתרון משלה...
- nVidia זה cuda
- AMD זה hip/rocm (העתק של cuda)
- Intel זה - sycl אבל לפחות יש תמיכה גם ב-opencl ב-onednn
- Apple זה metal
- microsoft זה DirectML
נפלתם על הראש? ברור ש-nvidia תהיה מונופול בשוק.
ומה אני עושה?
ממשיך לעשות את הבלתי אפשרי ושחררתי עוד גרסה מספר 0.2.0 של OpenCL backend ל-Pytorch עם הרבה תיקונים.
מוזמנים לנסות - אבל הדרך עוד ארוכה
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.