במאמר הזה מתואר Collective Communication Analyzer (CoMMA), ספרייה לאיסוף נתוני טלמטריה של NCCL לשירותי Google Cloud . טלמטריית NCCL אוספת מדדי ביצועים ואירועים תפעוליים ש-NCCL יוצר במהלך ההפעלה שלו. NVIDIA Collective Communication Library (NCCL) מאיצה תקשורת בעלת ביצועים גבוהים בין מעבדי GPU שפועלים במקביל ובמערכות מחשוב מבוזרות. התקשורת הזו, שמתבצעת בביצועים גבוהים, שימושית במיוחד ללמידה עמוקה ולמחשוב עתיר ביצועים (HPC).
בגרסאות NCCL 2.23 ואילך, NVIDIA הציגה את NCCL profiler plugin API, שמאפשר למפתחים לרשום פונקציות קריאה חוזרת (callback) כדי לאסוף נתוני טלמטריה במהלך פעולות קולקטיביות של NCCL. Google מספקת את Collective Communication Analyzer (CoMMA), ספרייה שמשתמשת ב-API של הפלאגין של NCCL Profiler של NVIDIA כדי לאסוף נתוני טלמטריה של NCCL לשירותי Google Cloud . בחלק מהתמונות, CoMMA מותקן ומופעל באופן אוטומטי, אבל אתם יכולים גם להשבית, להפעיל מחדש או להתקין ולהפעיל את CoMMA באופן ידני כדי לשלוט באיסוף הנתונים.
תמונות שמופעל בהן CoMMA
במכונות מסוג A5X, A4X Max, A4X, A4, A3 Ultra, A3 Mega ו-A3 High (עם 8 יחידות GPU), CoMMA מותקן ומופעל באופן אוטומטי כשמשתמשים בתמונות שכוללות את הפלאגין gIB NCCL. התמונות הבאות מכילות את הפלאגין gIB NCCL:
- תמונות צמתים של מערכת הפעלה שמותאמת לקונטיינרים עם containerd (cos_containerd): Google Kubernetes Engine (GKE) משתמש בתמונות האלה כדי ליצור אשכולות של GKE Autopilot. הקבצים הבינאריים של CoMMA זמינים בספרייה
/home/kubernetes/bin/gib. - קובצי אימג' של קונטיינרים של שכבת תוכנה ללמידה עמוקה (Deep Learning): משתמשים בקובצי האימג' האלה כדי לפרוס ולהגדיר ספריות וסביבות עבודה של AI ו-ML באשכולות GKE.
אם אתם משתמשים באחת מהתמונות האלה ורוצים להשבית את איסוף נתוני הטלמטריה של NCCL על ידי CoMMA, עיינו בקטע השבתת CoMMA. עם זאת, כדי שתכונות כמו זיהוי משימות איטיות או זיהוי עומסי עבודה שלא מגיבים יפעלו, צריך להפעיל את CoMMA. אם אתם לא משתמשים בתמונות האלה ורוצים להפעיל את CoMMA כדי לאסוף נתוני טלמטריה של NCCL, קראו את המאמר התקנת CoMMA.
יתרונות
הטלמטריה של NCCL ש-CoMMA אוסף עוזרת לזהות צווארי בקבוק בביצועים, במיוחד חריגים, בתקשורת של ה-GPU. CoMMA אוסף נתונים מפורטים, כמו היסטוגרמות של זמן אחזור לפעולות תקשורת קולקטיביות. שירות אבחון יכול לעבד את הנתונים האלה ולהשתמש בהם כדי לאתר את המשימות שמתעכבות.
היתרונות של שימוש ב-CoMMA לאיסוף נתוני טלמטריה:
נדרש לזיהוי של עומסי עבודה שלא מגיבים ושל משימות שמתעכבות: CoMMA אוסף את נתוני הטלמטריה המפורטים של NCCL כדי לזהות צווארי בקבוק בביצועים או משימות שמתעכבות בתקשורת בין יחידות ה-GPU. CoMMA מספק נתוני טלמטריה מפורטים של NCCL שעוזרים לזהות ולפתור בעיות בעומסי עבודה גדולים של אימון AI ו-ML.
לדוגמה, CoMMA מתעד את האלגוריתם שמשמש בפעולות של NCCL. המידע הזה חשוב לניתוח ולכוונון של הביצועים, כי לאלגוריתמים שונים יכולים להיות מאפייני ביצועים שונים מאוד, בהתאם לעומס העבודה ולהגדרות המערכת.
CoMMA גם עוזר לפתור בעיות שקשורות לביצועים לא אופטימליים ולשגיאות. הוא מאתר שגיאות שמקורן בשכבות תעבורה ברמה נמוכה יותר, כמו TCP, RDMA או מארגים של מתגים, ומקשר אותן לקולקטיבים ספציפיים של NCCL ולצמתים שיזמו את הפעולה. הוא יכול לזהות מתי אות טלמטריה של פעימות לב מפסיק להגיב, ולעקוב אחרי גורמים אפשריים לעומסי עבודה שלא מגיבים.
מעקב עם תקורה נמוכה: CoMMA משתמש במשאבי מחשוב מינימליים במהלך איסוף פעיל של נתוני טלמטריה של NCCL, ולכן הוא אידיאלי לעומסי עבודה של למידת מכונה שרגישים לביצועים ופועלים לאורך זמן, כמו אימון של מודל שפה גדול (LLM).
הרחבת היקף הטלמטריה של NCCL: CoMMA משתמש ב-API של הפלאגין של NCCL profiler. ה-API הזה אוסף טלמטריה של NCCL בהיקף רחב יותר בהשוואה לפלאגינים שמבוססים על תעבורה. פלאגינים מבוססי-תעבורה אוספים בעיקר נתוני טלמטריה על תעבורת הרשת הבסיסית, כולל העברות נתונים דרך חומרת הרשת ופרוטוקולי הרשת. הפלאגין של ה-profiler אוסף נתוני טלמטריה על פעולות התקשורת של NCCL, כולל תזמון של תקשורת קולקטיבית, פעולות שרת proxy והעברות נתונים.
איך CoMMA פועל
בזמן הריצה של האפליקציה, NCCL טוען באופן אוטומטי את ספריות CoMMA שמותקנות במיקום שצוין במשתנה הסביבה LD_LIBRARY_PATH. לאחר מכן, CoMMA אוסף נתוני טלמטריה של NCCL, ששירותים אחרים של Google יכולים להשתמש בהם. אפשר גם לייצא את הנתונים האלה למערכת הקבצים המקומית.
המאמרים הבאים
- איך מפעילים, משביתים ומגדירים את CoMMA
- איך פותרים בעיות ב-CoMMA
- איך מזהים ופותרים בעיות של משימות איטיות
- איך מזהים עומסי עבודה שלא מגיבים