מעקב באמצעות tpu-info CLI

ה-CLI של tpu-info הוא כלי לזיהוי מכשירי Cloud TPU ולקריאת מדדי זמן ריצה מהספרייה libtpu, כולל שימוש בזיכרון ומחזור פעילות. הוא תומך בתמונות מצב סטטיות וחד-פעמיות, ובסטרימינג בשידור חי למעקב רציף אחרי המדדים.

התקנה

מתקינים את הגרסה האחרונה באמצעות pip:

pip install tpu-info

אפשר גם להתקין את tpu-info מהמקור:

pip install git+https://github.com/google/cloud-accelerator-diagnostics/#subdirectory=tpu_info

אם כבר התקנתם גרסה של tpu-info, ודאו שהיא תואמת לסביבה שלכם ושהיא לא חסרה מדדים ותכונות. מידע נוסף זמין במאמר תכונות או מדדים חסרים.

גישה למדדים רגילים של LibTPU באמצעות ה-CLI

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

tpu-info

הפלט אמור להיראות כך:

TPU Chips

| Chip         | Type         | Devices | PID    |
|--------------|--------------|---------|--------|
| /dev/vfio/0  | TPU v6e chip | 1       | 1022   |
| /dev/vfio/1  | TPU v6e chip | 1       | 1022   |
| /dev/vfio/2  | TPU v6e chip | 1       | 1022   |
| /dev/vfio/3  | TPU v6e chip | 1       | 1022   |

TPU Runtime Utilization

| Chip   | HBM Usage (GiB)          | Duty cycle |
|--------|--------------------------|------------|
| 8      | 17.26 GiB / 31.25 GiB    |    100.00% |
| 9      |  9.26 GiB / 31.25 GiB    |    100.00% |
| 12     |  9.26 GiB / 31.25 GiB    |    100.00% |
| 13     |  9.26 GiB / 31.25 GiB    |    100.00% |

TensorCore Utilization

| Core ID | TensorCore Utilization |
|---------|------------------------|
| 0       | 15.17%                 |
| 1       | 14.62%                 |
| 2       | 14.68%                 |
| 3       | 15.14%                 |

TPU Buffer Transfer Latency

| Buffer Size  | P50          | P90          | P95          | P999         |
|--------------|--------------|--------------|--------------|--------------|
| 8MB+         | 18264.03 us  | 33263.06 us  | 35990.98 us  | 53997.32 us  |

TPU Inbound Buffer Transfer Latency

| Buffer Size  | P50          | P90          | P95          | P999         |
|--------------|--------------|--------------|--------------|--------------|
| 8MB+         | 18316.95 us  | 32857.03 us  | 36501.59 us  | 58854.54 us  |

TPU Host Compute Latency

| Buffer Size  | P50          | P90          | P95          | P999         |
|--------------|--------------|--------------|--------------|--------------|
| 8MB+         | 678.33 us    | 2611.93 us   | 5258.30 us   | 11083.23 us  |

TPU gRPC TCP Minimum RTT

| P50      | P90      | P95      | P999     |
|----------|----------|----------|----------|
| 35.99 us | 52.15 us | 53.83 us | 55.51 us |

TPU gRPC TCP Delivery Rate

| P50           | P90           | P95           | P999          |
|---------------|---------------|---------------|---------------|
| 12305.96 Mbps | 18367.10 Mbps | 24872.11 Mbps | 44841.55 Mbps |

Usage

כדי להציג את נתוני הניצול הנוכחיים של ה-TPU, צריך להפעיל ב-tpu-info עומס עבודה של TPU עם מסגרת ML נתמכת, כמו JAX או PyTorch. אפשר להריץ את הפקודה tpu-info במסוף עם הדגלים הבאים.

תהליך

משתמשים בדגל --process או -p כדי להציג מידע על התהליכים שפועלים ב-TPU.

$ tpu-info --process

הפלט אמור להיראות כך:

TPU Process Info

| Chip        | PID    | Process Name |
|-------------|--------|--------------|
| /dev/vfio/0 | 799657 | python3      |
| /dev/vfio/1 | 799657 | python3      |
| /dev/vfio/2 | 799657 | python3      |
| /dev/vfio/3 | 799657 | python3      |
| /dev/vfio/4 | 799657 | python3      |
| /dev/vfio/5 | 799657 | python3      |
| /dev/vfio/6 | 799657 | python3      |
| /dev/vfio/7 | 799657 | python3      |

מדד

משתמשים בדגל --metric כדי להציג מדדים ספציפיים. אפשר לציין כמה מדדים, מופרדים ברווחים. הנה כמה מדדים נפוצים שנתמכים:

  • hbm_usage
  • duty_cycle_percent
  • tensorcore_utilization
  • buffer_transfer_latency
  • host_to_device_transfer_latency
  • device_to_host_transfer_latency
  • collective_e2e_latency
$ tpu-info --metric duty_cycle_percent hbm_usage

הפלט אמור להיראות כך:

TPU Duty Cycle

| Core ID | Duty Cycle (%) |
|---------|----------------|
| 0       | 100.00%        |
| 1       | 100.00%        |
| 2       | 100.00%        |
| 3       | 100.00%        |
| 4       | 100.00%        |
| 5       | 100.00%        |
| 6       | 100.00%        |
| 7       | 100.00%        |

TPU HBM Usage

| Chip   | HBM Usage (GiB)       |
|--------|-----------------------|
| 0      | 29.50 GiB / 31.25 GiB |
| 1      | 21.50 GiB / 31.25 GiB |
| 2      | 21.50 GiB / 31.25 GiB |
| 3      | 21.50 GiB / 31.25 GiB |
| 4      | 21.50 GiB / 31.25 GiB |
| 5      | 21.50 GiB / 31.25 GiB |
| 6      | 21.50 GiB / 31.25 GiB |
| 7      | 21.50 GiB / 31.25 GiB |

מדדי רשימות

אפשר להשתמש בדגל --list_metrics כדי להציג את כל המדדים הנתמכים שאפשר לבקש באמצעות הדגל --metric.

$ tpu-info --list_metrics

הפלט אמור להיראות כך:

╭─ Supported Metrics ─────────────────────────────────────────────────────────────────────────────╮
│         grpc_tcp_min_rtt                                                                        │
│         host_to_device_transfer_latency                                                         │
│         grpc_tcp_delivery_rate                                                                  │
│         inbound_buffer_transfer_latency                                                         │
│         host_compute_latency                                                                    │
│         buffer_transfer_latency                                                                 │
│         collective_e2e_latency                                                                  │
│         device_to_host_transfer_latency                                                         │
│         hbm_usage                                                                               │
│         duty_cycle_percent                                                                      │
│         tensorcore_utilization                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────╯

מדדי השידור

מצב הסטרימינג מרענן ומציג מדי פעם נתונים סטטיסטיים עדכניים של ניצול המשאבים. כדי להעביר בסטרימינג את המדדים של LibTPU, מוסיפים את הדגל --streaming לפקודה tpu-info. משתמשים בדגל --rate כדי לשלוט בקצב הסטרימינג בשניות.

כדי להעביר בסטרימינג את מדדי ברירת המחדל של tpu-info באמצעות ה-CLI, משתמשים בפקודה הבאה:

# Refresh metrics every 2 seconds
tpu-info --streaming --rate 2

הפלט אמור להיראות כך:

Refresh rate: 0.1s
Last update: 2025-07-24 11:00:59 UTC
Libtpu version: 0.0.19.dev20250721+nightly
Accelerator type: v6e

TPU Chips

| Chip         | Type         | Devices | PID    |
|--------------|--------------|---------|--------|
| /dev/vfio/0  | TPU v6e chip | 1       | 1022   |
| /dev/vfio/1  | TPU v6e chip | 1       | 1022   |
| /dev/vfio/2  | TPU v6e chip | 1       | 1022   |
| /dev/vfio/3  | TPU v6e chip | 1       | 1022   |

TPU Runtime Utilization

| Chip   | HBM Usage (GiB)          | Duty cycle |
|--------|--------------------------|------------|
| 8      | 17.26 GiB / 31.25 GiB    |    100.00% |
| 9      |  9.26 GiB / 31.25 GiB    |    100.00% |
| 12     |  9.26 GiB / 31.25 GiB    |    100.00% |
| 13     |  9.26 GiB / 31.25 GiB    |    100.00% |

TensorCore Utilization

| Core ID | TensorCore Utilization |
|---------|------------------------|
| 0       | 15.17%                 |
| 1       | 14.62%                 |
| 2       | 14.68%                 |
| 3       | 15.14%                 |

TPU Buffer Transfer Latency

| Buffer Size  | P50          | P90          | P95          | P999         |
|--------------|--------------|--------------|--------------|--------------|
| 8MB+         | 18264.03 us  | 33263.06 us  | 35990.98 us  | 53997.32 us  |

TPU Inbound Buffer Transfer Latency

| Buffer Size  | P50          | P90          | P95          | P999         |
|--------------|--------------|--------------|--------------|--------------|
| 8MB+         | 18316.95 us  | 32857.03 us  | 36501.59 us  | 58854.54 us  |

TPU Host Compute Latency

| Buffer Size  | P50          | P90          | P95          | P999         |
|--------------|--------------|--------------|--------------|--------------|
| 8MB+         | 678.33 us    | 2611.93 us   | 5258.30 us   | 11083.23 us  |

TPU gRPC TCP Minimum RTT

| P50      | P90      | P95      | P999     |
|----------|----------|----------|----------|
| 35.99 us | 52.15 us | 53.83 us | 55.51 us |

TPU gRPC TCP Delivery Rate

| P50           | P90           | P95           | P999          |
|---------------|---------------|---------------|---------------|
| 12305.96 Mbps | 18367.10 Mbps | 24872.11 Mbps | 44841.55 Mbps |

מדדי TPU-Z

‫TPU-Z הוא כלי טלמטריה וניפוי באגים ליחידות TPU. הוא מספק מידע מפורט על סטטוס זמן הריצה של כל ליבות ה-TPU שמחוברות למארח. הפונקציונליות הזו מסופקת באמצעות המודול tpuz, שהוא חלק מהמודול libtpu.sdk ב-Python SDK של libtpu. המודול מספק תמונת מצב של כל ליבה.

השימוש העיקרי ב-TPU-Z הוא לאבחן מצבים של חוסר תגובה או מבוי סתום בעומסי עבודה מבוזרים של TPU. אתם יכולים לשלוח שאילתות לשירות TPU-Z במארחים כדי לתעד את המצב של כל ליבה, ולהשוות בין מוני התוכניות, מיקומי ה-HLO ומזהי ההרצה בכל הליבות כדי לזהות חריגות.

כדי להציג את המדדים של TPU-Z באמצעות ה-CLI, משתמשים בפקודה הבאה:

tpu-info --metric core_state
tpu-info --metric sequencer_state
tpu-info --metric sequencer_state_detailed
tpu-info --metric queued_program

הפלט צריך לכלול את הטבלאות core_state,‏ sequencer_state,‏ sequencer_state_detailed ו-queued_programs.

מידע על מצב הליבה

בטבלה Core State Information (core_state) מופיע מידע על הליבות של שבב נתון. לכל שבב של TPU יש ליבה אחת או שתיים, בהתאם לדור.

שדה תיאור ערכים לדוגמה
מזהה הצ'יפ מזהה השבב שהליבה שייכת אליו. 0
מזהה ליבה גלובלי המזהה הייחודי של הליבה בכל מערכת ה-TPU. 1
סוג הליבה סוג ליבת ה-TPU. "TPU_CORE_TYPE_TENSOR_CORE"
"TPU_CORE_TYPE_SPARSE_CORE"
שרת xdb פועל מציין אם שרת Accelerator Debugger‏ (XDB) פועל בליבת TPU ספציפית. True

הפלט אמור להיראות כמו בטבלה הבאה:

Core Information

| Chip ID | Global Core ID | Core Type                   | xdb Server |
|---------|----------------|-----------------------------|------------|
| 0       | 0              | TPU_CORE_TYPE_TENSOR_CORE   | True       |
| 0       | 1              | TPU_CORE_TYPE_SPARSE_CORE   | True       |
| 1       | 2              | TPU_CORE_TYPE_SPARSE_CORE   | False      |
| 1       | 3              | TPU_CORE_TYPE_SPARSE_CORE   | False      |
| 2       | 4              | TPU_CORE_TYPE_SPARSE_CORE   | True       |
| 2       | 5              | TPU_CORE_TYPE_SPARSE_CORE   | True       |

מידע על מצב ה-Sequencer

בטבלה Sequencer State Information (sequencer_state)‎ מופיע מידע על מצב הרצף בליבה. רצף הוא יחידת בקרה בתוך ליבת TPU שאחראית על אחזור, פענוח ותזמור של ביצוע ההוראות. יכולים להיות כמה רצפים לליבה אחת.

מדד תיאור ערכים לדוגמה
מזהה הצ'יפ מזהה השבב שהליבה שייכת אליו. 0
מזהה ליבה גלובלי המזהה הייחודי של הליבה בכל מערכת ה-TPU. 1
מונה תוכנית כתובת הזיכרון של ההוראה שהרצף צריך לבצע. 15390
Tracemark מזהה ההפעלה של התוכנית הנוכחית או האחרונה. השדה הזה לא מופיע אם הוא לא רלוונטי. 2147483647
מזהה תוכנית המזהה שמשויך למופע ספציפי של תוכנית שמופעלת להרצה בליבת TPU. 3230481660274331500
מזהה ההרצה מזהה ההרצה שמשויך לתוכנית. 1150
סוג הרצף סוג הסיקוונסר. "TPU_SEQUENCER_TYPE_SPARSE_CORE_SEQUENCER"
"TPU_SEQUENCER_TYPE_SPARSE_CORE_TILE_EXECUTE_CORE_SEQUENCER"

הפלט אמור להיראות כמו בטבלה הבאה:

Sequencer Info

| Chip ID | Global Core | Program Counter:Tag | Tracemark  | Program ID | Run ID | Sequence Type                 |
|---------|-------------|---------------------|------------|------------|--------|-------------------------------|
| 0       | 0           | 760:1               | 2147483647 | -5.75e17   | 1150   | TPU_SEQ_SPARSE_CORE_SEQUENCER |
| 0       | 1           | 9:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 0       | 1           | 0:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 1       | 2           | 9:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 1       | 3           | 0:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 1       | 3           | 9:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 1       | 3           | 0:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 2       | 4           | 9:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 2       | 4           | 0:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 2       | 4           | 9:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 2       | 5           | 9:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |
| 2       | 5           | 0:0                 | 0          | -1         | -1     | TPU_SEQ_SPARSE_TILE_EXECUTE   |

מידע על מצב הרצף (מפורט)

הטבלה "מידע מפורט על מצב הרצף" (sequencer_state_detailed) כוללת את כל המידע מהטבלה "מידע על מצב הרצף" (sequencer_state), וגם את המדדים הנוספים הבאים:

מדד תיאור ערכים לדוגמה
פרטי HLO מידע מפורט על HLO, אם זמין. []
מזהה ההרצה של התוכנית בתור מזהה ההפעלה של התוכנית הזו בתור. 81
מזהה ההפעלה של התוכנית בתור מזהה ההפעלה של התוכנית הזו בתור. 1394130914
שגיאה ב-Core מכיל הודעות שגיאה לגבי הליבה הזו. השדה הזה לא מופיע אם אין שגיאות. "Failed to parse launch id: 0xdcf36153"
מיקום HLO נתוני מיקום של High-level Optimizer ‏ (HLO). "no HLO mapping"
"HLO: fusion.11; HLO computation: main.126_spmd"

הפלט אמור להיראות כמו בטבלה הבאה:

Sequencer States (Detailed)

| Chip ID | Global Core ID | Program Counter | Tracemark  | Program ID           | Run ID | Sequence Type                            | Core Error                                               | HLO Location   | HLO Details |
|---------|----------------|-----------------|------------|----------------------|--------|------------------------------------------|----------------------------------------------------------|----------------|-------------|
| 0       | 0              | 760             | 2147483647 | -5752110712385440928 | 114    | TPU_SEQUENCER_TYPE_TENSOR_CORE_SEQUENCER | Failed to parse launch id: 0xdcf36109                    | no HLO mapping | []          |
| 0       | 1              | 9               | 0          | -1                   | -1     | TPU_SEQUENCER_TYPE_SPARSE_CORE_SEQUENCER | Compiler metadata or executable fingerprint not found.   | None           | None        |
| 0       | 1              | 0               | 0          | -1                   | -1     | TPU_SEQUENCER_TYPE_SPARSE_CORE_TILE_EXE… | Compiler metadata or executable fingerprint not found.   | None           | None        |
| 0       | 1              | 0               | 0          | -1                   | -1     | TPU_SEQUENCER_TYPE_SPARSE_CORE_TILE_EXE… | Compiler metadata or executable fingerprint not found.   | None           | None        |
| ...     | ...            | ...             | ...        | ...                  | ...    | ...                                      | ...                                                      | ...            | ...         |

תוכניות בתור

בטבלה Queued programs (queued_programs) מופיעה רשימת התוכניות שממתינות בתור להפעלה.

מדד תיאור ערכים לדוגמה
מזהה הצ'יפ מזהה השבב שהליבה שייכת אליו. 0
Global Core המזהה הייחודי של הליבה בכל מערכת ה-TPU. 1
מונה התוכנית:תג כתובת הזיכרון של ההוראה שהרצף צריך לבצע. 15390
Tracemark מזהה ההפעלה של התוכנית הנוכחית או האחרונה. השדה הזה לא מופיע אם הוא לא רלוונטי. 2147483647
מזהה תוכנית המזהה שמשויך למופע ספציפי של תוכנית שמופעלת להרצה בליבת TPU. 3230481660274331500
מזהה ההרצה מזהה ההרצה שמשויך לתוכנית. 1150
סוג הרצף סוג הסיקוונסר. "\ufffdU\ufffd4j\u7c6e\ufffd\ufffd{\u0017\ufffd\ufffdHHV\ufffdD\ufffde\uff"
Queued Programs

| Chip ID | Global Core | Program Counter:Tag | Tracemark | Program ID  | Run ID | Sequence Type                      |
|---------|-------------|---------------------|-----------|-------------|--------|------------------------------------|
| 0       | 0           | 10712385440928      | 1220      | -5.75e17    | 1220   | \ufffdU\\...ufffd{\\u0017\\...\\   |
| 0       | 1           | 31435440272417      | 1530      | -1          | 1530   | \ufff4j\\...\\ufffd{\\u0017\\...\\ |
| 0       | 1           | 10230672051156      | 1410      | -1          | 1410   | \ufffde\\...\\ufffd{\\u0017\\...\\ |
| ...     | ...         | ...                 | ...       | ...         | ...    | ...                                |

תכונות או מדדים חסרים

אם אתם לא מצליחים לראות תכונות או מדדים מסוימים, הסיבה הכי נפוצה לכך היא גרסה מיושנת של libtpu. התכונות והמדדים ב-tpu-info כלולים בגרסאות של libtpu, ויכול להיות שבגרסאות מיושנות חסרים תכונות ומדדים חדשים.

כדי לבדוק אם גרסת tpu-info תואמת לסביבה שלכם, משתמשים בדגל --version או -v:

$ tpu-info --version

הפלט הבא מציג דוגמה לסביבה תואמת:

-   tpu-info version: 0.5.1
-   libtpu version: 0.0.18
-   accelerator type: v6e

הפלט הבא מציג דוגמה לסביבה לא תואמת:

-   tpu-info version: 0.5.1
-   libtpu version: N/A (incompatible environment)
-   accelerator type: N/A (incompatible environment)

אם אתם משתמשים בגרסה מיושנת, עדכנו לגרסה העדכנית של libtpu:

pip install --upgrade libtpu