מדדי GPU ב-Dataflow

בדף הזה מפורטים מדדי ה-GPU שנתמכים ב-Dataflow. אפשר להשתמש במדדים האלה כדי לעקוב אחרי התקינות והשימוש ב-GPU. רוב המדדים נתמכים בכל משימות Dataflow, אבל חלק מהמדדים דורשים הגדרה נוספת עבור הרבה דגמי GPU.

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

מדדי GPU נאספים רק על ידי משימות Dataflow שביקשו במפורש להשתמש ב-GPU. מידע נוסף מופיע במאמר בנושא תמיכה ב-GPU.

סקירה כללית

דוחות Dataflow כוללים מדדים רבים של GPU, אבל המדדים העיקריים הם זיכרון כולל וזיכרון בשימוש, ששווים למדדי RAM, ופעילות של מעבד מרובה ליבות (SM) ושימוש במעבד מרובה ליבות (SM), שהם המדדים הכי דומים למדדי CPU ב-Dataflow. מדדים נוספים מפורטים במאמרים בנושא מדדים נפוצים ומדדים של GPM.

כברירת מחדל, המערכת מדווחת על הזיכרון הכולל והזיכרון שבשימוש של כל מכשיר GPU במשימה. בממשק המעקב של Dataflow, הנתונים האלה מופיעים בקטע Basic GPU utilization (שימוש בסיסי ב-GPU). המדדים האלה שונים מהמדד 'אחוז הגישה לזיכרון', שמופיע גם הוא בקטע 'מדדי GPU בסיסיים', אבל הוא מציג את אחוז הזמן שבו הייתה גישה לזיכרון של מכשיר ה-GPU.

המדדים 'פעילות של מנהל התנועה' ו'תפוסה של מנהל התנועה' הם מדדים של GPM. אין תמיכה במדדים האלה במכשירי P4, ויש תמיכה בהם כברירת מחדל במכשירי H100 ומעלה. בכל המכשירים האחרים, כמו מכשירי T4 ו-L4, נדרשת הגדרה נוספת. במאמר GPM collection מוסבר איך להפעיל אותם. אם המדדים האלה נאספים במהלך העבודה, הם מופיעים בקטע 'GPU GPM utilization' (ניצול GPU GPM) בממשק המעקב של Dataflow.

מידע בסיסי על מדדי GPU ב-Dataflow

כל מדדי ה-GPU נשלחים על ידי עובדי Dataflow אל Cloud Monitoring. מדדים לכל מכשיר אפשר למצוא בקטע dataflow.googleapis.com/worker/accelerator/gpu. כל המדדים האלה מקובצים בקטגוריות כלליות, כמו שימוש או טמפרטורה, ולכולם יש את התוויות הבאות:

  • ‫device_uuid: מזהה באופן ייחודי את מכשיר ה-GPU, ללא קשר לעובד או לצינור.
  • ‫device_number: המספר שמוקצה למכשיר בתהליך העבודה בטווח [0, N), כאשר N הוא מספר מכשירי ה-GPU בתהליך העבודה.
  • ‫device_model: הדגם של ה-GPU, כמו Tesla T4.

הערכים של device_uuid ושל device_model לא תלויים בעובד ותמיד זהים עבור אותו מכשיר פיזי. ה-device_number קשור לאופן שבו הוא מזוהה בעובד הזה.

מדדי GPU נפוצים ל-Dataflow

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

dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME

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

מדד קטגוריה שם יחידה תיאור
אחוז הליבה הפעילה ניצול device_kernel_runtime ערכים באחוזים אחוז הזמן שבו לפחות ליבת GPU אחת פעלה. הנתון הזה רק מראה שה-GPU היה בשימוש, ולא אם משאבי העיבוד שלו נמצאים בשימוש יעיל.
אחוז הגישה לזיכרון ניצול device_memory_access ערכים באחוזים אחוז הזמן שבו הזיכרון של המכשיר היה בשימוש לקריאה או לכתיבה. הנתון הזה מראה רק שהייתה גישה לזיכרון, ולא את אחוז הזיכרון שבשימוש.
מגבלת זיכרון זיכרון device_limit MiB נפח הזיכרון שזמין ב-GPU.
שימוש בזיכרון זיכרון device_usage MiB נפח הזיכרון שנמצא בשימוש על ידי ה-GPU. הנתון הזה כולל גם את הזיכרון שמשמש את עבודת Dataflow וגם את הזיכרון ששמור לקושחה, ולכן צפוי שימוש מסוים גם אם עדיין לא הועבר זיכרון ל-GPU.
שגיאות ECC זמניות שניתנות לתיקון זיכרון/ecc/זיכרון נדיף device_correctable_total ספירה מספר שגיאות ה-ECC (תיקון שגיאות) שניתנות לתיקון (שגיאות של ביט אחד) מאז הטעינה האחרונה של מנהל ההתקן. ב-Dataflow, טעינת מנהל ההתקן מתרחשת רק בהפעלה של העובד, ולכן היא שוות ערך לשגיאות במהלך משך החיים של העובד.
שגיאות ECC לא יציבות שלא ניתן לתקן זיכרון/ecc/זיכרון נדיף device_uncorrectable_total ספירה מספר שגיאות ה-ECC שלא ניתן לתקן (שגיאות של שני ביטים) מאז הטעינה האחרונה של מנהל ההתקן. ב-Dataflow, טעינת מנהל ההתקן מתרחשת רק בהפעלה של העובד, ולכן היא שוות ערך לשגיאות במהלך משך החיים של העובד.
מגבלת הספק כוח device_limit ואט הספק מקסימלי שהמכשיר מוגדר להשתמש בו. ‫Dataflow לא משנה את ברירת המחדל הזו.
צריכת חשמל כוח device_usage ואט כמות החשמל שהמכשיר צורך.
הטמפרטורה הנוכחית טמפרטורה device_current צלזיוס הטמפרטורה הנוכחית של ה-GPU.
טמפרטורת הפעלה מקסימלית טמפרטורה device_max_op צלזיוס הטמפרטורה שמתחתיה ה-GPU צריך להישאר. אם הטמפרטורה הנוכחית גבוהה מהטמפרטורה הזו, מנהלי ההתקנים של ה-GPU ינסו לקרר את ה-GPU עד שהטמפרטורה תהיה נמוכה מהטמפרטורה הזו. ‫Dataflow לא שולט בזה.
טמפרטורה להאטה טמפרטורה device_slowdown צלזיוס הטמפרטורה שבה יתחיל ויסות המהירות של ה-GPU. אם הטמפרטורה הנוכחית גבוהה יותר, צפו לירידה בביצועים עד שהמכשיר יתקרר. אין ל-Dataflow שליטה בזה.
טמפרטורת כיבוי טמפרטורה device_shutdown צלזיוס הטמפרטורה שבה ה-GPU יכבה. אם הטמפרטורה הנוכחית גבוהה מהטמפרטורה הזו, המכשיר לא יהיה זמין. ‫Dataflow לא שולט בטמפרטורה הזו, והוא גם לא מנסה באופן פעיל לשחזר יחידות GPU שהושבתו בגלל טמפרטורה גבוהה מדי.
השעון הנוכחי של SM שעון device_sm_current מגה-הרץ המהירות הנוכחית של שעון ה-SM. אם הטמפרטורה חורגת מסף ההאטה, יכול להיות שהמהירות תרד כחלק מהגבלת מהירות שקשורה לקירור.
מהירות שעון מקסימלית של SM שעון device_sm_max מגה-הרץ המהירות המקסימלית של שעון ה-SM.
השעון הנוכחי של הזיכרון שעון device_memory_current מגה-הרץ המהירות הנוכחית של שעון הזיכרון. אם הטמפרטורה חורגת מסף ההאטה, יכול להיות שהמהירות תרד כחלק מהגבלת מהירות שקשורה לקירור.
מהירות שעון מקסימלית של הזיכרון שעון device_memory_max MHz המהירות המקסימלית של שעון הזיכרון.

מדדי GPM ל-Dataflow

‫Dataflow מציע תמיכה מסוימת במדדים של GPM. רמת התמיכה תלויה בדגם של ה-GPU ובהגדרות של המאיץ. כברירת מחדל, רוב משימות ה-Dataflow עם מעבדי GPU ידרשו הגדרה נוספת.

מדדי GPM כפופים לאותם עקרונות בסיסיים כמו מדדים נפוצים.

מדדים נתמכים

בדומה למדדים נפוצים, נתיבי מדדים של GPM הם בפורמט הבא:

dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME

חלק מהמדדים האלה נמצאים באותה קטגוריה כמו מדדים נפוצים.

מדד קטגוריה שם יחידה תיאור
פעילות SM ניצול device_sm_activity ערכים באחוזים אחוז הזמן שבו עיוות היה פעיל ב-SM, בממוצע בכל ה-SM במכשיר. המדד הזה דומה לאחוז הפעילות של ליבת המערכת, אבל הוא מספק תמונה מפורטת יותר שמראה בצורה טובה יותר אם משאבי ה-GPU מנוצלים ביעילות. חברת NVIDIA מגדירה שימוש יעיל כשימוש של 80% ומעלה, ושימוש לא יעיל כשימוש של 50% ומטה.
SM Occupancy ניצול device_sm_occupancy ערכים באחוזים אחוז העיוותים הפעילים במכשיר ביחס למקסימום. משימות שמוגבלות על ידי הזיכרון צריכות להיות בעלות שיעור תפוסה גבוה יותר ממשימות שמוגבלות על ידי המחשוב, והמדד Memory Access Percentage יכול לספק תובנות לגבי זה. פרטים נוספים זמינים במסמכי התיעוד של NVIDIA בנושא תפוסה שהושגה.
Tensor Pipe Activity ניצול device_tensor_pipe_activity ערכים באחוזים אחוז הזמן שבו נעשה שימוש בצינור Tensor Core. ערכים גבוהים יותר מציינים שימוש רב יותר ב-Tensor Cores של ה-GPU, שחשובים לפעולות מטריצה.
FP64 Pipe Activity ניצול device_fp64_pipe_activity ערכים באחוזים אחוז הזמן שבו נעשה שימוש בצינור FP64 Core. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP64 של ה-GPU, שמטפלות בפעולות סקלריות של ערכים בנקודה צפה של 64 ביט.
FP32 Pipe Activity ניצול device_fp32_pipe_activity ערכים באחוזים אחוז הזמן שבו נעשה שימוש בצינור FP32 Core. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP32 של ה-GPU, שמטפלות בפעולות סקלריות של ערכי נקודה צפה של 32 ביט.
פעילות בצינור FP16 ניצול device_fp16_pipe_activity ערכים באחוזים אחוז הזמן שבו נעשה שימוש בצינור FP16. בניגוד ל-FP64 ול-FP32, שמשויכים לליבות CUDA של 64 ביט ו-32 ביט בהתאמה, ‏ FP16 משויך לניצול היכולות של ליבות Tensor עם דיוק חצי.
קריאת PCIe pcie device_read מבי-בייט לשנייה קצב קריאת הנתונים על ידי ה-GPU ממכונת ה-VM המארחת דרך PCIe.
העברה באמצעות PCIe pcie device_transfer מבי-בייט לשנייה קצב העברת הנתונים מה-GPU למכונה הווירטואלית המארחת דרך PCIe.
NVLink Read nvlink device_read מבי-בייט לשנייה שיעור קריאת הנתונים על ידי ה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין מעבדים גרפיים, זה לא רלוונטי אם לכל עובד יש רק מעבד גרפי אחד.
העברה ב-NVLink nvlink device_transfer מבי-בייט לשנייה קצב העברת הנתונים מה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין מעבדים גרפיים, זה לא רלוונטי אם לכל עובד יש רק מעבד גרפי אחד.

איסוף מדדים של Google Play Music

כל עבודת Dataflow עם מעבדי GPU שמשתמשים בארכיטקטורת Hopper או בגרסה מתקדמת יותר (למשל H100, ‏ H100 Mega) אוספת מדדי GPM כברירת מחדל, כך שלא נדרשת הגדרה נוספת. עם זאת, במשימות שמשתמשות בארכיטקטורת Pascal או בארכיטקטורה מוקדמת יותר (כמו P4), אין תמיכה במדדים האלה.

בכל שאר המודלים, כדי לאסוף את המדדים האלה צריך להוסיף את install-gke-dcgm-exporter להגדרת התצורה של מאיץ העובדים. לדוגמה:

--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"

הדגל הזה מתקין ב-GKE גרסה מקבילה מנוהלת של NVIDIA DCGM-exporter. האפשרות הזו נתמכת בסוגים הבאים:

  • nvidia-l4
  • nvidia-tesla-a100
  • nvidia-a100-80gb
  • ‫nvidia-tesla-t4 (יצא משימוש)
  • nvidia-tesla-v100

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

מדדים מדור קודם

ב-Monitoring, יכול להיות שיוצגו שני מדדים בשמות dataflow.googleapis.com/job/gpu_utilization ו-dataflow.googleapis.com/job/gpu_memory_utilization. המדדים האלה דומים לKernel Running Percentage ול-Memory Access Percentage בהתאמה, אבל העובדים מדווחים עליהם על ידי חישוב ממוצע של מעבדי ה-GPU בעובד. מומלץ להשתמש במקבילות לכל מכשיר, במיוחד אם העובדים מוגדרים עם יותר מ-GPU אחד.

ממשק המשתמש של Dataflow

אם למשימת Dataflow יש מעבדי GPU שמצורפים לעובדים שלה, המדדים אמורים להופיע בכרטיסייה Job Metrics (מדדי המשימה) בדף המשימה, בקטגוריה Dataflow ML (למידת מכונה של Dataflow). הקטגוריה הזו לא מופיעה במשימות ללא יחידות GPU, והטעינה שלה אורכת כמה שניות, כי קודם המערכת מוודאת שהמדדים רלוונטיים למשימה.

תת-הקטגוריות הבאות מופיעות בקטע 'Dataflow ML':

קטגוריית משנה מדדים תנאים
ניצול GPU בסיסי אחוז הפעילות של ליבת המערכת
אחוז הגישה לזיכרון
זיכרון כולל/בשימוש
כל המשימות של GPU
ביצועי ה-GPU צריכת חשמל/מגבלה
קריאת טמפרטורה/מגבלות
שעון SM נוכחי/מקסימלי
שעון זיכרון נוכחי/מקסימלי
שגיאות ECC זמניות שניתנות לתיקון/שגיאות ECC זמניות שלא ניתן לתקן
כל המשימות של GPU
ניצול GPU GPM פעילות SM
תפוסה של SM
פעילות של צינור CUDA/Tensor
המדדים של GPM הופעלו
GPU GPM I/O קריאה/העברה של PCIe
קריאה/העברה של NVLink
המדדים של GPM הופעלו
שימוש ב-GPU בגרסה קודמת מדדים מדור קודם כל המשימות של GPU

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

דוגמה לסינון מדדי GPU לפי מכשיר