Painéis de monitoramento e geração de registros do Cloud TPU

O repositório de painéis de monitoramento e depuração do Cloud TPU contém toda a infraestrutura e lógica necessárias para monitorar e depurar fluxos de trabalho em execução em VMs de TPU. Ele requer o Terraform, uma ferramenta de código aberto que usa arquivos de configuração para definir e gerenciar a infraestrutura do Google Cloud.

Painel de monitoramento

O painel de monitoramento exibe as seguintes métricas do Cloud TPU:

  • Uso da CPU no worker da TPU: cpu/utilization
  • Uso da memória por VM da TPU: memory/usage
  • Bytes de rede recebidos por um pod na rede: network/received_bytes_count
  • Bytes de rede enviados por um pod pela rede: network/sent_bytes_count
  • Duração da inatividade do TensorCore do chip da TPU: tpu/tensorcore/idle_duration

O Cloud Monitoring gera dados de métricas automaticamente. Para visualizar o painel de monitoramento, acesse o console do Google Cloud, selecione Monitoramento e Painéis. Selecione GCE - Painel de monitoramento da TPU na lista de painéis. O painel de monitoramento do Cloud TPU é composto por vários painéis, cada um exibindo dados de métricas. Para cada métrica do Cloud TPU, o painel exibe os valores de métrica atuais, a média e os valores máximos em painéis separados. Os painéis de média e máximo permitem identificar VMs de TPU outliers para uma investigação mais aprofundada.

Também é possível ver as métricas da TPU usando o Metrics Explorer no console do Google Cloud do Cloud Monitoring. Para mais informações, consulte Como monitorar VMs do Cloud TPU.

Painel do Logging

O painel de geração de registros exibe duas seções:

  1. Métricas de registro: exibe a contagem de entradas de stack trace coletadas para cada worker da VM da TPU.
  2. Painel de registros: mostra todas as entradas de stack trace com colunas de gravidade, carimbo de data/hora e um resumo da entrada. É possível filtrar esse painel de registros por uma string ou rótulos de worker da TPU, como node_id e worker_id. Por exemplo, adicionar um filtro resource.labels.node_id:"testing" exibe todas as entradas de trace coletadas para o worker da VM da TPU com o ID definido como "teste".

O Cloud Logging coleta entradas de registro geradas por serviços do Google Cloud, serviços de terceiros, frameworks de ML e seu código. Instale o pacote PyPi cloud-tpu-diagnostics para gravar stack traces do Python quando ocorrer uma falha ou exceção ou quando a carga de trabalho não estiver respondendo. Para mais informações, consulte Como depurar VMs do Cloud TPU.

Para visualizar o painel de geração de registros, acesse o console do Google Cloud, selecione Monitoramento e Painéis. Selecione GCE - Painel do Logging da TPU na lista de painéis.

Configure as métricas e os painéis de geração de registros

Siga estas instruções para configurar as métricas e os painéis de geração de registros.

Clone o repositório do painel

É possível clonar o repositório diretamente do repositório do GitHub para monitoramento e depuração do Cloud TPU ou da linha de comando:

git clone https://github.com/google/cloud-tpu-monitoring-debugging.git

Instale o Terraform

  1. Instale o Terraform na máquina local.
  2. Execute terraform init para adicionar os plug-ins necessários e criar o diretório .terraform.
  3. Execute terraform init –upgrade para instalar as atualizações disponíveis.

Configurar permissões para monitoramento e geração de registros

Os papéis Administrador do Monitoring, Editor de configuração do painel do Monitoring e Administrador do Logging são necessários para implantar recursos de monitoramento no projeto do Google Cloud. Para mais informações sobre papéis de monitoramento, consulte Conceder acesso ao Cloud Monitoring.

crie um bucket do Cloud Storage

Criar um bucket do Cloud Storage para armazenar arquivos de estado do Terraform. Também é possível usar um bucket do Cloud Storage atual. Usar um bucket do Cloud Storage garante que vários usuários possam executar o Terraform ao mesmo tempo e acessar a mesma infraestrutura.

  1. Em um Cloud Shell, crie o bucket do Cloud Storage:

    gsutil mb gs://${GCS_BUCKET_NAME}
    
  2. Ative o controle de versões de objetos para manter o histórico das implantações. Ativar o controle de versões de objetos aumenta os custos de armazenamento, que podem ser reduzidos configurando o Gerenciamento do ciclo de vida de objetos para excluir versões mais antigas.

    gsutil versioning set on gs://${GCS_BUCKET_NAME}
    

Inicialize o Terraform

Execute terraform init dentro do diretório gcp_resources/gce do repositório. O comando solicita que você insira o nome de um bucket do Cloud Storage para armazenar arquivos de estado do Terraform.

Implante os painéis de monitoramento e geração de registros

Execute terraform apply dentro do diretório gcp_resources/gce para implantar os painéis de monitoramento e geração de registros no projeto do Google Cloud. O comando solicita que você forneça valores para as seguintes variáveis:

  • var.monitoring_dashboard_config
  • var.project_name
  • var.stack_trace_bucket_config

Se você quiser implantar apenas o painel de monitoramento, execute terraform init e terraform apply dentro do diretório gcp_resources/gce/dashboard/monitoring_dashboard. Da mesma forma, execute esses comandos dentro do diretório gcp_resources/gce/dashboard/logging_dashboard para implantar apenas o painel de geração de registros.

Exemplos de configurações

Quando você executa terraform apply, o Terraform solicita alguns valores de variáveis de configuração. Esta seção apresenta alguns exemplos de configurações que podem ser usadas. Cada exemplo mostra a saída exibida pelo comando "terraform apply" e os valores sugeridos para cada variável de configuração em negrito. A entrada precisa estar no formato JSON, entre chaves ("{}").

Example 1

Este exemplo especifica o nome do projeto do Google Cloud e usa os valores padrão para o restante da configuração.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;the number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

Exemplo 2

Neste exemplo, o painel é configurado para exibir cinco VMs de TPU de outlier.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"outlier_count":5}

Exemplo 3

Essa configuração cria um painel que mostra 10 VMs de TPU outliers usando "test" como o prefixo para os nomes de nós gerados pelo painel:

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &ltnumber of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test"}

Exemplo 4

Essa configuração cria um painel que mostra cinco VMs atípicas usando "test" como o prefixo dos nomes de nós gerados pelo painel.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test", "outlier_count":5}

Example 5

Neste exemplo, configuramos um bucket do Cloud Storage para armazenar stack traces. Os stack traces têm uma política de retenção padrão de 30 dias.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket"}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

Exemplo 6

Neste exemplo, um bucket do Cloud Storage é configurado com um período de armazenamento de 20 dias.

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket", "retention_days":20}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}