Monitorar TPUs
Neste guia, explicamos como usar o Cloud Monitoring para monitorar as VMs da TPU. O Cloud Monitoring coleta automaticamente métricas e registros da TPU e da VM host. Esses dados podem ser usados para monitorar a integridade da TPU e do Compute Engine.
Com as métricas, é possível monitorar uma quantidade numérica ao longo do tempo, como a utilização da CPU, o uso da rede ou a duração da inatividade de um TensorCore. Os registros capturam eventos em um momento específico. As entradas de registro são gravadas pelo próprio código, pelos serviços doGoogle Cloud , por aplicativos de terceiros e pela infraestrutura do Google Cloud . Também é possível gerar métricas com base nos dados presentes em uma entrada de registro criando uma métrica com base em registros. Também é possível definir políticas de alertas com base em valores de métricas ou entradas de registro.
Para monitorar TPUs, também é possível usar o Planejador de capacidade (pré-lançamento). Com ele, você pode conferir os dados de previsão e de uso de TPU do projeto, da pasta ou da organização. Esses dados são atualizados a cada 24 horas e podem ser usados para analisar tendências de uso e planejar necessidades futuras de capacidade. Para mais informações, consulte Visão geral do Planejador de capacidade.
Acessar métricas de TPU
O Compute Engine gera dois tipos de métricas de TPU: métricas de ambiente de execução de TPU e métricas de infraestrutura de VM de TPU. É possível acessar as métricas de duas maneiras:
Biblioteca de monitoramento de TPUs: receba métricas de ambiente de execução da TPU do SDK LibTPU usando a biblioteca de monitoramento de TPUs. Isso permite que seus aplicativos recebam telemetria em tempo real de dentro do ambiente de convidado. Para mais informações, consulte Biblioteca de monitoramento de TPU.
Coletor de telemetria de IA: receba métricas de tempo de execução e de infraestrutura de VM com o coletor de telemetria de IA. O coletor de telemetria de IA é executado na VM da TPU e permite acessar métricas pelo Cloud Monitoring ou pelo seu próprio pipeline de monitoramento baseado no Prometheus. Para mais informações, consulte Coletor de telemetria de IA.
Métricas de TPU
As métricas doGoogle Cloud para Cloud TPU são geradas automaticamente pelas VMs do Compute Engine e pelo ambiente de execução do Cloud TPU. As métricas na tabela a seguir são geradas por VMs do Compute Engine.
As strings "tipo de métrica" nesta tabela precisam ser prefixadas com
compute.googleapis.com/. Esse prefixo foi omitido das entradas na tabela. Ao consultar um rótulo, use o prefixo metric.labels. Por exemplo,
metric.labels.LABEL="VALUE".
| Tipo de métrica Etapa do lançamento (níveis da hierarquia de recursos) Nome de exibição |
|
|---|---|
| Classe, Tipo, Unidade Recursos monitorados |
Descrição Rótulos |
instance/tpu/accelerator/duty_cycle
BETA
(projeto)
Ciclo de trabalho do acelerador |
|
GAUGE, DOUBLE, %
gce_instance |
Porcentagem de tempo durante o período de amostragem em que o acelerador estava processando ativamente. Os valores estão no intervalo [0,100].
accelerator_id:
ID do dispositivo do acelerador.
|
instance/tpu/accelerator/memory_bandwidth_utilization
BETA
(projeto)
Utilização da largura de banda da memória do acelerador |
|
GAUGE, DOUBLE, %
gce_instance |
Porcentagem atual da largura de banda da memória do acelerador que está sendo usada. Calculada dividindo a largura de banda da memória usada durante um período de amostragem pela largura de banda máxima aceita no mesmo período.
accelerator_id:
ID do dispositivo do acelerador.
|
instance/tpu/accelerator/memory_total
BETA
(projeto)
Total de memória do acelerador |
|
GAUGE, INT64, By
gce_instance |
Memória total do acelerador alocada no momento em bytes.
accelerator_id:
ID do dispositivo do acelerador.
|
instance/tpu/accelerator/memory_used
BETA
(projeto)
Memória do acelerador usada |
|
GAUGE, INT64, By
gce_instance |
Memória total do acelerador em uso no momento em bytes.
accelerator_id:
ID do dispositivo do acelerador.
|
instance/tpu/accelerator/tensorcore_utilization
BETA
(projeto)
Utilização do TensorCore do acelerador |
|
GAUGE, DOUBLE, %
gce_instance |
Porcentagem atual do TensorCore que está sendo utilizada. Resultado da divisão das operações do TensorCore que foram realizadas em um período de amostragem pelo número de operações do TensorCore com suporte no mesmo período.
accelerator_id:
ID do dispositivo do acelerador.
|
instance/tpu/active_chips
BETA
(projeto)
Contagem de chips de TPU ativos |
|
GAUGE, INT64, 1
gce_instance |
A contagem atual de chips que estão sendo usados ativamente (ou seja, não estão ociosos).
accelerator_type:
Tipo e geração do acelerador.
reservation_id:
O ID da reserva de máquina física.
provisioning_model:
O modelo de provisionamento associado.
protection_tier:
o modelo de proteção associado.
block_id:
O ID do bloco no cluster que hospeda a VM.
subblock_id:
O ID do sub-bloco que hospeda a VM.
is_exr:
(BOOL)
Indica se o chip faz parte de uma reserva estendida.
|
instance/tpu/chip_state
BETA
(projeto)
Contagem de estados de chips de TPU |
|
GAUGE, INT64, 1
gce_instance |
A contagem de chips de TPU em vários estados, como íntegro, não íntegro e desconhecido.
state:
O estado do chip.
accelerator_type:
Tipo e geração do acelerador.
block_id:
O ID do bloco no cluster que hospeda a VM.
subblock_id:
O ID do sub-bloco que hospeda a VM.
reservation_id:
O ID da reserva de máquina física.
is_exr:
(BOOL)
Indica se o chip faz parte de uma reserva estendida.
|
instance/tpu/infra_health
BETA
(projeto)
Integridade da instância da TPU |
|
GAUGE, INT64, 1
gce_instance |
Indica o status geral de integridade de uma instância de TPU. Os rótulos de métricas ajudam a identificar o status de integridade específico e os motivos dos problemas em instâncias de TPU degradadas ou não íntegras, com foco principalmente no hardware e na integridade do sistema da TPU. As mudanças no status de integridade podem levar vários minutos para serem refletidas nessa métrica. Amostras coletadas a cada 60 segundos. Após a amostragem, os dados não são visíveis por até 420 segundos.
health_status:
O estado geral de integridade da instância de TPU. Valores possíveis: HEALTHY (operando como esperado), UNHEALTHY (problema crítico detectado), DEGRADED (problema que afeta o desempenho) e UNKNOWN (não é possível determinar o status).
unhealthy_category:
Explicação do status de VM não íntegra. Esse rótulo só é preenchido quando o valor da métrica é "Unhealthy".
machine_type:
O tipo de máquina da instância (por exemplo, ct6e-standard-4t-tpu).
machine_id:
O ID da máquina física que hospeda a VM.
block_id:
O ID do bloco no cluster que hospeda a VM.
cluster_id:
O ID do cluster que hospeda a VM.
reservation_id:
O ID da reserva de máquina física.
subblock_id:
O ID do sub-bloco que hospeda a VM.
|
instance/tpu/runtime/uptime
BETA
(projeto)
Tempo de atividade do ambiente de execução |
|
GAUGE, INT64, s
gce_instance |
Tempo de atividade do ambiente de execução de ML desde a inicialização da biblioteca de ambiente de execução (libtpu.so) pelo job de ML. Durante esse período, a biblioteca de tempo de execução bloqueia os dispositivos de TPU para uso pelo job de ML.
ml_framework_name:
Nome do framework de ML.
ml_framework_version:
Versão do framework de ML.
|
instance/tpu/scheduled_chips
BETA
(projeto)
Contagem de chips de TPU programados |
|
GAUGE, INT64, 1
gce_instance |
A contagem atual de chips alocados a uma VM que está ÍNTEGRA e NÃO ESTÁ DESATIVADA para manutenção.
accelerator_type:
Tipo e geração do acelerador.
reservation_id:
O ID da reserva de máquina física.
provisioning_model:
O modelo de provisionamento associado.
protection_tier:
o modelo de proteção associado.
block_id:
O ID do bloco no cluster que hospeda a VM.
subblock_id:
O ID do sub-bloco que hospeda a VM.
is_exr:
(BOOL)
Indica se o chip faz parte de uma reserva estendida.
|
instance/tpu/utilized_chips
BETA
(projeto)
Chips de TPU utilizados |
|
GAUGE, DOUBLE, 1
gce_instance |
A capacidade agregada utilizada atual expressa como um número efetivo de chips ativos. É equivalente à soma da utilização fracionária (0,0 a 1,0) de todos os chips ativos.
accelerator_type:
Tipo e geração do acelerador.
reservation_id:
O ID da reserva de máquina física.
provisioning_model:
O modelo de provisionamento associado.
protection_tier:
o modelo de proteção associado.
block_id:
O ID do bloco no cluster que hospeda a VM.
subblock_id:
O ID do sub-bloco que hospeda a VM.
is_exr:
(BOOL)
Indica se o chip faz parte de uma reserva estendida.
|
quota/tpus_per_tpu_family/exceeded
ALFA
(projeto)
Contagem de TPUs por família de TPU. Erro de cota excedida |
|
DELTA, INT64, 1
compute.googleapis.com/Location |
Número de tentativas de exceder o limite na métrica de cota compute.googleapis.com/tpus_per_tpu_family. Após a amostragem, os dados não são visíveis por até 150 segundos.
limit_name:
O nome do limite.
tpu_family:
dimensão personalizada da família de TPUs.
|
quota/tpus_per_tpu_family/limit
ALFA
(projeto)
Contagem de TPUs por família de TPU. Limite de cota |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Limite atual na métrica de cota compute.googleapis.com/tpus_per_tpu_family. Amostras coletadas a cada 60 segundos. Após a amostragem, os dados não são visíveis por até 150 segundos.
limit_name:
O nome do limite.
tpu_family:
dimensão personalizada da família de TPUs.
|
quota/tpus_per_tpu_family/usage
ALFA
(project)
Contagem de TPUs por família de TPU. Uso de cota |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Uso atual na métrica de cota compute.googleapis.com/tpus_per_tpu_family. Após a amostragem, os dados não são visíveis por até 150 segundos.
limit_name:
O nome do limite.
tpu_family:
dimensão personalizada da família de TPUs.
|
tpu/multislice/accelerator/device_to_host_transfer_latencies
BETA
(projeto)
Latências de transferência do dispositivo para o host |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa da latência de transferência de dispositivo para host em cada bloco de dados. Uma latência começa quando a solicitação de transferência de dados para o host é emitida e termina quando um reconhecimento é recebido de que a transferência de dados foi concluída.
buffer_size:
Tamanho do buffer.
|
tpu/multislice/accelerator/host_to_device_transfer_latencies
BETA
(projeto)
Latências de transferência do host para o dispositivo |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa da latência de transferência de host para dispositivo em cada bloco de dados de tráfego multislice. Uma latência começa quando a solicitação de transferência de dados para o dispositivo é emitida e termina quando um reconhecimento é recebido de que a transferência de dados foi concluída.
buffer_size:
Tamanho do buffer.
|
tpu/multislice/network/collective_end_to_end_latencies
BETA
(projeto)
Latências coletivas de ponta a ponta |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa da latência coletiva de ponta a ponta para o tráfego multislice. Uma latência começa quando a solicitação de comunicação coletiva é emitida e termina quando um reconhecimento é recebido de que a transferência de dados foi concluída.
input_size:
Tamanho da entrada da operação coletiva.
collective_type:
Tipo da operação coletiva.
|
tpu/multislice/network/dcn_transfer_latencies
BETA
(projeto)
Latências de transferência de DCN |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa das latências de transferência de rede para tráfego multislice. Uma latência começa quando a solicitação de transferência de dados pela DCN é emitida e termina quando um reconhecimento é recebido de que a transferência de dados foi concluída.
buffer_size:
Tamanho do buffer.
type:
Type.
|
tpu/multislice/network/grpc_client_call_latencies
BETA
(projeto)
Latências de chamada do cliente gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa das latências de transferência de rede para que a biblioteca gRPC conclua uma RPC da perspectiva do chamador.
buffer_size:
Tamanho do buffer.
|
tpu/multislice/network/grpc_server_call_latencies
BETA
(projeto)
Latências de chamada do servidor gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa de latências de transferência de rede para o servidor gRPC concluir uma RPC na perspectiva de transporte.
buffer_size:
Tamanho do buffer.
|
tpu/multislice/network/grpc_tcp_delivery_rates
BETA
(projeto)
Taxas de entrega de TCP do gRPC |
|
CUMULATIVE, DISTRIBUTION, Mb/s
gce_instance |
Distribuição cumulativa das taxas de transferência de dados de conexões TCP. Cada amostra é a taxa de transferência de dados média mais recente para uma determinada conexão TCP no último intervalo de ACK TCP. As amostras de taxas de transferência de dados são extraídas do kernel TCP do Linux a cada 20 segundos. Portanto, é esperado que cada conexão TCP crie aproximadamente três amostras por intervalo de 60 segundos. |
tpu/multislice/network/grpc_tcp_min_round_trip_times
BETA
(projeto)
Tempos mínimos de ida e volta do TCP gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuição cumulativa das latências mínimas de transferência de rede por conexão TCP. |
tpu/multislice/network/grpc_tcp_packets_retransmitted_count
BETA
(projeto)
Contagem de pacotes TCP do gRPC retransmitidos |
|
CUMULATIVE, INT64, 1
gce_instance |
Contagem total de pacotes retransmitidos. |
tpu/multislice/network/grpc_tcp_packets_sent_count
BETA
(projeto)
Contagem de pacotes TCP gRPC enviados |
|
CUMULATIVE, INT64, 1
gce_instance |
Contagem total de pacotes enviados pelo TCP. |
tpu/slice/capacity/available_chips
BETA
(projeto)
Contagem de chips de TPU disponíveis |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
A contagem atual de chips de TPU da reserva estendida que estão disponíveis e prontos para uso. Amostras coletadas a cada 60 segundos. Após a amostragem, os dados não são visíveis por até 360 segundos.
accelerator_type:
Tipo e geração do acelerador.
reservation_id:
O ID da reserva de máquina física.
block_id:
O ID do bloco associado à fração.
subblock_id:
O ID do subbloco associado à fração.
provisioning_model:
O modelo de provisionamento associado.
protection_tier:
o modelo de proteção associado.
|
tpu/slice/capacity/committed_chips
BETA
(projeto)
Contagem de chips de TPU comprados |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
A contagem atual de chips de TPU comprados da reserva estendida. Amostras coletadas a cada 60 segundos. Após a amostragem, os dados não são visíveis por até 360 segundos.
accelerator_type:
Tipo e geração do acelerador.
reservation_id:
O ID da reserva de máquina física.
block_id:
O ID do bloco associado à fração.
subblock_id:
O ID do subbloco associado à fração.
provisioning_model:
O modelo de provisionamento associado.
protection_tier:
o modelo de proteção associado.
|
Para uma lista completa das métricas geradas pelo Compute Engine, consulte Métricas do Compute Engine.
Coletor de telemetria de IA
O coletor de telemetria de IA coleta e publica métricas de TPU no namespace
compute.googleapis.com para TPUs criadas usando a API Compute Engine.
Essas métricas são métricas de sistema integradas, que fornecem visibilidade sobre a integridade e o desempenho.
A arquitetura do coletor de telemetria de IA foi projetada como um coletor OpenTelemetry (OTEL) especializado e leve. Ele usa dois receptores principais para capturar dados:
- Receptor do ambiente de execução da TPU: extrai métricas de ambiente de execução e de carga de trabalho (como ciclo de trabalho e uso da memória) diretamente do ambiente de execução da TPU quando uma carga de trabalho de machine learning está ativa.
- Receptor do host da TPU: captura métricas de utilização de hardware, como utilização do TensorCore e da largura de banda da memória, diretamente do dispositivo, independente de uma carga de trabalho estar em execução.
Em seguida, o coletor de telemetria de IA usa processadores para aplicar automaticamente as tags de recursos necessárias (como project_id, instance_id e zone) e exporta a telemetria diretamente para o Cloud Monitoring de forma segura.
O coletor de telemetria de IA vem pré-instalado nas imagens do Ubuntu LTS otimizadas para TPU do Google e é executado automaticamente quando a VM é inicializada. Para usar essa configuração, especifique o projeto e a família oficiais de imagens de acelerador do Google ao criar uma instância de VM da TPU ou um modelo de instância. Quando a VM é iniciada, o coletor de telemetria de IA envia automaticamente métricas para os painéis do Cloud Monitoring.
Se você estiver criando imagens personalizadas do sistema operacional, poderá usar o coletor de telemetria de IA depois de instalar e executar a imagem do Docker ai-telemetry-collector. Para mais informações, consulte Usar uma imagem de SO
personalizada.
Configuração
O coletor de telemetria de IA envia métricas automaticamente para os painéis do Cloud Monitoring e não exige etapas de configuração adicionais. No entanto, é possível configurar o pacote Snap ou a imagem do Docker para adicionar destinos de exportação externos, alterar intervalos de coleta de métricas e incluir opções de depuração.
Você pode substituir a configuração padrão por um novo arquivo de configuração ou anexar um arquivo de configuração adicional à configuração padrão atual. Ao adicionar configurações, as chaves que ainda não existem são adicionadas, e as que já existem são substituídas. No entanto, matrizes e listas não são aditivas. Portanto, as novas listas precisam incluir valores atuais e novos.
O arquivo YAML a seguir configura o coletor de telemetria de IA para enviar métricas ao Prometheus, um kit de ferramentas de monitoramento e alerta de sistemas de código aberto. Ela também ativa a opção de depuração, que imprime métricas no console.
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
exporters:
- prometheus # For more: https://prometheus.io/docs/introduction/overview/
- googlecloud # If you do not include this, you'll lose Google Cloud Monitoring
- debug # print metrics within the console
SO padrão
Se você estiver usando as imagens do Ubuntu LTS otimizadas para TPU do Google, execute o seguinte comando Snap para adicionar o novo arquivo de configuração à configuração atual:
sudo snap set \
ai-telemetry-collector \
extra-flags="--config /home/username/additional-config.yaml"
Se você quiser substituir a configuração atual, use a flag
config-path em vez de extra-flags:
sudo snap set \
ai-telemetry-collector \
config-path="/home/username/new-config.yaml"
O comando snap set deve acionar uma reinicialização automática do coletor de telemetria de IA. Para verificar se o coletor foi reiniciado e aplicou suas configurações, use o seguinte comando para conferir os registros:
sudo snap logs -f ai-telemetry-collector
SO personalizado
Se você estiver usando um SO personalizado, execute o seguinte comando do Docker para adicionar o novo arquivo de configuração à configuração atual:
# First apply the default configs via `--config=/etc/ai-telemetry-collector/config.yaml`
# Then apply your additional config by volume mount.
docker run --privileged --net=host \
-v <path>/additional-config.yaml:/etc/ai-telemetry-collector/additional-config.yaml \
ai-telemetry-collector:latest \
--config=/etc/ai-telemetry-collector/config.yaml \
--config=/etc/ai-telemetry-collector/additional-config.yaml
Se você quiser substituir a configuração atual, use o seguinte comando do Docker:
# Mount a volume (your config file) to `/etc/ai-telemetry-collector/config.yaml`
# The binary automatically picks up this file.
docker run --privileged --net=host \
-v <path>/my-config.yaml:/etc/ai-telemetry-collector/config.yaml \
ai-telemetry-collector:latest
Registros de auditoria
Os serviços doGoogle Cloud geram registros de auditoria que registram atividades administrativas e de acesso nos recursos do Google Cloud . Para mais informações, consulte Registro de auditoria do Compute Engine.