
PyTorch 2.15 משכתבת את ה-backend של NCCL לשיפור התאוששות מתקלות GPU
PyTorch 2.15 כולל מנוע הרצה (backend) שנכתב מחדש לספריית NCCL של Nvidia, שנועד לשפר את אבחון התקלות ואת ההתאוששות מהן כאשר מעבדי GPU פועלים יחד במשימות אימון גדולות של בינה מלאכותית.
PyTorch 2.15 כולל מנוע הרצה (backend) שנכתב מחדש לספריית NCCL של Nvidia, שנועד לשפר את אבחון התקלות ואת ההתאוששות מהן כאשר מעבדי GPU פועלים יחד. הגרסה מוסיפה גם תכונות נוספות, והיא יוצאת בזמן שיוצריה של התוכנה ממשיכים להעביר אותה מכלי לחוקרים אל לב העבודה בייצור של בינה מלאכותית. העדכון כלל 3,117 קומיטים מ-583 תורמים.
שכתוב מנוע ההרצה של NCCL
מנוע ההרצה הקודם של PyTorch ל-NCCL, שנקרא ProcessGroupNCCL, יכול היה ליצור עשרות מתקשרים (communicators) בכל קבוצת תהליכים, מה שהוביל לקיפאונות (deadlocks) לסירוגין ולביצועים בלתי צפויים. טריסטן רייס, מפתח ליבה ב-PyTorch ומהנדס תוכנה ב-Meta המתמחה במחשוב מבוזר, אמר בשידור חי ביוטיוב ביום חמישי כי הממשק לספריית התקשורת חייב להיכתב מחדש מפני שטבע בחוב טכני. מנוע ההרצה החדש פועל לפי כלל נוקשה: קבוצת תהליכים אחת מקבלת מתקשר אחד בלבד בזמן האתחול. כברירת מחדל הדבר מבטל את הדיבור הצולב בין מתקשרים מרובים ואת המורכבות הנלווית לו; תוכניות שזקוקות למקביליות יצטרכו לשגר קבוצות תהליכים נוספות.
הספרייה המעודכנת מתמודדת טוב יותר גם עם מעבדים מפגרים, בזכות אפשרות קלה יותר לשינוי תצורה. אם מעבד GPU קורס או פועל לאט, מתזמר של צד שלישי יכול להוציא את המפגר מהמקבץ ואף להקצות עובד חלופי במקומו. מקליט טיסה שמתעד את כל הפעולות בסדרה של צילומי מצב שאפשר לבדוק אחרי כשל מחליף את ההודעה הגנרית שקיבלו המשתמשים עד כה כשאשכול מעבדי GPU נתקע בגלל פסק זמן או קיפאון. רייס ציין שמנוע ההרצה המנוקה של NCCL, שנקרא גם הוא ProcessGroupNCCL, ייתן למפתחים לוח חלק, מה שיקל על הוספת תכונות חדשות.
מדוע NCCL חשוב
NCCL, שנהגה "ניקל", מספק ל-PyTorch פרימיטיבים לתקשורת בין מעבדי GPU, בצומת בודדת ובין צמתים באשכול. הדבר חיוני להרצת הסקה על רשתות נוירונים גדולות ולבנייה ולתחזוקה של מודלי שפה גדולים. העובדים חייבים להחליף ביניהם ללא הרף טנזורים, גרדיאנטים, אקטיבציות ומשקלות, ו-NCCL משתמש בנתיבי תקשורת מותאמים להעברת נתונים בין מעבדי GPU תוך צמצום העומס על ה-CPU לעומת רשתות סטנדרטיות המבוססות על TCP.
Nvidia הוציאה את NCCL לראשונה בכנס SC15 כמאיץ לשימוש כללי, וצוות פייסבוק אימץ אותו כאשר בנה לראשונה את PyTorch ב-2016, במטרה ליצור גרסה מבוססת Python של ספריית Torch ללמידת מכונה, שנכתבה ב-Lua. וויל סטיוארט, ממייסדי חברת התוכנה Northflank, כתב בפוסט בבלוג: "כל מעבדת ML גדולה (OpenAI, DeepMind, Meta, Nvidia) משתמשת ב-PyTorch. הוא מפעיל הכול, ממודלי דיפוזיה ומודלי שפה גדולים ועד מערכות המלצה ורובוטיקה. האימוץ הנרחב הזה אינו מקרי."
תכונות נוספות ב-2.15 והשקה
בין התכונות החדשות האחרות: ממשק transport API של Python להעברת נתונים אסינכרונית בכיוון אחד, שמתאים לעבודות אימון שבהן המשקלות מסונכרנים בין מאמנים לגנרטורים; שיפורים בעיבוד מקבילי למכשירי Apple; ותמיכה במעבדי Blackwell מהדור הבא של Nvidia. ProcessGroupNCCL הישן נשאר בחבילת 2.15 כאפשרות לחזרה לאחור. אם מנוע ההרצה החדש של NCCL יעבוד כמצופה, הגרסה הישנה תוסר בגרסה 2.16, המתוכננת לתחילת השנה הבאה.
מקורות: The Register
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.