מדדי 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.

פעילות SM ותפוסה של SM הם מדדים של GPM. המדדים האלה לא נתמכים במכשירי P4 ו-P100, והם נתמכים כברירת מחדל במכשירי 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 מגה-הרץ המהירות המקסימלית של שעון הזיכרון.

מדדי 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. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP64 של ה-GPU, שמטפלות בפעולות סקלריות של ערכים בנקודה צפה של 64 ביט.
FP32 Pipe Activity ניצול device_fp32_pipe_activity ערכים באחוזים אחוז הזמן שבו נעשה שימוש בצינור ה-FP32 Core. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP32 של ה-GPU, שמטפלות בפעולות סקלריות של ערכים בנקודה צפה של 32 ביט.
FP16 Pipe Activity ניצול 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 nvlink device_read מבי-בייט לשנייה שיעור קריאת הנתונים על ידי ה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין GPU ל-GPU, זה לא רלוונטי אם לכל עובד יש רק GPU אחד.
העברה של NVLink nvlink device_transfer מבי-בייט לשנייה קצב העברת הנתונים מה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין GPU ל-GPU, זה לא רלוונטי אם לכל עובד יש רק GPU אחד.

איסוף מדדים של GPM

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

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

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

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

  • 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 לפי מכשיר