Paneles de control de monitorización y registro de TPU de Cloud

El repositorio de paneles de control de monitorización y depuración de Cloud TPU contiene toda la infraestructura y la lógica necesarias para monitorizar y depurar los 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 gestionar Google Cloud infraestructuras.

Panel de control de supervisión

El panel de control de monitorización muestra las siguientes métricas de TPU de Cloud:

  • Uso de CPU en el trabajador de TPU: cpu/utilization
  • Uso de memoria por máquina virtual de TPU: memory/usage
  • Bytes de red recibidos por un pod en la red: network/received_bytes_count
  • Bytes de red enviados por un pod en la red: network/sent_bytes_count
  • Duración de inactividad de Tensor Core del chip de TPU: tpu/tensorcore/idle_duration

Cloud Monitoring genera automáticamente datos de métricas. Para ver el panel de control de monitorización, ve a la consola, selecciona Monitorización y, a continuación, Paneles de control. Google Cloud Selecciona GCE - TPU Monitoring Dashboard (Panel de control de monitorización de TPU de GCE) en la lista de paneles de control. El panel de control de monitorización de Cloud TPU se compone de varios paneles, cada uno de los cuales muestra datos de métricas. En cada métrica de TPU de Cloud, el panel de control muestra los valores actuales de la métrica, la media y los valores máximos en paneles independientes. Los paneles de media y máximo te permiten identificar las máquinas virtuales de TPU atípicas para investigar más a fondo.

También puedes ver las métricas de TPU mediante el explorador de métricas de la consola de Cloud MonitoringGoogle Cloud . Para obtener más información, consulta Monitorizar VMs de TPU de Cloud.

Panel de control de registro

El panel de control de registro muestra dos secciones:

  1. Métricas de registro: muestra el recuento de entradas de seguimiento de pila recogidas de cada trabajador de la 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 por etiquetas de trabajador de TPU, como node_id o worker_id. Por ejemplo, si añade un filtro resource.labels.node_id:"testing", se mostrarán todas las entradas de traza recogidas para el trabajador de la VM de TPU con el ID "testing".

Cloud Logging recoge las entradas de registro generadas por Google Cloud servicios, servicios de terceros, frameworks de aprendizaje automático y tu código. Puedes instalar el paquete cloud-tpu-diagnostics PyPi para escribir seguimientos de pila de Python cuando se produzca un error o una excepción, o cuando tu carga de trabajo no responda. Para obtener más información, consulta el artículo sobre cómo depurar VMs de TPU de Cloud.

Para ver el panel de control de registro, ve a la Google Cloud consola, selecciona Monitorización y, a continuación, Paneles de control. Selecciona GCE - TPU Logging Dashboard (Panel de registro de GCE - TPU) en la lista de paneles.

Configurar los paneles de métricas y de registro

Sigue estas instrucciones para configurar los paneles de control de métricas y registros.

Clona el repositorio del panel de control

Puedes clonar el repositorio directamente desde el repositorio de GitHub de monitorizació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

Instalar Terraform

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

Configurar permisos para la monitorización y el registro

Para desplegar recursos de monitorización en tu Google Cloud proyecto, necesitas los roles Administrador de Monitoring, Editor de configuración del panel de control de Monitoring y Administrador de Logging. Para obtener más información sobre los roles de monitorización, consulta el artículo Conceder acceso a Cloud Monitoring.

Crea un segmento de Cloud Storage

Crea un segmento de Cloud Storage para almacenar archivos de estado de Terraform. También puedes usar un segmento de Cloud Storage que ya tengas. Si usas un contenedor de Cloud Storage, varios usuarios podrán ejecutar Terraform al mismo tiempo y acceder a la misma infraestructura.

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

    gcloud storage buckets create gs://${GCS_BUCKET_NAME}
    
  2. Habilita la gestión de versiones de objetos para conservar el historial de tus implementaciones. Si habilitas la gestión de versiones de objetos, aumentarán los costes de almacenamiento, que puedes mitigar configurando la gestión del ciclo de vida de los objetos para que elimine las versiones antiguas.

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

Inicializar Terraform

Ejecuta terraform init en el directorio gcp_resources/gce del repositorio. El comando te pide que introduzcas el nombre de un segmento de Cloud Storage para almacenar los archivos de estado de Terraform.

Implementar los paneles de control de monitorización y registro

Ejecuta terraform apply en el directorio gcp_resources/gce para implementar los paneles de control de monitorización y registro en tu proyecto Google Cloud . El comando te pedirá que proporciones valores para las siguientes variables:

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

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

Configuraciones de ejemplo

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

Ejemplo 1

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

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": <the number of outliers to show on dashboard, default to 10 if not set>
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

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

Ejemplo 2

En este ejemplo se configura el panel de control para que muestre 5 máquinas virtuales de TPU atípicas.

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}

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

Ejemplo 3

Esta configuración crea un panel de control que muestra 10 VMs de TPU atípicas usando "test" como prefijo de los nombres de los nodos generados por el panel de control:

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

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

Ejemplo 4

Esta configuración crea un panel de control que muestra 5 máquinas virtuales atípicas y usa "test" como prefijo de los nombres de los nodos generados por el panel de control.

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}

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

Ejemplo 5

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

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

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


Ejemplo 6

En este ejemplo se configura un segmento de Cloud Storage con un periodo de conservación de 20 días.

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

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}