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 la lógica necesarias para supervisar y depurar flujos de trabajo que se ejecutan en VMs 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 envía un pod a través de la red: network/sent_bytes_count
  • Duración inactiva de TensorCore del chip TPU: tpu/tensorcore/idle_duration

Cloud Monitoring genera datos de métricas automáticamente. 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 una serie de paneles, cada uno de los cuales muestra datos de métricas. Para cada métrica de Cloud TPU, el tablero muestra los valores actuales de la métrica, la media y los valores máximos en paneles separados. Los paneles de promedio y máximo te permiten identificar VMs de TPU atípicas para investigarlas en detalle.

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

El panel de registro muestra 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 de gravedad, marca de tiempo y un resumen de la entrada. Puedes filtrar este panel de registros por una cadena o etiquetas de trabajador TPU, como node_id o worker_id. Por ejemplo, si agregas un filtro resource.labels.node_id:"testing", se muestran todas las entradas de seguimiento recopiladas para el trabajador de la VM de TPU con el ID establecido en "testing".

Cloud Logging recopila entradas de registro generadas por los servicios de Google Cloud, los servicios de terceros, los frameworks de IA y tu código. Puedes instalar el paquete PyPi cloud-tpu-diagnostics para escribir seguimientos de pila de Python cuando se produce una falla o una excepción, o cuando tu carga de trabajo no responde. Para obtener más información, consulta Cómo depurar VMs de Cloud TPU.

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

Configura los paneles de métricas y registro

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 crear el directorio .terraform.
  3. Ejecuta terraform init –upgrade para instalar las actualizaciones disponibles.

Configura los permisos de supervisión y registro

Los roles de administrador de supervisión, editor de configuración del panel de supervisión y administrador de registro son obligatorios 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.

Cree un bucket de Cloud Storage

Crea un bucket de Cloud Storage para almacenar los 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:

    gcloud storage buckets create gs://${GCS_BUCKET_NAME}
    
  2. Habilita el control de versiones de objetos para mantener el historial de tus implementaciones. Habilitar el control de versiones de objetos aumenta los costos de almacenamiento, lo cual se puede mitigar si configuras la Administración del ciclo de vida de los objetos para que borre versiones de estado antiguas.

    gcloud storage buckets update gs://${GCS_BUCKET_NAME} --versioning
    

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 deseas 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 configuraciones 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 letras 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 que muestre 5 VMs de TPU atípicas.

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 que muestra 10 VMs de TPU con valores atípicos que usan "prueba" como prefijo 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": &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 de valores atípicos con "test" como el prefijo 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: {}