Monitorar VMs da Cloud TPU

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

As métricas permitem rastrear uma quantidade numérica ao longo do tempo, por exemplo, a utilização da CPU, o uso da rede ou a duração ociosa do TensorCore. Os registros capturam eventos em um momento específico. As entradas de registro são gravadas pelo seu próprio código, por serviços do Google Cloud, por aplicativos de terceiros e pela infraestrutura do Google Cloud. Também é possível gerar métricas a partir dos 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.

Este guia aborda o Google Cloud Monitoring e mostra como:

  • Ver métricas do Cloud TPU
  • Configurar políticas de alerta 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

Para seguir este documento, é necessário ter algum conhecimento básico sobre o Google Cloud Monitoring. Você precisa 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 TPU para mais detalhes.

Métricas

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 métricas a seguir são geradas pelas VMs do Cloud TPU:

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

Pode levar até 180 segundos entre o momento em que um valor de métrica é gerado e quando ele é exibido no Metrics Explorer.

Para mais informações sobre métricas relacionadas à TPU, consulte Métricas da TPU.

Uso da memória

A métrica memory/usage rastreia a memória usada pela VM da TPU em bytes. Essa métrica é amostrada a cada 60 segundos.

Contagem de bytes recebidos da rede

A métrica network/received_bytes_count rastreia o número de bytes cumulativos de dados que a VM da TPU recebeu pela rede em um determinado momento.

Contagem de bytes enviados da rede

A métrica network/sent_bytes_count rastreia o número de bytes cumulativos que a VM da TPU enviou pela rede em um momento específico.

Uso de CPU

A métrica cpu/utilization rastreia a utilização atual da CPU no worker da TPU, representada como uma porcentagem, com amostragem feita uma vez por minuto. Os valores estão normalmente entre 0,0 e 100,0, mas podem exceder 100,0.

Duração da inatividade do TensorCore

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

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

imagem

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

Como ver métricas

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

No Metrics Explorer, clique em SELECIONAR UMA MÉTRICA e pesquise TPU Worker. Se a opção Mostrar apenas métricas e recursos ativos estiver ativada, somente as métricas de recursos ativos serão exibidas. Clique em Worker da TPU para mostrar todas as métricas disponíveis.

Também é possível acessar as 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 no período especificado.

  1. Preencha o nome no seguinte formato: projects/{project-name}.
  2. Adicione uma consulta à seção Corpo da solicitação. Confira a seguir um exemplo de consulta 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 Executar para fazer a chamada e ver os resultados da mensagem HTTP POST.

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

É possível criar políticas de alertas que instruem o Cloud Monitoring a enviar 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 de inatividade do TensorCore. Sempre que essa métrica exceder 24 horas, o Cloud Monitoring enviará um e-mail para o endereço registrado.

  1. Acesse 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 de inatividade do Tensorcore e clique em APLICAR.
  7. Clique em PRÓXIMA e, em seguida, em Limite.
  8. Em Acionador de alerta, selecione Qualquer violação de série temporal.
  9. Em Posição do limite, selecione Acima do limite.
  10. Em Valor do limite, 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 depois em CRIAR POLÍTICA.

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

Geração de registros

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

Na Análise de registros, selecione 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 workers do Cloud TPU contêm informações sobre um worker específico do Cloud TPU em uma zona específica, como a quantidade de memória disponível nele (system_available_memory_GiB).

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

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 do 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. Escolher as APIs que começam com google.cloud.tpu.v2alpha1.Tpu

Consultar os registros do Google Cloud

Quando você vê os registros no console do Google Cloud, a página realiza uma consulta padrão. Para visualizar a consulta, selecione a chave Show query. É possível modificar a consulta padrão ou criar uma nova. Para mais informações, acesse Criar consultas na Análise de registros.

Registros de recursos auditados

Clique em qualquer entrada de registro para expandi-lo, e você encontrará um campo chamado protoPayload. Expanda protoPayload para ver alguns subcampos:

  • logName: o nome do registro
  • protoPayload -> @type: o tipo do registro
  • resourceName: o nome da 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 nó da Cloud TPU
  • request -> node_id: o nome da TPU.
  • severity: a gravidade do registro

Registros de worker da TPU

Clique em qualquer entrada de registro para expandi-lo, e você encontrará um campo chamado jsonPayload. Expanda jsonPayload para ver alguns 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 mais 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.

O exemplo a seguir usa 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 do Cloud TPU.

  1. Navegue até a Análise de registros.
  2. Na caixa de consulta, insira a seguinte consulta para extrair todas as entradas de registro com 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. Digite "matrix_unit_utilization_percent" e "MXU usage" nos campos Nome e Descrição, respectivamente

  6. O filtro é pré-preenchido com o script que você inseriu na Análise de registros

  7. Clique em CRIAR MÉTRICA.

  8. Clique em Explorar métricas para conferir a nova métrica. Pode levar alguns minutos até que as métricas sejam exibidas

Como criar métricas com base em registros com a API REST do Cloud Logging

Também é possível criar métricas com base em registros com a 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 (espera-se um atraso de cerca de dois minutos). Os alertas são úteis para enviar notificações quando ocorrem erros. Para mais informações, consulte estes tópicos:

Como criar painéis

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

  1. Acessar o console do Monitoring
  2. No painel de navegação, clique em Painéis.
  3. Clique em CRIAR PAINEL e depois em Adicionar widget.
  4. Escolha o tipo de gráfico que você quer adicionar. Para este exemplo, escolha Linha
  5. Digite um título para o widget
  6. Clique no menu suspenso Selecionar uma métrica e digite "Tensorcore touchscreen" no campo de filtro.
  7. Na lista de métricas, selecione Worker da TPU -> Tpu -> Duração da inatividade do Tensorcore.
  8. Para filtrar o conteúdo do painel, clique no menu suspenso Filtro.
  9. Em Rótulos de recursos, selecione project_id.
  10. Escolha um comparador e digite um valor no campo Valor
  11. Clique em Aplicar.