Como monitorar as VMs do Cloud TPU

Neste guia, explicamos como usar o Google Cloud Monitoring para monitorar as VMs do Cloud TPU. O Google Cloud Monitoring coleta automaticamente métricas e registros do Cloud TPU e do Compute Engine host. Esses dados podem ser usados para monitorar a integridade da Cloud TPU e do Compute Engine.

As métricas permitem que você rastreie uma quantidade numérica ao longo do tempo, por exemplo, utilização da CPU, uso da rede ou duração ociosa do TensorCore. Os registros capturam eventos em um momento específico. As entradas de registro são gravadas pelo código, pelos serviços do Google Cloud, pelos 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 por meio da criação de 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.

Este guia aborda o Google Cloud Monitoring e mostra como:

  • Ver métricas da Cloud TPU
  • Configurar políticas de alertas de métricas do Cloud TPU
  • Consultar registros do Cloud TPU
  • Crie métricas com base em registros para configurar alertas e visualizar painéis

Pré-requisitos

Neste documento, você precisa ter algum conhecimento básico sobre o Google Cloud Monitoring. É necessário ter uma VM do Compute Engine e recursos do Cloud TPU criados antes de começar a gerar e trabalhar com o Google Cloud Monitoring. Consulte o Guia de início rápido do Cloud Cloud TPU para mais detalhes.

Métrica

As métricas do Google Cloud são geradas automaticamente pelas VMs do Compute Engine e pelo ambiente de execução do Cloud TPU. As seguintes métricas são geradas por VMs do Cloud TPU:

  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • cpu/utilization
  • tpu/tensorcore/idle_duration

Uso da memória

A métrica memory/usage rastreia a memória atualmente em uso pela VM do Cloud TPU em bytes. A amostragem dessa métrica é feita a cada 60 segundos. Pode levar até 180 segundos entre o momento em que um valor é gerado e o momento em que ele é exibido.

Contagem de bytes da rede recebida

A métrica network/received_bytes_count rastreia o número de bytes cumulativos de dados que a VM do Cloud TPU recebeu pela rede em um momento. Pode levar até 180 segundos entre o momento em que um valor é gerado e o momento em que ele é exibido.

Contagem de bytes enviados da rede

A métrica network/sent_bytes_count rastreia o número de bytes cumulativos que a VM do Cloud TPU enviou pela rede em um momento. Pode levar até 180 segundos entre o momento em que um valor é gerado e o momento em que ele é exibido.

Utilização de CPU

A métrica cpu/utilization rastreia a utilização atual da CPU no worker do Cloud TPU, representada como uma porcentagem. Normalmente, os valores estão entre 0,0 e 100,0, mas podem exceder 100,0. Amostras coletadas a cada 60 segundos. Pode levar até 180 segundos entre o momento em que um valor é gerado e o momento em que ele é exibido.

Duração ociosa do TensorCore

A métrica tpu/tensorcore/idle_duration rastreia o número de segundos em que o TensorCore de cada chip de TPU ficou ocioso. Essa métrica está disponível para cada chip em todo o Cloud TPU em uso. Se um TensorCore estiver em uso, o valor da duração de inatividade é redefinido para zero. Quando o TensorCore não estiver mais em uso, o valor da duração de inatividade começa a aumentar.

O gráfico a seguir mostra a métrica tpu/tensorcore/idle_duration de uma VM do Cloud TPU v2-8 que tem um worker. Cada worker tem quatro chips. Neste exemplo, todos os quatro chips têm os mesmos valores para tpu/tensorcore/idle_duration, portanto, os gráficos são sobrepostos entre si.

image

Para uma lista completa das métricas geradas pelo Cloud TPU, consulte Métricas do Cloud TPU do Google Cloud.

Como ver métricas

É possível visualizar métricas usando o Metrics Explorer no Console do Google Cloud.

No Metrics Explorer, clique em SELECT A METRIC e pesquise Cloud TPU Worker. Se a opção Mostrar apenas métricas e recursos ativos estiver ativada, somente as métricas que estão sendo geradas no momento serão exibidas. Clique em Cloud TPU Worker para exibir as métricas disponíveis.

Também é possível acessar métricas usando chamadas HTTP curl:

Use o botão Testar na documentação de projects.timeSeries.query para recuperar o valor de uma métrica dentro do período especificado.

  1. Preencha o nome neste formato: projects/{project-name}.
  2. Adicione uma consulta à seção Corpo da solicitação. Veja a seguir uma consulta de amostra para recuperar a métrica de duração de inatividade da zona especificada nos últimos cinco minutos fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
  3. Clique em Execute para fazer a chamada e ver os resultados da mensagem HTTP POST

O documento Referência da linguagem de consulta do Monitoring tem mais informações sobre como personalizar essa consulta.

É possível criar políticas de alerta para que o Google Cloud Monitoring envie um alerta quando uma condição for atendida.

Como criar alertas

As etapas nesta seção mostram um exemplo de como adicionar uma política de alertas para a métrica Duração inativa do TensorCore. Sempre que essa métrica excede 24 horas, o Cloud Monitoring envia um e-mail para o endereço de e-mail registrado.

  1. Acessar o console do Monitoring
  2. No painel de navegação, clique em Alertas.
  3. Clique em EDITAR CANAIS DE NOTIFICAÇÃO.
  4. Em E-mail, clique em ADICIONAR NOVO. Digite um endereço de e-mail, um nome de exibição e clique em SALVAR
  5. Clique em CRIAR POLÍTICA.
  6. Clique em SELECIONAR UMA MÉTRICA, selecione Duração inativa do TensorCore e clique em APLICAR.
  7. Clique em NEXT e em Threshold.
  8. Em Acionador de alerta, selecione Qualquer série temporal que viole
  9. Em Posição mínima, selecione Acima do limite.
  10. Em Threshold Value, digite 86400000
  11. Clique em PRÓXIMA.
  12. Em Canais de notificação, selecione seu canal de notificação por e-mail e clique em OK
  13. Digite um nome para a política de alertas
  14. Clique em PRÓXIMA e em CRIAR POLÍTICA.

Quando a duração de inatividade do TensorCore passa de 24 horas, um e-mail é enviado para o endereço de e-mail especificado.

Geração de registros

As entradas de registro são gravadas por serviços do Google Cloud, serviços de terceiros, frameworks de ML ou seu código. É possível ver os registros usando o Visualizador de registros ou a API Logs. Para mais informações sobre a geração de registros do Google Cloud, consulte Google Cloud Logging.

No Explorador de registros, é possível selecionar um tipo de recurso:

  • Worker do Cloud TPU -> Zona -> ID do nó
  • Recurso auditado -> Cloud TPU -> API (google.cloud.tpu.v2alpha1.Tpu.CreateNode, google.cloud.tpu.v2alpha1.Tpu.DeleteNode, google.cloud.tpu.v2alpha1.Tpu.UpdateNode)

Os registros de worker do Cloud TPU contêm informações sobre um worker do Cloud TPU em uma zona específica, por exemplo, a quantidade de memória disponível no worker do Cloud TPU (system_available_memory_GiB).

Os registros de recurso auditados contêm informações sobre quando uma API do Cloud TPU específica foi chamada e quem fez a chamada. Por exemplo, CreateNode, UpdateNode e DeleteNode.

Os frameworks de ML podem gerar registros para stdout e stderr. Esses registros são controlados por variáveis de ambiente e lidos pelo script de treinamento.

Seu código pode gravar registros no Google Cloud Logging. Para mais informações, consulte Gravar registros padrão e Gravar registros estruturados.

Para ver os registros do Cloud TPU:

  1. Acessar o visualizador de registros do Google Cloud
  2. Clique na lista suspensa Recurso.
  3. Clique em Cloud TPU Worker.
  4. Selecione uma zona
  5. Selecione o Cloud TPU de seu interesse
  6. Clique em Aplicar. Os registros são exibidos nos resultados da consulta

Para ver os registros de recursos auditados:

  1. Acessar o visualizador de registros do Google Cloud
  2. Clique na lista suspensa Recurso.
  3. Clique em Recurso auditado e em Cloud TPU.
  4. Escolha a API Cloud TPU do seu interesse
  5. Clique em Aplicar. Os registros são exibidos nos resultados da consulta
  6. Escolha as APIs que começam com google.cloud.tpu.v2alpha1.Tpu

Consultar registros do Google Cloud

Quando você vê os registros no Console do Google Cloud, a página executa uma consulta padrão. Selecione a chave Show query para visualizar a consulta. É possível modificar a consulta padrão ou criar uma nova. Para mais informações, consulte Criar consultas no Explorador de registros.

Noções básicas sobre a saída dos registros de recursos auditados

Clique em qualquer entrada de registro para expandi-la. Você encontrará um campo chamado protoPayload. Expanda protoPayload para ver vários subcampos:

  • logName: o nome do registro
  • protoPayload -> @type: o tipo do registro
  • resourceName: o nome do Cloud TPU
  • methodName: o nome do método chamado (somente registros de auditoria)
  • request -> @type: o tipo de solicitação
  • request -> node: detalhes sobre o node do Cloud TPU
  • request -> node_id: o nome da TPU
  • severity: a gravidade do registro

Noções básicas sobre a saída dos registros do Worker do Cloud TPU

Clique em qualquer entrada de registro para expandi-la. Você encontrará um campo chamado jsonPayload. Expanda jsonPayload para ver vários subcampos:

  • accelerator_type: o tipo de acelerador.
  • consumer_project: o projeto em que a Cloud TPU reside
  • evententry_timestamp: a hora em que o registro foi gerado
  • system_available_memory_GiB: a memória disponível no worker da Cloud TPU (0 ~ 350 GiB)

Como criar métricas com base em registros

Esta seção descreve como criar métricas com base em registros usadas para configurar painéis e alertas de monitoramento. Para informações sobre como criar métricas com base em registros de maneira programática, consulte Como criar métricas com base em registros de maneira programática usando a API REST do Cloud Logging.

No exemplo a seguir, usamos o subcampo system_available_memory_GiB para demonstrar como criar uma métrica com base em registros para monitorar a memória disponível do worker da Cloud TPU.

  1. Navegue até o Explorador de registros
  2. Na caixa de consulta, digite a seguinte consulta para extrair todas as entradas de registro que tenham system_available_memory_GiB definido para o worker principal do Cloud TPU:

    resource.type=tpu_worker
    resource.labels.project_id=your-project
    resource.labels.zone=your-tpu-zone
    resource.labels.node_id=your-tpu-name
    resource.labels.worker_id=0
    logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor
    jsonPayload.system_available_memory_GiB:*
    
  3. Clique em Criar métrica para exibir o Editor de métricas.

  4. Em Tipo de métrica, escolha Distribuição.

  5. Digite um nome, uma descrição opcional e uma unidade de medida para sua métrica. insira "matrix_unit_utilization_percent" e "utilização de MXU" nos campos Name e Description, respectivamente

  6. O filtro é pré-preenchido com o script que você digitou no Explorador de registros

  7. Clique em CRIAR MÉTRICA.

  8. Clique em Explorar métricas para ver sua nova métrica. Pode demorar alguns minutos para que suas métricas sejam exibidas

Como criar métricas com base em registros de maneira programática usando a API REST do Cloud Logging

Também é possível criar métricas com base em registros por meio da API Cloud Logging. Para mais informações, consulte Como criar uma métrica de distribuição.

Como criar painéis e alertas usando métricas com base em registros

Os painéis são úteis para visualizar métricas (com atraso de aproximadamente dois minutos). Os alertas são úteis para enviar notificações quando ocorrem erros. Para mais informações, consulte Gerenciar painéis personalizados e Criar políticas de alertas com base em métricas.

Como criar painéis

Para criar um painel no Cloud Monitoring para a métrica de duração ociosa do TensorCore:

  1. Acessar o console do Monitoring
  2. No painel de navegação, clique em Painéis.
  3. Clique em CRIAR PAINEL e em Adicionar gráfico.
  4. Escolha o tipo de gráfico que você quer adicionar. Para este exemplo, escolha Linha
  5. Digite um título para o painel
  6. Clique no botão abaixo de Recurso e métrica
  7. Role a lista de recursos/métricas para baixo e selecione Worker do Cloud TPU -> Tpu -> Duração ociosa do TensorCore
  8. Clique em Aplicar.
  9. Para filtrar o conteúdo do painel, clique em CRIAR FILTROS DO PAINEL
  10. No campo Label, defina project_id como seu projeto.
  11. Clique em ADICIONAR e defina zone como a zona em que você criou sua TPU
  12. Adicione outro filtro para node_id e especifique o nome do Cloud TPU