Paneles de supervisión y registro de Cloud TPU

El repositorio de paneles de supervisión y depuración de Cloud TPU contiene toda la infraestructura y lógica necesarias para supervisar y depurar flujos de trabajo que se ejecutan en las VM de TPU. Requiere Terraform, una herramienta de código abierto que usa archivos de configuración para definir y administrar la infraestructura de Google Cloud.

Panel de supervisión

En el panel de supervisión, se muestran las siguientes métricas de Cloud TPU:

  • Uso de CPU en el trabajador TPU: cpu/utilization
  • Uso de memoria por VM de TPU: memory/usage
  • Bytes de red que recibió un Pod a través de la red: network/received_bytes_count
  • Bytes de red que envió un Pod a través de la red: network/sent_bytes_count
  • Duración de inactividad de TensorCore del chip TPU: tpu/tensorcore/idle_duration

Cloud Monitoring genera automáticamente datos de métricas. Para ver el panel de supervisión, ve a la consola de Google Cloud, selecciona Monitoring y, luego, Paneles. Selecciona GCE - Panel de supervisión de TPU en la lista de paneles. El panel de supervisión de Cloud TPU se compone de varios paneles, cada uno de los cuales muestra datos de métricas. Para cada métrica de Cloud TPU, el panel muestra los valores de la métrica actual, la media y los valores máximos en paneles separados. Los paneles medio y máximo te permiten identificar VMs de TPU con valores atípicos para una investigación más detallada.

También puedes ver las métricas de TPU con el Explorador de métricas en la consola de Google Cloud de Cloud Monitoring. Para obtener más información, consulta Supervisa las VMs de Cloud TPU.

Panel de Logging

En el panel de registro, se muestran dos secciones:

  1. Métricas de registro: muestra el recuento de entradas de seguimiento de pila recopiladas para cada trabajador de VM de TPU.
  2. Panel de registros: Muestra todas las entradas de seguimiento de pila con columnas para la gravedad, la marca de tiempo y un resumen de la entrada. Puedes filtrar este panel de registros por una cadena o por etiquetas de trabajador TPU, como node_id, worker_id. Por ejemplo, si agregas un filtro resource.labels.node_id:"testing", se mostrarán todas las entradas de seguimiento recopiladas para el trabajador de VM de TPU con el ID establecido en “prueba”.

Cloud Logging recopila entradas de registro que generan los servicios de Google Cloud, los servicios de terceros, los frameworks de AA y tu código. Puedes instalar el paquete cloud-tpu-diagnostics de PyPi para escribir seguimientos de pila de Python cuando se produce una falla o excepción, o cuando la carga de trabajo no responde. Para obtener más información, consulta Depura las VM de Cloud TPU.

Para ver el panel de registro, ve a la consola de Google Cloud, selecciona Monitoring y, luego, Paneles. Selecciona GCE - TPU Logging Dashboard en la lista de paneles.

Configura las métricas y los paneles de registros

Sigue estas instrucciones para configurar las métricas y los paneles de registro.

Clona el repositorio del panel

Puedes clonar el repositorio directamente desde el repositorio de GitHub de supervisión y depuración de Cloud TPU o desde la línea de comandos:

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

Instalación de Terraform

  1. Instala Terraform en tu máquina local.
  2. Ejecuta terraform init para agregar los complementos necesarios y crea el directorio .terraform.
  3. Ejecuta terraform init –upgrade para instalar las actualizaciones disponibles.

Configura permisos para la supervisión y el registro

Los roles de administrador de Monitoring, editor de configuración del panel de Monitoring y administrador de Logging son necesarios para implementar recursos de supervisión en tu proyecto de Google Cloud. Para obtener más información sobre los roles de supervisión, consulta Otorga acceso a Cloud Monitoring.

Crea un bucket de Cloud Storage

Crear un bucket de Cloud Storage para almacenar archivos de estado de Terraform También puedes usar un bucket de Cloud Storage existente. El uso de un bucket de Cloud Storage garantiza que varios usuarios puedan ejecutar Terraform al mismo tiempo y acceder a la misma infraestructura.

  1. En Cloud Shell, crea el bucket de Cloud Storage:

    gsutil mb gs://${GCS_BUCKET_NAME}
    
  2. Habilita el control de versiones de objetos para conservar el historial de tus implementaciones. Habilitar el control de versiones de objetos aumenta los costos de almacenamiento, que puedes mitigar si configuras la Administración del ciclo de vida de los objetos para borrar versiones de estado anteriores.

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

Inicializa Terraform

Ejecuta terraform init dentro del directorio gcp_resources/gce del repositorio. El comando te solicita que ingreses el nombre de un bucket de Cloud Storage para almacenar los archivos de estado de Terraform.

Implementa los paneles de supervisión y registro

Ejecuta terraform apply dentro del directorio gcp_resources/gce para implementar los paneles de supervisión y registro en tu proyecto de Google Cloud. El comando te solicita que proporciones valores para las siguientes variables:

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

Si quieres implementar solo el panel de supervisión, ejecuta terraform init y terraform apply dentro del directorio gcp_resources/gce/dashboard/monitoring_dashboard. Del mismo modo, ejecuta estos comandos dentro del directorio gcp_resources/gce/dashboard/logging_dashboard para implementar solo el panel de registro.

Configuración de ejemplo

Cuando ejecutas terraform apply, Terraform te solicita algunos valores de variables de configuración. En esta sección, se proporcionan algunos ejemplos de configuración que puedes usar. En cada ejemplo, se muestra el resultado que muestra el comando terraform apply, así como los valores sugeridos para cada variable de configuración en negrita. La entrada debe estar en formato JSON entre llaves ("{}").

Ejemplo 1

En este ejemplo, se especifica el nombre del proyecto de Google Cloud y se usan los valores predeterminados para el resto de la configuración.

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: {}

Ejemplo 2

En este ejemplo, se configura el panel para mostrar 5 VMs de TPU con valores atípicos.

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}

Ejemplo 3

Con esta configuración, se crea un panel en el que se muestran 10 VMs de TPU con valores atípicos que usan “test” como prefijo para los nombres de nodos que genera el panel:

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"}

Ejemplo 4

Esta configuración crea un panel que muestra 5 VMs atípicas que usan “test” como prefijación para los nombres de los nodos que genera el panel.

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}

Ejemplo 5

En este ejemplo, se configura un bucket de Cloud Storage para almacenar seguimientos de pila. Los seguimientos de pila tienen una política de retención predeterminada de 30 días.

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: {}

Ejemplo 6

En este ejemplo, se configura un bucket de Cloud Storage con un período de retención de 20 días.

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: {}