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

‫tpu-info CLI הוא כלי לזיהוי מכשירי 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/XLA. אפשר להריץ את הפקודה 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 פועל השדה מציין אם שרת מאתר הבאגים של המאיץ (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 State Information (sequencer_state) (מידע על מצב הרצף) מפורט מידע על מצב הרצף בליבה. רכיב ה-Sequencer הוא יחידת בקרה בתוך ליבת TPU שאחראית לאחזור, לפענוח ולתיאום של ביצוע ההוראות. יכולים להיות כמה רכיבי sequencer לליבה אחת.

מדד תיאור ערכים לדוגמה
מזהה צ'יפ המזהה של הצ'יפ שאליו שייכת הליבה. 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 Information (detailed) (sequencer_state_detailed)‎ מספקת את כל המידע מהטבלה Sequencer State Information (sequencer_state)‎, יחד עם המדדים הנוספים הבאים:

מדד תיאור ערכים לדוגמה
פרטי HLO מידע מפורט על HLO, אם יש. []
מזהה הרצת התוכנית בתור מזהה ההפעלה של התוכנית הזו בתור. 81
מזהה של השקת תוכנית שהוכנסה לתור מזהה ההפעלה של התוכנית הזו בתור. 1394130914
שגיאה מרכזית מכיל הודעות שגיאה לגבי הליבה הזו. אם אין שגיאות, השדה הזה לא מופיע. "Failed to parse launch id: 0xdcf36153"
מיקום HLO נתוני מיקום של כלי האופטימיזציה ברמה גבוהה (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