מעקב באמצעות 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_usageduty_cycle_percenttensorcore_utilizationbuffer_transfer_latencyhost_to_device_transfer_latencydevice_to_host_transfer_latencycollective_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