במדריך הזה מוסבר איך להפעיל, להשבית ולנהל את ספריית Collective Communication Analyzer (CoMMA). CoMMA אוסף טלמטריה של NCCL עבור שירותיGoogle Cloud . מידע נוסף על CoMMA זמין במאמר Collective Communication Analyzer (CoMMA).
הפעלת CoMMA
CoMMA מותקן מראש ומופעל אם משתמשים בתמונות שמכילות את התוסף NCCL gIB. הרשימה המלאה של התמונות האלה זמינה במאמר תמונות שמופעל בהן CoMMA.
אפשרויות התקנה
אם אתם לא משתמשים באף אחת מהתמונות האלה ורוצים להתקין את CoMMA, אתם יכולים להשתמש באחת מהשיטות הבאות.
| שיטת ההתקנה | סוגי מכונות נתמכים |
|---|---|
| תמונת NCCL Google Infrastructure Bundle (gIB) (מומלצת לסוגים חדשים יותר של מכונות) | A4X Max, A4X, A4 High ו-A3 Ultra |
| תמונת מתקין CoMMA | A4X, A4 High ו-A3 Ultra |
| Build from source (חובה לסוגי מכונות ישנים יותר) | A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard ו-N1 עם מעבדי GPU מצורפים |
התקנה של CoMMA
כדי להתקין את CoMMA, בוחרים באחת מהאפשרויות הבאות:
תמונת NCCL gIB
כדי להתקין את CoMMA באמצעות תמונת ה-gIB של NCCL, מריצים את הפקודה הבאה.
docker run --rm --name nccl-gib-installer --volume /usr/local/gib:/var/lib/gib \ us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib install \ --install-nccl
תמונת מצב בזמן ההתקנה של CoMMA
אפשר לקבל קבצים בינאריים של CoMMA בתמונת Docker עצמאית. אתם יכולים להשתמש בקובץ אימג' של Docker, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer, בתור initContainers כדי להתקין קבצים בינאריים של CoMMA במאגר העומס שלכם.
הקונטיינר מאחסן את הקבצים הבינאריים בספרייה /artifacts.
כדי להשתמש בתמונת ההתקנה של CoMMA, מבצעים את השלבים הבאים:
כדי להתקין את CoMMA בעומס העבודה, מוסיפים את קטע הקוד הבא אל
initContainers:- name: profiler-plugin-installer image: us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer:latest imagePullPolicy: Always volumeMounts: - name: nccl-plugin-volume mountPath: /usr/local/nccl-plugin command: - /bin/sh - -c - | set -ex rm -rf /usr/local/nccl-plugin/lib64/libnccl-profiler.so cp /artifacts/libnccl_profiler.so /usr/local/nccl-plugin/lib64/libnccl-profiler.so # GPUViz is a dependency of telemetry insights such as straggler detection rm -rf /usr/local/nccl-plugin/lib64/libGPUViz.so cp /artifacts/libGPUViz.so /usr/local/nccl-plugin/lib64/
קטע ההגדרות ב-YAML מציין קונטיינר להתקנת CoMMA.
בקטע הקוד מוגדר קובץ האימג' של הקונטיינר להתקנה, מדיניות השליפה שלו והרכבת נפח לאחסון הפלאגין.
צריך לטעון את אותו נפח אחסון למכולת של עומס העבודה עם <mount-path>/lib64 שנוסף ל-LD_LIBRARY_PATH.
בקטע command מופעל סקריפט מעטפת להסרת ספריית פרופילים קיימת. לאחר מכן, הוא מעתיק את ספריית פרופילר החדשה לתיקיית הפלאגין המיועדת.
הסקריפט מוודא שגרסת הפלאגין הנכונה של כלי הפרופיל מותקנת ומוכנה לשימוש.
בנייה ממקור
כדי ליצור את ספריית CoMMA ממקור, צריך להתקין את התוכנה הבאה:
- שפת התכנות Rust, שנדרשת לקומפיילר ול-Cargo. אפשר להתקין את זה באמצעות rustup או חבילות מערכת
- ההרשאה
Libclang-dev, שנדרשת ל-bindgen. -
CMakeגרסה 3.10 ואילך
כדי לבצע בנייה ממקור, פועלים לפי השלבים הבאים:
משכפלים את המאגר ואת מודולי המשנה שלו.
git clone --recurse-submodules https://github.com/google/CoMMA
קומפילציה של קובצי ההפעלה באמצעות Cargo.
cargo build --release
Cargo שומר את הקובץ הבינארי ב-
target/release/libnccl_profiler.so.כדי להפעיל את NCCL לטעינת ספריות CoMMA, משתמשים באחת מהשיטות הבאות:
- מעתיקים את הקובץ המהודר
libnccl_profiler.soלספרייה ב-LD_LIBRARY_PATH. משנים את השם ל-libnccl-profiler.so(משתמשים במקף במקום בקו תחתון). - אפשר גם להגדיר את משתנה הסביבה
NCCL_PROFILER_PLUGINכדי לציין את הנתיב של הקובץ.so.
- מעתיקים את הקובץ המהודר
אימות ההתקנה או ההפעלה
כדי לוודא ש-NCCL טוען את ספריות CoMMA, בודקים את היומנים של NCCL:
- הפעלת רישום ביומן של ניפוי באגים ב-NCCL. כדי להפעיל את הרישום ביומן, מגדירים את משתנה הסביבה
NCCL_DEBUG=INFO. אפשר גם לציין רמת ניפוי באגים מפורטת יותר. אפשרויות נוספות לניפוי באגים מפורטות בקטעNCCL_DEBUGבמסמכי התיעוד של NVIDIA. - מציינים את מערכת המשנה
INITלניפוי הבאגים. מציינים אתINITעל ידי הגדרת משתנה הסביבהNCCL_DEBUG_SUBSYS=INIT. אפשר גם לציין מערכות משנה אחרות. אפשרויות נוספות של מערכת המשנה מפורטות בקטעNCCL_DEBUG_SUBSYS. - מחפשים ביומן של NCCL שורה שדומה לשורה הבאה:
NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN
השבתת CoMMA
אם CoMMA כבר מותקן, כדי למנוע ממנו לאסוף נתוני טלמטריה של NCCL, צריך להגדיר את NCCL_TELEMETRY_MODE=0 משתנה הסביבה של CoMMA
לפני שמריצים את עומסי העבודה. הוראות להגדרת משתני סביבה של CoMMA מופיעות במאמר בנושא הגדרת משתני סביבה.
כדי להפעיל מחדש את CoMMA אחרי השבתה, פועלים לפי השלבים הבאים:
מגדירים את משתנה הסביבה
NCCL_TELEMETRY_MODEלערך שאינו אפס. לדוגמה, כדי להשתמש במצב ברירת המחדל, מצייניםNCCL_TELEMETRY_MODE=3.רשימת האפשרויות המלאה מופיעה בטבלה אפשרויות הגדרה בקטע
NCCL_TELEMETRY_MODE.
הגדרה של טלמטריה של CoMMA NCCL וצפייה בה
אם CoMMA מופעל בסביבה שלכם, אתם יכולים להגדיר את סוג נתוני הטלמטריה שהוא אוסף על ידי הגדרת רמת הרזולוציה של הנתונים. בקטע הזה מוסבר איך להגדיר את רמת הפירוט של הנתונים ואילו אפשרויות זמינות.
אתם יכולים גם לבדוק את הנתונים שנאספים על ידי CoMMA כדי לוודא שהם תואמים למדיניות האבטחה של הארגון שלכם, או לנתח אותם באמצעות כלי הטלמטריה שלכם לניתוח NCCL. כדי לעשות זאת, מייצאים את הנתונים הגולמיים לקובץ מקומי.
הגדרת רמת הפירוט של הנתונים
מערכת CoMMA אוספת נתוני טלמטריה של NCCL ברמות פירוט שונות. מגדירים את רמת הגרנולריות באמצעות משתני סביבה. הוראות להגדרת משתני סביבה של CoMMA מופיעות במאמר בנושא הגדרת משתני סביבה.
- התנהגות ברירת המחדל: כברירת מחדל, CoMMA עוקב אחרי פעולות NCCL, כולל פעולות קולקטיביות ועמית לעמית, המטא-נתונים של הפעולות האלה וזמני השלמת הפעולות. הוא משתמש במשתני הסביבה הבאים:
NCCL_PROFILER_TRACK_NCCLOP=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
- כדי להפעיל רמות מפורטות יותר של איסוף נתונים, צריך להגדיר את משתני הסביבה הבאים:
- כדי לעקוב אחרי משך הזמן של פעולות שמתבצעות דרך שרת proxy, צריך להגדיר את
NCCL_PROFILER_TRACK_PROXYOP=true. - כדי לעקוב אחרי הזמן שמוקדש לכל פעולת קלט/פלט ברשת, צריך להגדיר את
NCCL_PROFILER_TRACK_STEPS=true. ההגדרה הזו מספקת את רמת הפירוט הגבוהה ביותר.
- כדי לעקוב אחרי משך הזמן של פעולות שמתבצעות דרך שרת proxy, צריך להגדיר את
רשימה מלאה של משתני הסביבה מופיעה במאמר אפשרויות הגדרה.
ייצוא נתונים לקובץ מקומי
כדי לראות את הנתונים הגולמיים, מייצאים אותם לקובץ מקומי. כדי לייצא את הנתונים לקובץ מקומי ולראות את הפלט, פועלים לפי השלבים הבאים:
- מגדירים את
NCCL_TELEMETRY_MODEלערך1או4. מידע על משתנה הסביבהNCCL_TELEMETRY_MODEזמין במאמר אפשרויות הגדרה. מגדירים אחת מנתיבי הייצוא הבאים:
- מגדירים את
NCCL_PROFILER_LATENCY_FILE=PATHלייצוא של עקבות מפורטים של אירועים לקובץ מקומי. מחליפים אתPATHבנתיב כמו/tmp/latency-%p.txt. מגדירים את
NCCL_PROFILER_SUMMARY_FILE=PATHלייצוא של נתונים סטטיסטיים מסוכמים. מחליפים אתPATHבנתיב כמו/tmp/summary-%p.txt.המערכת מחליפה את
%pבמזהה התהליך.
- מגדירים את
בדקו את התוצאה. הפלט הגולמי הוא קובץ JSON.
אפשרויות להגדרות אישיות
בקטעים הבאים מפורטים כל משתני הסביבה שאפשר להגדיר עבור CoMMA. הם גם מסבירים איך להגדיר משתנה סביבה כלשהו.
הגדרת משתני סביבה של CoMMA
כדי להגדיר משתנה סביבה של CoMMA לערך שאינו ברירת המחדל, מגדירים משתני סביבה. אפשר להגדיר משתני סביבה בשורת הפקודה עבור מופע המחשוב או להוסיף אותם לסקריפט לטעינה בזמן ההפעלה. אם מגדירים את משתני הסביבה בשורת הפקודה, הערך נשמר רק לסשן הנוכחי. כדי שהמשתנים של סביבת העבודה יהיו קבועים, צריך להציב אותם בקובץ ~/.bashrc, בקובץ ~/.profile או בכל קובץ הפעלה אחר שבו מערכת ההפעלה משתמשת. מידע נוסף זמין במסמכי מערכת ההפעלה.
צריך להגדיר את משתני הסביבה של CoMMA לפני שהעומס מתחיל, כי העומס קורא את המשתנים במהלך האתחול של NCCL. אפשר להגדיר משתני סביבה באופן הבא:
export ENVIRONMENT_VARIABLE=VALUE
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_VARIABLE: משתנה הסביבה שרוצים להגדיר. לדוגמה,NCCL_TELEMETRY_MODE. -
VALUE: הערך של משתנה הסביבה, לדוגמה0.
משתני סביבה של CoMMA
בקטע הזה מפורטים משתני הסביבה שאפשר להגדיר עבור CoMMA וערכי ברירת המחדל שלהם.
| שם | תיאור | ברירת מחדל | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
NCCL_PROFILER_AGGREGATE_STEPS |
הפעלה (true) או השבתה (false) של צבירת פעולות של נתחי רשת. |
true |
||||||||||
NCCL_PROFILER_GPUVIZ_LIB |
מציין את הנתיב אל libGPUViz.so, ספרייה שמעלה טלמטריה של NCCL לשירותי Google Cloud . הספרייה הזו היא wrapper ל-Agent Communication API.
ממשק ה-API של תקשורת הסוכן הוא הממשק שסוכנים, כמו תהליכים
שפועלים במערכת ההפעלה של האורח, משתמשים בו כדי ליצור חיבורים מאובטחים
ואמינים עם Google Cloud שירותים.
אם אתם משתמשים בתמונה של NCCL gIB כקובץ התקנה או באחת מהתמונות שמצורף אליהן התוסף NCCL gIB, אתם לא צריכים להגדיר את משתנה הסביבה הזה. |
|||||||||||
NCCL_PROFILER_LATENCY_FILE |
מציינת את תבנית הנתיב לקובץ מעקב ההשהיה. לדוגמה,
/tmp/latency-%p.txt.
המערכת מחליפה את %p בשם במזהה התהליך (pid).
כדי להשבית ייצוא מבוסס-קובץ, צריך לבטל את ההגדרה של המשתנה הזה. |
|||||||||||
NCCL_PROFILER_PLUGIN |
מציין את הנתיב לקובץ הבינארי של תוסף הפרופילר. אם לא מציינים את ההגדרה הזו, NCCL מחפש את libnccl-profiler.so ב-
LD_LIBRARY_PATH. |
|||||||||||
NCCL_PROFILER_SUMMARY_FILE |
מציין את הנתיב לקובץ הסיכום המצטבר. לדוגמה,
/tmp/summary-%p.txt.
המערכת מחליפה את %p בשם במזהה התהליך (pid).
כדי להשבית ייצוא מבוסס-קובץ, צריך לבטל את ההגדרה של המשתנה הזה. |
|||||||||||
NCCL_PROFILER_SUMMARY_INTERVAL |
מציינת את המרווח לדיווח סיכום. לדוגמה,
10s, 1m.
תומך ב-d, h, m, s,
ms, us, ns |
1m |
||||||||||
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP |
הפעלה (true) או השבתה (false) של מעקב אחר פעולות פרוקסי של NCCL בין תהליכים. |
true |
||||||||||
NCCL_PROFILER_TRACK_NCCLOP |
הפעלה (true) או השבתה (false) של מעקב ודיווח על פעולות NCCL, כולל תקשורת קולקטיבית ותקשורת ישירה. |
true |
||||||||||
NCCL_PROFILER_TRACK_PROXYOP |
הפעלה (true) או השבתה (false) של מעקב ודיווח על פעולות שמתבצעות דרך שרת proxy. |
false |
||||||||||
NCCL_PROFILER_TRACK_STEPS |
הפעלה (true) או השבתה (false) של מעקב ודיווח על פעולות של חלקי רשת. |
false |
||||||||||
NCCL_TELEMETRY_MODE |
ההגדרה הזו קובעת את מיקום הייצוא של נתוני הטלמטריה של NCCL.
האפשרויות כוללות את הפעולות הבאות:
|
3 |