Monitorar com a CLI tpu-info
A CLI tpu-info é uma ferramenta para detectar dispositivos do Cloud TPU e ler métricas de tempo de execução da biblioteca libtpu, incluindo uso da memória e ciclo de trabalho. Ele é compatível com snapshots estáticos e únicos, além de transmissões ao vivo para monitorar métricas continuamente.
Instalação
Instale a versão mais recente usando pip:
pip install tpu-info
Como alternativa, instale o tpu-info da origem:
pip install git+https://github.com/google/cloud-accelerator-diagnostics/#subdirectory=tpu_info
Se você já instalou uma versão do tpu-info, verifique se ela é
compatível com seu ambiente e se não está faltando métricas e recursos.
Para mais informações, consulte Recursos ou métricas ausentes.
Acessar métricas padrão da LibTPU usando a CLI
Use o seguinte comando para conferir as métricas padrão do tpu-info com a CLI:
tpu-info
O resultado será o seguinte:
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 |
Uso
Para conferir os dados atuais de utilização da TPU, o tpu-info exige uma carga de trabalho de TPU em execução
com um framework de ML compatível, como JAX ou PyTorch/XLA. Execute o comando
tpu-info no terminal com as flags a seguir.
Processo
Use a flag --process ou -p para mostrar informações sobre os processos
em execução na TPU.
$ tpu-info --process
A saída será parecida com esta:
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 |
Métrica
Use a flag --metric para mostrar métricas específicas. É possível especificar várias
métricas separadas por espaços. Algumas métricas comuns com suporte são:
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
A saída será parecida com esta:
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 |
Listar métricas
Use a flag --list_metrics para mostrar todas as métricas compatíveis que podem ser
solicitadas com a flag --metric.
$ tpu-info --list_metrics
A saída será parecida com esta:
╭─ 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 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────╯
Métricas de stream
O modo de streaming atualiza e mostra periodicamente as estatísticas de utilização atualizadas. Para transmitir as métricas da LibTPU, adicione a flag --streaming ao comando tpu-info. Use a flag --rate para controlar a cadência do streaming em segundos.
Use o seguinte comando para transmitir as métricas padrão do tpu-info com a CLI:
# Refresh metrics every 2 seconds
tpu-info --streaming --rate 2
O resultado será o seguinte:
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 |
Métricas do TPU-Z
O TPU-Z é uma ferramenta de telemetria e depuração para TPUs. Ele fornece informações detalhadas sobre o status de
tempo de execução de todos os núcleos de TPU conectados a um host. A
funcionalidade é fornecida pelo módulo tpuz, que faz parte do
módulo libtpu.sdk no SDK do Python libtpu. O módulo fornece um snapshot do estado de cada núcleo.
O principal caso de uso do TPU-Z é diagnosticar travamentos ou impasses em cargas de trabalho distribuídas de TPU. É possível consultar o serviço TPU-Z em hosts para capturar o estado de cada núcleo, comparando os contadores de programa, os locais de HLO e os IDs de execução em todos os núcleos para identificar anomalias.
Use o seguinte comando para conferir as métricas do TPU-Z usando a CLI:
tpu-info --metric core_state
tpu-info --metric sequencer_state
tpu-info --metric sequencer_state_detailed
tpu-info --metric queued_program
A saída precisa incluir as tabelas core_state, sequencer_state, sequencer_state_detailed e queued_programs.
Informações principais do estado
A tabela de informações de estado do núcleo (core_state) fornece informações sobre os núcleos de um determinado chip. As TPUs têm um ou dois núcleos por chip, dependendo da geração.
| Campo | Descrição | Exemplos de valores |
|---|---|---|
| ID do chip | O ID do chip a que o núcleo pertence. | 0 |
| ID global principal | O ID exclusivo do núcleo em todo o sistema de TPU. | 1 |
| Tipo de núcleo | O tipo do núcleo da TPU. | "TPU_CORE_TYPE_TENSOR_CORE""TPU_CORE_TYPE_SPARSE_CORE" |
| Servidor xdb em execução | Indica se o servidor do depurador de aceleradores (XDB) está sendo executado em um núcleo de TPU específico. | True |
A saída será parecida com esta tabela:
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 |
Informações de estado do sequenciador
A tabela de informações de estado do sequenciador (sequencer_state) fornece informações sobre o estado de um sequenciador em um núcleo. Um sequenciador é uma unidade de controle em um núcleo de TPU
responsável por buscar, decodificar e orquestrar a execução de
instruções. Pode haver vários sequenciadores para um único núcleo.
| Métrica | Descrição | Exemplos de valores |
|---|---|---|
| ID do chip | O ID do chip a que o núcleo pertence. | 0 |
| ID global principal | O ID exclusivo do núcleo em todo o sistema de TPU. | 1 |
| Contador de programa | O endereço de memória da instrução a ser executada pelo sequenciador. | 15390 |
| Tracemark | O ID de lançamento do programa atual ou mais recente. Esse campo fica ausente se não for aplicável. | 2147483647 |
| ID do programa | O ID associado a uma instância específica de um programa sendo iniciado para execução em um núcleo de TPU. | 3230481660274331500 |
| ID da execução | O ID da execução associado ao programa. | 1150 |
| Tipo de sequência | O tipo de sequenciador. | "TPU_SEQUENCER_TYPE_SPARSE_CORE_SEQUENCER""TPU_SEQUENCER_TYPE_SPARSE_CORE_TILE_EXECUTE_CORE_SEQUENCER" |
A saída será parecida com esta tabela:
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 |
Informações detalhadas sobre o estado do sequenciador
A tabela "Informações detalhadas sobre o estado do sequenciador" (sequencer_state_detailed) fornece todas as informações da tabela "Informações sobre o estado do sequenciador" (sequencer_state), além das seguintes métricas:
| Métrica | Descrição | Exemplos de valores |
|---|---|---|
| Detalhes do HLO | Informações detalhadas sobre o HLO, se disponíveis. | [] |
| ID da execução do programa na fila | O ID da execução do programa enfileirado. | 81 |
| ID do lançamento do programa na fila | O ID de lançamento do programa na fila. | 1394130914 |
| Erro principal | Contém mensagens de erro para esse núcleo. Esse campo fica ausente se não há erros. | "Failed to parse launch id: 0xdcf36153" |
| Localização do HLO | Informações de local do High-level Optimizer (HLO). | "no HLO mapping""HLO: fusion.11; HLO computation: main.126_spmd" |
A saída será parecida com esta tabela:
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 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Programas na fila
A tabela "Programas na fila" (queued_programs) mostra a lista de programas
na fila para execução.
| Métrica | Descrição | Exemplos de valores |
|---|---|---|
| ID do chip | O ID do chip a que o núcleo pertence. | 0 |
| Global Core | O ID exclusivo do núcleo em todo o sistema de TPU. | 1 |
| Contador de programa:tag | O endereço de memória da instrução a ser executada pelo sequenciador. | 15390 |
| Tracemark | O ID de lançamento do programa atual ou mais recente. Esse campo fica ausente se não for aplicável. | 2147483647 |
| ID do programa | O ID associado a uma instância específica de um programa sendo iniciado para execução em um núcleo de TPU. | 3230481660274331500 |
| ID da execução | O ID da execução associado ao programa. | 1150 |
| Tipo de sequência | O tipo de sequenciador. | "\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\\...\\ |
| ... | ... | ... | ... | ... | ... | ... |
Recursos ou métricas ausentes
Se você não conseguir acessar alguns recursos ou métricas, o motivo mais comum é uma versão desatualizada do libtpu. Os recursos e as métricas do tpu-info estão incluídos nas versões do libtpu, e as versões desatualizadas podem não ter novos recursos e métricas.
Para verificar se a versão do tpu-info é compatível com seu ambiente, use
a flag --version ou -v:
$ tpu-info --version
A saída a seguir mostra um exemplo de ambiente compatível:
- tpu-info version: 0.5.1
- libtpu version: 0.0.18
- accelerator type: v6e
A saída a seguir mostra um exemplo de ambiente incompatível:
- tpu-info version: 0.5.1
- libtpu version: N/A (incompatible environment)
- accelerator type: N/A (incompatible environment)
Se você estiver usando uma versão desatualizada, atualize para a versão mais recente do libtpu:
pip install --upgrade libtpu