ניהול פרופילים באמצעות XProf

אתם יכולים להשתמש בפרופיילינג מנוהל של XProf כשאתם משתמשים במעקב אחרי עומסי עבודה של אבחון ל-ML, ב-CLI של אבחון ל-ML או ב-SDK של אבחון ל-ML. ‫Managed XProf הוא מכונה של XProf עם קצה עורפי שניתן להתאמה, שפלטפורמת ML Diagnostics מקצה ומנהלת בפרויקטGoogle Cloud . לעומת זאת, ב-self-hosted XProf צריך לפרוס ולתחזק באופן ידני את המכונות של XProf כדי לראות את הפרופילים.

‫XProf הוא כלי בקוד פתוח ליצירת פרופילים ולניתוח ביצועים של עומסי עבודה (workload) של למידת מכונה (ML), והוא חלק מהסביבה העסקית של OpenXLA. בהשוואה ל-XProf באירוח עצמי, ב-XProf מנוהל יש את התכונות הבאות:

  • ללא הגדרה: לא צריך להתקין או להגדיר ידנית את שרתי התצוגה החזותית של XProf או את יחסי התלות שלהם.
  • גישה מרוכזת לסשנים של פרופילים עם כמה הרצות: טעינת סשנים של פרופילים בהרצות שונות של למידת מכונה, באמצעות מכונה מנוהלת אחת של XProf לכל פרויקט.
  • התאמה אוטומטית לעומס וטעינה מהירה: טעינה מהירה יותר של פרופילים גדולים והתאמה אוטומטית של משאבי בק-אנד לעומס כשריבוי משתמשים צופים בפרופילים בו-זמנית.
  • אבטחה ושיתוף פעולה מובנים: יוצר קישורים שניתן לשתף לסשנים של פרופילים, תוך הגנה על מופעי הפרופילים מפני פרצות אבטחה.
  • מצבים שונים של תיעוד פרופילים: תמיכה בתיעוד של כמה מארחים, יצירת פרופילים על פי דרישה, יצירת פרופילים רציפה במצב תמונת מצב ותיעוד פרופילים אוטומטי ממעקב אחרי עומסי עבודה.
  • אין עלויות תשתית נוספות: מספק משאבי מחשוב מנוהלים של XProf ללא תשלום נוסף, בניגוד לאירוח עצמי של מכונה של XProf.

נתיבי פריסה

אתם יכולים לפרוס ולהפעיל את XProf המנוהל באמצעות ML Diagnostics SDK, מעקב אחרי עומסי עבודה או ML Diagnostics CLI.

פלטפורמת ML Diagnostics פורסת מכונה מנוהלת אחת של XProf עם קצה עורפי שניתן להתאמה לכל פרויקט. אתם יכולים להשתמש במכונה הזו כדי לראות את כל סשני הפרופילים שנוצרו בכל הרצות ה-ML בפרויקט. כדי לתעד פרופילים, צריך גם קטגוריה של Cloud Storage שמשויכת להרצת ה-ML, שבה יישמרו נתוני הפרופיל המתועדים.

כדי להפעיל את XProf מנוהל ולשייך קטגוריה של Cloud Storage להרצת ה-ML, אתם יכולים להשתמש בכל אחת מהדרכים הבאות:

  • ‫ML Diagnostics SDK: כשפורסים את הרצת ה-ML הראשונה באמצעות ה-SDK, פלטפורמת ML Diagnostics מפעילה ופורסת באופן אוטומטי מכונה מנוהלת של XProf בפרויקט. כדי לציין את הקטגוריה של Cloud Storage שבה יישמרו הפרופילים, מגדירים את הפרמטר gcs_path כשמגדירים את הרצת ה-ML ב-SDK.
  • מעקב אחרי עומסי עבודה: כברירת מחדל, מעקב אחרי עומסי עבודה לא מפעיל את XProf מנוהל. במקום זאת, בפעם הראשונה שתיעוד הפרופיל האוטומטי מפעיל סשן פרופיל בפרויקט, פלטפורמת ML Diagnostics מקצה ומפעילה באופן אוטומטי מכונה מנוהלת של XProf. כברירת מחדל, הכלי 'אבחון ML' גם מקצה קטגוריה של Cloud Storage אזורית בפרויקט שלכם.
  • ‫ML Diagnostics CLI: אתם יכולים לעדכן כל הרצת למידת מכונה כדי להפעיל את הכלי XProf, שפורס את המכונה המנוהלת של XProf בפרויקט שלכם, ולשייך קטגוריה של Cloud Storage להרצת למידת המכונה.

תיעוד פרופילים

ב-ML Diagnostics יש ארבע שיטות לאיסוף פרופילים של XProf: איסוף פרוגרמטי, יצירת פרופילים על פי דרישה, יצירת פרופילים רציפה במצב תמונת מצב ואיסוף פרופילים אוטומטי ממעקב אחרי עומסי עבודה. השיטות האלה נבדלות זו מזו באופן שבו מתבצעת הפעלה של תיעוד ובחלון הזמן שהן מתעדות.

בטבלה הבאה מוצגת השוואה בין השיטות לתיעוד פרופילים:

שיטת תיעוד תיאור frameworks נתמכים
תיעוד פרוגרמטי

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

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

‫JAX, ‏ vLLM, ‏ Tunix, ‏ TorchTPU
יצירת פרופילים על פי דרישה

מפעיל תיעוד פרופיל בזמן אמת ממסוף Google Cloud או מה-CLI של gcloud, למשך הזמן שציינתם בזמן שעומס העבודה פועל.

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

‫JAX, ‏ vLLM, ‏ Tunix, ‏ TorchTPU
יצירת פרופילים רציפה במצב תמונת מצב (תצוגה מקדימה)

הקלטה רציפה של פרופיל בנפח 2GB של מעקבי מכשיר במאגר נתונים זמני מעגלי במארחי ה-TPU, ושמירת מאגר הנתונים הזמני האחרון בנפח 2GB בקטגוריה של Cloud Storage כשמפעילים תמונת מצב.

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

‫JAX, ‏ vLLM, ‏ Tunix
תיעוד פרופיל אוטומטי ממעקב אחרי עומסי עבודה (גרסת טרום-השקה)

הפעלה אוטומטית של תיעוד פרופיל XProf כשמנתח הירידה בביצועים של מעקב אחרי עומס העבודה מדווח על מצב "bad". אפשר להגדיר תיעוד פרופיל אוטומטי כדי להפעיל תיעוד על פי דרישה, או אם מופעל תיעוד פרופיל רציף, תמונת מצב של תיעוד פרופיל רציף.

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

‫JAX, ‏ vLLM, ‏ Tunix, ‏ TorchTPU

צילום פרוגרמטי

כשמשתמשים באיסוף פרוגרמטי, מטמיעים פקודות ליצירת פרופילים ישירות בקוד של עומס העבודה, כדי לציין במפורש מתי להתחיל ומתי להפסיק את תיעוד נתוני הפרופיל. כל הפרופילים שנכתבים בקטגוריה של Cloud Storage שצוינה בפרמטר gcs_path להרצת ה-ML, מופיעים באופן אוטומטי כסשנים של פרופילים במכונה המנוהלת של XProf בפרויקט. אפשר לראות אותם במסוףGoogle Cloud או באמצעות Google Cloud CLI.

אפשר להגדיר תיעוד פרוגרמטי באחת מהדרכים הבאות:

יצירת פרופילים על פי דרישה

יצירת פרופילים על פי דרישה מאפשרת להפעיל תיעוד של פרופיל בזמן אמת בזמן שעומס העבודה פועל. הפעלה של תיעוד לפי דרישה מתעדת פרופיל למשך הזמן שציינתם. אתם יכולים להפעיל פרופיילינג על פי דרישה ישירות בקוד של עומס העבודה או באמצעות ML Diagnostics SDK.

דרישות מוקדמות

לפני שיוצרים פרופיל לפי דרישה, צריך לבצע את שלבי ההגדרה הבאים:

  1. מפעילים שרת XProf ביציאה 9999 בעומס העבודה, כדי שיגיב לטריגרים של תיעוד לפי דרישה:

    • ישירות ב-JAX: מפעילים את ה-method‏ profiler.start_server ביציאה 9999:

      profiler.start_server(port=9999)
      
    • ‫ML Diagnostics SDK: מגדירים את on_demand_xprof=True ב-machinelearning_run כשמגדירים את הרצת ה-ML.

  2. מגדירים את סביבת המחשוב או את כלי הניהול של האשכול:

איך מתעדים פרופיל על פי דרישה

אפשר להפעיל איסוף פרופילים על פי דרישה ממסוףGoogle Cloud או מה-CLI של gcloud. כשמפעילים תיעוד, צריך לציין את הפרמטרים הבאים:

  • Duration (משך זמן): משך התיעוד, באלפיות השנייה או בשניות. משך הזמן המקסימלי שניתן לתעד תלוי במאפייני עומס העבודה ובכמות הנתונים שנכנסים למגבלת הפרופיל של 2GB.
  • יעדים: צומתי היעד שבהם רוצים לתעד את הפרופיל:
    • Google Cloud console: כל הצמתים שמריצים את עומס העבודה מאוכלסים באופן אוטומטי, ואפשר לבחור את כל הצמתים או קבוצת משנה שלהם.
    • ה-CLI של gcloud: מציגים את יעדי ה-profiler של עומס העבודה, ואז מפעילים תיעוד של כל היעדים האלה או של קבוצת משנה שלהם.
  • רמות המעקב של המכשיר, המארח ו-Python: רמת הפירוט של המעקב אחרי המכשיר, המארח ו-Python.

יצירת פרופילים רציפה במצב תמונת מצב

כשהפרופיילינג הרציף מופעל, פלטפורמת ML Diagnostics מתעדת באופן רציף פרופיל של 2GB במאגר נתונים זמני מעגלי במארחי ה-TPU. כשמפעילים תמונת מצב, הכלי "אבחון באמצעות למידת מכונה" שומר את הפרופיל האחרון בגודל 2GB מהמאגר כסשן פרופיל בקטגוריה של Cloud Storage. תמונת המצב הזו מאפשרת לבדוק את הפעילות של עומס העבודה שהובילה לבעיה. הפרופיילינג הרציף תומך רק במעקב אחר מכשירים, ולא אוסף נתוני מעקב של המארח או של Python.

דרישות מוקדמות

לפני שמתחילים ליצור פרופילים באופן רציף, צריך לוודא שהסביבה עומדת בדרישות הבאות:

  • גרסאות נתמכות של הספרייה:
    • גרסה 0.0.43 של libtpu או גרסה חדשה יותר.
    • גרסה 0.11.0 של jax או גרסה חדשה יותר.
  • הגדרת סביבת המחשוב או התזמור של האשכול:

מפעילים את שרת XProf בקוד של עומס העבודה באמצעות קריאה ל-profiler.start_server(port=9999), או מגדירים את on_demand_xprof=True ב-machinelearning_run כשמשתמשים ב-ML Diagnostics SDK.

התחלת יצירת פרופילים רציפה

אפשר להתחיל פרופיילינג רציף ישירות בקוד של עומס העבודה, באמצעות ה-CLI של gcloud או במסוף Google Cloud . אחרי ההפעלה, פרופיילינג רציף מתעד פרופילים בנפח 2GB במאגר נתונים זמני מעגלי במארחי ה-TPU שצוינו.

כשמתחילים פרופיילינג רציף באמצעות ה-CLI של gcloud או מסוףGoogle Cloud , צריך לציין את הפרמטרים הבאים:

  • ‫Targets: צומתי היעד שרוצים ליצור להם פרופיל באופן רציף:
    • Google Cloud console: כל הצמתים שמריצים את עומס העבודה מאוכלסים באופן אוטומטי, ואפשר לבחור את כל הצמתים או קבוצת משנה שלהם.
    • ‫ה-CLI של gcloud: מציגים את יעדי ה-profiler של עומס העבודה, ואז מתחילים את יצירת הפרופילים הרציפה לכל היעדים או לחלק מהם.
  • רמת המעקב במכשיר: רמת המעקב במכשיר שרוצים לתעד באופן רציף. מעקב אחר מארח ו-Python מושבת במהלך יצירת פרופילים רציפה.

אפשר להתחיל יצירת פרופילים רציפה ישירות מקוד עומס העבודה של Python, ב-CLI של gcloud או במסוף Google Cloud .

קוד של עומס עבודה ב-Python

כדי להתחיל יצירת פרופילים רציפה ישירות מקוד עומס העבודה של Python, צריך להפעיל את הפונקציה start_continuous_profiling:

from xprof.api import continuous_profiling_snapshot
continuous_profiling_snapshot.start_continuous_profiling('localhost:9999', {})

מידע נוסף זמין במאמר יצירת פרופילים של JAX באמצעות XProf.

‫CLI של gcloud

כדי להתחיל יצירת פרופילים רציפה מה-CLI של gcloud, מציגים את יעדי ה-profiler הפעילים ומתחילים יצירת פרופילים רציפה בצמתים האלה באמצעות הפקודות הבאות:

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
RUN_ID="RUN_ID"

# 1. Discover active ProfilerTarget IDs on the ML run:
TARGETS=$(gcloud alpha mldiagnostics profiler-target list \
  --machine-learning-run="${RUN_ID}" \
  --location="${LOCATION}" \
  --project="${PROJECT_ID}" \
  --format="csv[no-heading](name.basename())" | paste -sd, -)

# 2. Start continuous profiling across the target nodes:
gcloud alpha mldiagnostics machine-learning-run start-continuous-profiling \
  --machine-learning-run="${RUN_ID}" \
  --location="${LOCATION}" \
  --project="${PROJECT_ID}" \
  --targets="${TARGETS}" \
  --device-tracer-level=enabled

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫LOCATION: האזור שבו נמצאת הרצת ה-ML.
  • ‫RUN_ID: המזהה של הרצת ה-ML.
מסוףGoogle Cloud

כדי להתחיל פרופיילינג רציף במסוף Google Cloud :

  1. במסוף Google Cloud , נכנסים אל Cluster Director או אל GKE > AI/ML > Run Diagnostics ובוחרים את הרצת ה-ML.
  2. פותחים את הכרטיסייה פרופילים.
  3. בסרגל הפעולות העליון, לוחצים על התחלת יצירת פרופיל רציפה.
  4. בוחרים את הצמתים לפרופיילינג ואת רמת המעקב במכשיר, ולוחצים על Start.

אחרי שמתחילים את יצירת הפרופילים הרציפה, בבאנר Capturing continuous profiles מוצגת שעת ההתחלה של הסשן בתור Since START_TIME, ובסרגל הפעולות מוצגות האפשרויות Take snapshot ו-Stop continuous profiling.

צילום תמונת מצב

בזמן שהפרופיילינג הרציף פועל, אתם יכולים לצלם תמונת מצב כדי לשמור את הפרופיל האחרון בגודל 2GB מהמאגר המעגלי כסשן פרופיל בקטגוריה של Cloud Storage. אפשר ליצור קובץ snapshot באמצעות ה-CLI של gcloud או במסוף Google Cloud .

כשיוצרים תמונת מצב של פרופיילינג רציף, צריך לציין את הפרמטרים הבאים:

  • יעדים: כל צומתי היעד או קבוצת משנה שלהם שבהם פועל פרופיילינג רציף:
    • מסוףGoogle Cloud : כל הצמתים שהוגדרו לפרופיילינג רציף מאוכלסים באופן אוטומטי, ואפשר לבחור את כל הצמתים או קבוצת משנה שלהם.
    • ‫ה-CLI של gcloud: מציינים את כל יעדי ה-profiler שבהם פועל פרופיילינג רציף, או קבוצת משנה שלהם.
  • Profiler session name: שם לסשן של תמונת המצב שצולמה.

אפשר לצלם תמונת מצב באמצעות ה-CLI של gcloud או במסוףGoogle Cloud .

‫CLI של gcloud

כדי לתעד תמונת מצב של פרופיילינג רציף באמצעות ה-CLI של gcloud, מריצים את הפקודה הבאה:

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
RUN_ID="RUN_ID"

gcloud alpha mldiagnostics profiler-session capture "SNAPSHOT_NAME" \
  --machine-learning-run="${RUN_ID}" \
  --location="${LOCATION}" \
  --project="${PROJECT_ID}" \
  --targets="TARGET_NODES" \
  --kind=snapshot

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫LOCATION: האזור שבו נמצאת הרצת ה-ML.
  • ‫RUN_ID: המזהה של הרצת ה-ML.
  • ‫SNAPSHOT_NAME: שם לסשן הפרופיל שנוצר.
  • ‫TARGET_NODES: רשימה מופרדת בפסיקים של צומתי יעד שרוצים לתעד.
מסוףGoogle Cloud

כדי ליצור תמונת מצב של פרופיילינג רציף במסוף Google Cloud :

  1. במסוף Google Cloud , נכנסים אל Cluster Director או אל GKE > AI/ML > Run Diagnostics, בוחרים את הרצת ה-ML ופותחים את הכרטיסייה Profiles.
  2. בסרגל הפעולות העליון, לוחצים על צילום תמונת מצב.
  3. בחלונית Capture continuous profiling snapshot, מזינים שם לפרופיל, בוחרים את צומתי היעד ולוחצים על Submit.

תמונת המצב מופיעה בטבלה פרופילים. אם הקישור לא מופיע מיד, לוחצים על Refresh.

תיעוד אוטומטי של פרופילים ממעקב אחרי עומסי עבודה

בעזרת תיעוד פרופיל אוטומטי ממעקב אחרי עומסי עבודה, כלי האבחון מבוססי ה-ML מתעדים באופן אוטומטי פרופיל XProf כשמנתח הירידה בביצועים מדווח על מצב "bad", במקום להמתין שתפעילו באופן ידני תיעוד לפי דרישה אחרי שמתרחשת בעיה. אתם יכולים להגדיר תיעוד פרופילים אוטומטי כדי להפעיל תיעוד על פי דרישה, או אם מופעל תיעוד פרופילים רציף, תמונת מצב של תיעוד פרופילים רציף. התהליך הזה מאפשר לכם לאבחן את שורש הבעיה באמצעות פרופיל שנוצר בזמן האירוע.

הוראות להגדרה ודרישות מוקדמות מפורטות במאמר תיעוד פרופילים אוטומטי במסמכי התיעוד של מעקב אחרי עומסי עבודה.

ניתוח פרופיל של AI אקטיבי

ניתוח פרופילים באמצעות AI אקטיבי מנתח באופן אוטומטי פרופילים של ביצועי XProf שנלכדו בעומסי עבודה של TPU, ויוצר דוח ניתוח HTML מנתוני מעקב גולמיים של XProf. בעזרת מודלים של Gemini ב-Vertex AI, סוכן הניתוח מריץ כלי פרופיילינג של XProf, מסכם את צווארי הבקבוק בביצועים וממליץ על שינויים בקוד או בהגדרות. אחרי שמפעילים את ממשקי ה-API הנדרשים, כלי האבחון מבוסס ה-ML יוצר דוח ניתוח פרופיל של AI אקטיבי לכל פרופיל שמתועד בפלטפורמה.

ניתוח פרופילים באמצעות AI אקטיבי מתבצע בעזרת אותם כלים ויכולות בסיסיים כמו מאגר הסקילים של XProf בקוד פתוח. במקום להשתמש בקובץ הסקיל ישירות או להתקין את ה-CLI של XProf שנדרש לסקיל בקוד פתוח, כלי האבחון של ML מייבא את ההטמעות של כלי ה-XProf הבסיסי כדי שהסוכן יוכל להפעיל אותן ישירות. כתוצאה מכך, פלט הניתוח ב-ML Diagnostics מקביל להרצת מיומנויות XProf בקוד פתוח עם XProf CLI בקובצי xplane מקומיים.

דרישות מוקדמות

לפני שמשתמשים בניתוח פרופילים באמצעות AI אקטיבי, צריך לבצע את שלבי ההגדרה הבאים בפרויקט ב- Google Cloud .

הפעלת ממשקי ה-API הנדרשים

מפעילים את Vertex AI API‏ (aiplatform.googleapis.com) כדי שסוכן הניתוח יוכל להריץ מודלים של Gemini בפרויקט:

  • Google Cloud מסוף: בספריית ה-API, מפעילים את Vertex AI API.
  • ‫ה-CLI של gcloud: מריצים את הפקודה הבאה:

    gcloud services enable aiplatform.googleapis.com
    

מתן תפקידים ב-IAM

מקצים לחשבון המשתמש אחד מהתפקידים הבאים של ניהול זהויות והרשאות גישה (IAM):

  • ‫Cluster Director Viewer ‏(roles/hypercomputecluster.viewer): הרשאת קריאה בלבד למשאבים של Cluster Director ו-ML Diagnostics, כולל דוחות ניתוח שנוצרו במסוף Google Cloud בקטע Run Diagnostics > Profiles.
  • תפקיד בהתאמה אישית (hypercomputecluster.locations.analysis): כשמוסיפים את ההרשאה הזו לתפקיד בהתאמה אישית, היא מאפשרת לצפות בדוחות הניתוח שנוצרו במסוף Google Cloud בקטע Run Diagnostics > Profiles.

איך זה עובד

כשמסתיים תיעוד פרופיל פרוגרמטי, לפי דרישה, רציף או אוטומטי, משימת רקע מבודדת מריצה את תהליך העבודה הבא של ניתוח הנתונים בפרופיל XProf:

  1. איסוף נתונים נרחב: הפעלה של 15 כלי XProf במקביל כדי לאסוף תמונת מצב של תקינות המערכת, שכוללת את זמן השלב, ניצול החומרה, השימוש בזיכרון, גבולות ה-roofline, הפעולות האיטיות ביותר וחוסר היעילות של המהדר. בשלב הזה, זמני הריצה מנורמלים לפי שלב אימון, ופעולות תקינות מופרדות מצווארי בקבוק.
  2. בדיקה ממוקדת באמצעות AI: בדיקה של תמונת המצב שנאספה לגבי הבריאות. אם לעומס העבודה יש ניצול גבוה של משאבי המחשוב, תקורה נמוכה של תקשורת וזמן חוסר פעילות, וסיכון נמוך לחריגה מהזיכרון, הסוכן מדלג על קריאות API לכלי נוספות ויוצר דוח OPTIMAL. אם מזוהים צווארי בקבוק, הנציג יוצר השערות ומריץ עד ארבע בדיקות מעקב ממוקדות באמצעות כלים נוספים של XProf כדי לבדוק את הפעולות שמסביב בתרשים החישוב, עיכובים בציר הזמן במארחים וליבות בהתאמה אישית.
  3. יצירת דוחות: שילוב המדדים מ-XProf עם ניתוח שורש הבעיה והתיקונים המומלצים של סוכן ה-AI. הדוח שנוצר ב-summary.html נשמר בקטגוריה של Cloud Storage ומוצג במסוףGoogle Cloud בקטע Run Diagnostics > Profiles.

תהליך העבודה הזה שומר על הפרטיות של נתוני הפרופיל והניתוח בפרויקט. מעקבי פרופילים גולמיים ודוחות HTML שנוצרו מאוחסנים בקטגוריה של Cloud Storage, וכל הקריאות למודל ה-AI עוברות דרך Vertex AI בפרויקט ב- Google Cloud .

כלי XProf

בטבלה הבאה מתוארים כלי ה-XProf שהסוכן מריץ במהלך הניתוח:

קטגוריה כלי XProf תיאור
סקירה כללית של עומס העבודה ותזמון השלבים get_xprof_overview, get_step_trace, get_kpi_metrics, get_device_information, get_hosts, get_utilization_viewer, get_smart_suggestions

הכלים האלה פועלים במהלך איסוף נתונים רחב, והכלי get_hosts פועל גם במהלך חקירת AI ממוקדת, כדי לבדוק את הדברים הבאים:

  • סוג החומרה, מספר המארחים והשבבים ומגבלות החומרה המקסימליות
  • זמן שלב ממוצע ופירוט של זמן העיבוד, תקשורת הרשת וזמן חוסר הפעילות של המארח או של טעינת הנתונים
  • יחידת כפל מטריצות (MXU),‏ TensorCore, ניצול רוחב הפס של הזיכרון והמלצות מובנות של XProf
‫Roofline והפעולות האיטיות ביותר get_roofline_model, get_hlo_op_profile

הכלים האלה פועלים במהלך איסוף נתונים נרחב וחקירה ממוקדת של AI כדי לבדוק את הדברים הבאים:

  • אם עומס העבודה או פעולות ספציפיות מוגבלים על ידי רוחב הפס של המחשוב או הזיכרון
  • הזמן שהוקדש לכל סוג פעולה, כמו כפל מטריצות, קשב ופעולות קולקטיביות, וקישורים לשורות בקוד המקור של Python
גלאים של חוסר יעילות בקומפיילר ‫detect_layout_mismatch_copies, detect_unfused_reshapes, detect_unnecessary_convert_reduce, list_hlo_modules

הכלים האלה פועלים במהלך איסוף נתונים נרחב כדי לבדוק את הדברים הבאים:

  • עותקי נתונים נוספים שנוצרו בגלל חוסר התאמה בפריסת הטנזור בין הפעולות
  • פעולות reshape,‏ transpose או copy לא ממוזגות שמבזבזות רוחב פס של הזיכרון
  • המרות דיוק מיותרות, כמו bf16 ל-f32, בתוך הפחתות
זיכרון וסיכון ל-OOM get_memory_profile, get_peak_allocations

הכלים האלה פועלים במהלך איסוף נתונים נרחב כדי לבדוק את הדברים הבאים:

  • השימוש המקסימלי בזיכרון ברוחב פס גבוה (HBM) במכשיר בהשוואה לקיבולת הכוללת ולפרגמנטציה של הזיכרון
  • אם הסיכון לחריגה מהזיכרון (OOM) הוא LOW, MEDIUM או HIGH, והטנזורים הגדולים ביותר בזיכרון
סייר תרשימי החישובים get_hlo_neighborhood

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

ציר הזמן ותזמון הליבה (kernel) aggregate_xplane_events, get_kernel_stats

הכלים האלה פועלים במהלך חקירת AI ממוקדת כדי לבדוק את הדברים הבאים:

  • סטטיסטיקות של ציר הזמן במארחים שונים כדי להבחין בין עיכובים בטעינת הנתונים לבין עיכובים בתקשורת ברשת
  • זמן הביצוע ומספר הקריאות לליבות של מכשירים ספציפיים
כלי מותאם אישית לניתוח ביצועים של ליבה llo_load, llo_query

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

דוח ניתוח פרופיל מ-AI

כשהניתוח של פרופיל מתועד מסתיים, כלי האבחון של ML שומר את דוח ה-summary.html שנוצר בקטגוריה של Cloud Storage ומציג אותו במסוף Google Cloud בקטע Run Diagnostics > Profiles. אתם יכולים להשתמש בדוח הזה כדי לבדוק את התקינות הכוללת של עומס העבודה, לבחון את צווארי הבקבוק העיקריים בביצועים ולזהות את השינויים המומלצים בקוד או בהגדרות.

כל דוח שנוצר כולל את הקטעים הבאים:

  • סיכום הניתוח: הסטטוס הכולל של OPTIMAL או NEEDS_ATTENTION, סיכום של 3 עד 5 משפטים ומדדי ביצועים עיקריים כמו זמן השלב, השימוש בזיכרון ויעילות ה-Roofline.
  • צווארי בקבוק בעדיפות גבוהה ותיקונים שאפשר לבצע: רשימת ממצאים לפי סדר עדיפות, מ-P0 לבעיות קריטיות ועד P2 לבעיות קלות. כל ממצא כולל:
    • מה קורה: הסבר על שורש הבעיה, כולל צורות ופריסות של טנזורים, אם רלוונטי.
    • הוכחה: ציטוטים ישירים של המדדים והפעולות של XProf שבהם נמדד צוואר הבקבוק.
    • ההשפעה הצפויה והתיקון: משך הזמן או כמות הזיכרון שמושפעים, בשילוב עם שינויים מומלצים ב-framework, ב-sharding או בקומפיילר.
  • ניתוח מפורט של כלי XProf: מספק נתונים תומכים ופירוט מהניתוחים הבאים:
    • ניתוח Roofline
    • ניתוח זיכרון
    • ניתוח פרופיל הפעולה של High-Level Optimizer‏ (HLO)
    • נתונים סטטיסטיים של הפעלת הליבה (kernel)
    • ניתוח של ליבה מותאמת אישית ושל אופטימיזציה ברמה נמוכה