Supervisa las VMs de Cloud TPU

En esta guía, se explica cómo usarGoogle Cloud Monitoring para supervisar tus VMs de Cloud TPU. Google Cloud Monitoring recopila de forma automática métricas y registros de tu Cloud TPU y el host de Compute Engine. Estos datos se pueden usar para supervisar el estado de tu Cloud TPU y Compute Engine.

Las métricas te permiten hacer un seguimiento de una cantidad numérica a lo largo del tiempo, por ejemplo, el uso de CPU y la red, o la duración de inactividad de TensorCore. Los registros capturan eventos en un momento específico. Las entradas de registro las escriben tu propio código, los servicios de Google Cloud, las aplicaciones de terceros y la infraestructura de Google Cloud . También puedes generar métricas a partir de los datos presentes en una entrada de registro creando una métrica basada en registros. También puedes establecer políticas de alertas basadas en valores de métricas o entradas de registro.

En esta guía, se analiza Google Cloud Monitoring y se explica cómo hacer lo siguiente:

Para supervisar las TPU, también puedes usar el Planificador de capacidad (versión preliminar). Con el Planificador de capacidad, puedes ver los datos de uso y previsión de la TPU para tu proyecto, organización o carpeta. Estos datos se actualizan cada 24 horas y puedes usarlos para analizar las tendencias de uso y planificar las necesidades de capacidad futuras. Para obtener más información, consulta la Descripción general del Planificador de capacidad.

En este documento, se supone que tienes conocimientos básicos sobre Google CloudMonitoring. Debes tener una VM de Compute Engine y recursos de Cloud TPU creados antes de comenzar a generar y trabajar con Google Cloud Monitoring. Consulta la guía de inicio rápido de Cloud TPU para obtener más detalles.

Métricas

Las métricas deGoogle Cloud se generan de forma automática en las VMs de Compute Engine y el entorno de ejecución de Cloud TPU. Las VMs de Cloud TPU generan las siguientes métricas:

  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • cpu/utilization
  • tpu/tensorcore/idle_duration
  • accelerator/tensorcore_utilization
  • accelerator/memory_bandwidth_utilization
  • accelerator/duty_cycle
  • accelerator/memory_total
  • accelerator/memory_used

Pueden transcurrir hasta 180 segundos entre el momento en que se genera un valor de métrica y se muestra en el Explorador de métricas.

Para obtener una lista completa de las métricas que genera Cloud TPU, consulta Métricas de Cloud TPU deGoogle Cloud .

Uso de memoria

La métrica memory/usage se genera para el recurso TPU Worker y hace un seguimiento de la memoria que usa la VM de TPU en bytes. Esta métrica se muestrea cada 60 segundos.

Recuento de bytes recibidos a través de la red

La métrica network/received_bytes_count se genera para el recurso TPU Worker y hace un seguimiento de la cantidad de bytes acumulados de datos que recibió la VM de TPU a través de la red en un momento determinado.

Recuento de bytes enviados a través de la red

La métrica network/sent_bytes_count se genera para el recurso TPU Worker y hace un seguimiento de la cantidad de bytes acumulados que la VM de TPU envió a través de la red en un momento determinado.

Uso de CPU

La métrica cpu/utilization se genera para el recurso TPU Worker y hace un seguimiento del uso de CPU actual en el trabajador TPU, que se representa como un porcentaje, con muestras tomadas una vez por minuto. Los valores suelen estar entre 0.0 y 100.0, pero pueden superar el 100.0.

Duración de inactividad de TensorCore

La métrica tpu/tensorcore/idle_duration se genera para el recurso TPU Worker y hace un seguimiento de la cantidad de segundos que el TensorCore de cada chip TPU estuvo inactivo. Esta métrica está disponible para cada chip en todas las TPU en uso. Si se usa un TensorCore, el valor de duración de inactividad se restablece a cero. Cuando el TensorCore ya no está en uso, el valor de duración de inactividad comienza a aumentar.

En el siguiente grafo, se muestra la métrica tpu/tensorcore/idle_duration para una VM de TPU v2-8, que tiene un trabajador. Cada trabajador tiene cuatro chips. En este ejemplo, los cuatro chips tienen los mismos valores para tpu/tensorcore/idle_duration, por lo que los grafos se superponen.

imagen

Uso de TensorCore

La métrica accelerator/tensorcore_utilization se genera para el recurso GCE TPU Worker y hace un seguimiento del porcentaje actual del TensorCore que se utiliza. Esta métrica se calcula dividiendo la cantidad de operaciones de TensorCore realizadas durante un período de muestra por la cantidad máxima de operaciones que se pueden realizar durante el mismo período. Un valor mayor significa un mejor uso. La métrica de uso de TensorCore es compatible con las generaciones de TPU v4 y posteriores.

Uso del ancho de banda de la memoria

La métrica accelerator/memory_bandwidth_utilization se genera para el recurso GCE TPU Worker y hace un seguimiento del porcentaje actual de uso del ancho de banda de la memoria del acelerador. Esta métrica se calcula dividiendo el ancho de banda de la memoria que se usó durante un período de muestra por el ancho de banda máximo admitido durante el mismo período. Un valor mayor significa un mejor uso. La métrica del uso del ancho de banda de la memoria es compatible con las generaciones de TPU v4 y posteriores.

Ciclo de trabajo del acelerador

La métrica accelerator/duty_cycle se genera para el recurso GCE TPU Worker y hace un seguimiento del porcentaje de tiempo durante el período de muestra en el que el TensorCore del acelerador se procesaba de forma activa. Los valores se encuentran en el rango de 0 a 100. Un valor más alto significa un mejor uso de TensorCore. Esta métrica se informa cuando se ejecuta una carga de trabajo de aprendizaje automático en la VM de TPU. La métrica del ciclo de trabajo del acelerador es compatible con JAX 0.4.14 y versiones posteriores, PyTorch 2.1 y versiones posteriores, y TensorFlow 2.14.0 y versiones posteriores.

Memoria total del acelerador

La métrica de accelerator/memory_total se genera para el recurso GCE TPU Worker y hace un seguimiento de la memoria total del acelerador asignada en bytes. Esta métrica se informa cuando se ejecuta una carga de trabajo de aprendizaje automático en la VM de TPU. La métrica de la memoria total del acelerador es compatible con JAX 0.4.14 y versiones posteriores, PyTorch 2.1 y versiones posteriores, y TensorFlow 2.14.0 y versiones posteriores.

Memoria del acelerador utilizada

La métrica accelerator/memory_used se genera para el recurso GCE TPU Worker y hace un seguimiento de la memoria total del acelerador utilizada en bytes. Esta métrica se informa cuando se ejecuta una carga de trabajo de aprendizaje automático en la VM de TPU. La métrica de la memoria del acelerador utilizada es compatible con JAX 0.4.14 y versiones posteriores, PyTorch 2.1 y versiones posteriores, y TensorFlow 2.14.0 y versiones posteriores.

Consulta las métricas

Puedes ver las métricas con el Explorador de métricas en la consola de Google Cloud .

En el Explorador de métricas, haz clic en Seleccionar una métrica y busca TPU Worker o GCE TPU Worker, según la métrica que te interese. Selecciona un recurso para mostrar todas sus métricas disponibles. Si la opción Activa está habilitada, solo se enumeran las métricas con datos de series temporales en las últimas 25 horas. Inhabilita Activa para enumerar todas las métricas.

Crea alertas

Puedes crear políticas de alertas que le pidan a Cloud Monitoring que envíe una alerta cuando se cumpla una condición.

En los pasos de esta sección, se muestra un ejemplo de cómo agregar una política de alertas para la métrica de duración de inactividad de TensorCore. Cuando esta métrica supera las 24 horas, Cloud Monitoring envía un correo electrónico a la dirección registrada.

  1. Dirígete a la consola de Monitoring.
  2. En el panel de navegación, haz clic en Alertas.
  3. Haz clic en Editar un canal de notificaciones.
  4. En Correo electrónico, haz clic en Agregar nuevo. Escribe una dirección de correo electrónico, un nombre visible, y haz clic en Guardar.
  5. En la página Alertas, haz clic en Crear una política.
  6. Haz clic en Seleccionar una métrica, en Duración de inactividad de Tensorcore y, por último, en Aplicar.
  7. Haz clic en Siguiente y, luego, en Umbral.
  8. En Activador de alertas, selecciona Cualquier serie temporal tiene incumplimientos.
  9. En Posición del umbral, selecciona Por encima del umbral.
  10. En Valor del umbral, escribe 86400000.
  11. Haz clic en Siguiente.
  12. En Canales de notificaciones, selecciona tu canal de notificaciones por correo electrónico y haz clic en Aceptar.
  13. Escribe un nombre para la política de alertas.
  14. Haz clic en Siguiente y, luego, en Crear política.

Cuando la duración de inactividad de TensorCore supere las 24 horas, se enviará un correo electrónico a la dirección que especificaste.

Logging

Las entradas de registro las escriben los servicios de Google Cloud , los servicios de terceros, los frameworks de AA o tu código. Puedes ver los registros con el Explorador de registros o la API de Logging. Para obtener más información sobre el registro de Google Cloud , consulta Google Cloud Logging.

Los registros de los trabajadores TPU contienen información sobre un trabajador de Cloud TPU específico en una zona específica, por ejemplo, la cantidad de memoria disponible en el trabajador de Cloud TPU (system_available_memory_GiB).

Los registros de recursos auditados contienen información sobre cuándo se llamó a una API de Cloud TPU específica y quién realizó la llamada. Por ejemplo, puedes encontrar información sobre las llamadas a las APIs de CreateNode, UpdateNode y DeleteNode.

Los frameworks de AA pueden generar registros en la salida y el error estándares. Las variables de entorno controlan estos registros, y tu secuencia de comandos de entrenamiento los lee.

Tu código puede escribir registros a Google Cloud Logging. Para obtener más información, consulta Escribe registros estándar y Escribe registros estructurados.

Registro de puertos en serie

Cloud TPU depende del registro del puerto en serie para la solución de problemas, la supervisión y la depuración. La opción predeterminada es habilitar el registro del puerto en serie. Si el registro del puerto en serie no está habilitado, el proceso de creación de la VM de TPU falla y genera el siguiente mensaje de error.

   "Cloud TPU received a bad request. Constraint
   `constraints/compute.disableSerialPortLogging` violated. Create TPUs with
   serial port logging enabled or remove the Organization Policy Constraint."

Este mensaje indica que se incumplió la restricción constraints/compute.disableSerialPortLogging. Para evitar este error, debes asegurarte de que se permita el registro del puerto en serie para tus proyectos de TPU. La práctica recomendada es anular la política de la organización a nivel del proyecto.

Para obtener más información sobre cómo habilitar el registro del puerto en serie, consulta Inhabilita y habilita el registro de salida del puerto en serie.

Consulta registros de Google Cloud

Cuando ves los registros en la consola de Google Cloud , la página realiza una consulta predeterminada. Para ver la consulta, selecciona el interruptor de activar o desactivar Show query. Puedes modificar la consulta predeterminada o crear una nueva. Para obtener más información, consulta Crea consultas en el Explorador de registros.

Registros de recursos auditados

Para ver los registros de recursos auditados, haz lo siguiente:

  1. Dirígete al Explorador de registros de Google Cloud .
  2. Haz clic en el menú desplegable Todos los recursos.
  3. Haz clic en Recurso auditado y, luego, en Cloud TPU.
  4. Elige la API de Cloud TPU que te interese.
  5. Haz clic en Aplicar. Los registros se muestran en los resultados de la consulta.

Haz clic en cualquier entrada de registro para expandirla. Cada una tiene varios campos, incluidos los siguientes:

  • logName: el nombre del registro
  • protoPayload -> @type: el tipo de registro
  • protoPayload -> resourceName: el nombre de tu Cloud TPU
  • protoPayload -> methodName: el nombre del método que se llamó (solo en los registros de auditoría)
  • protoPayload -> request -> @type: el tipo de solicitud
  • protoPayload -> request -> node: detalles sobre el nodo de Cloud TPU
  • protoPayload -> request -> node_id: el nombre de la TPU
  • severity: la gravedad del registro

Registros de trabajador TPU

Para ver los registros de los trabajadores TPU, haz lo siguiente:

  1. Dirígete al Explorador de registros de Google Cloud .
  2. Haz clic en el menú desplegable Todos los recursos.
  3. Haz clic en Trabajador de TPU.
  4. Elige una zona.
  5. Selecciona la Cloud TPU que te interesa.
  6. Haz clic en Aplicar. Los registros se muestran en los resultados de la consulta.

Haz clic en cualquier entrada de registro para expandirla. Cada una tiene un campo llamado jsonPayload. Expande jsonPayload para ver varios campos, incluidos los siguientes:

  • accelerator_type: el tipo de acelerador
  • consumer_project: el proyecto en el que reside la Cloud TPU
  • evententry_timestamp: la hora en la que se generó el registro
  • system_available_memory_GiB: la memoria disponible en el trabajador de Cloud TPU (de 0 a 350 GiB)

Crea métricas basadas en registros

En esta sección, se describe cómo crear métricas basadas en registros que se usan para configurar paneles y alertas de supervisión. Para obtener información sobre cómo crear métricas basadas en registros de forma programática, consulta Crea métricas basadas en registros de forma programática con la API de REST de Cloud Logging.

En el siguiente ejemplo, se usa el subcampo system_available_memory_GiB para demostrar cómo crear una métrica basada en registros que supervise la memoria disponible del trabajador de Cloud TPU.

  1. Dirígete al Explorador de registros de Google Cloud .
  2. En el cuadro de consulta, ingresa la siguiente para extraer todas las entradas de registro que tengan system_available_memory_GiB definido para el trabajador principal de 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. Haz clic en Crear métrica para mostrar el Editor de métricas.

  4. En Tipo de métrica, elige Distribución.

  5. Escribe un nombre, una descripción opcional y una unidad de medición para tu métrica. Para este ejemplo, escribe "matrix_unit_utilization_percent" y "Uso de MXU" en los campos Nombre y Descripción, respectivamente. El filtro se completa previamente con la secuencia de comandos que ingresaste en el Explorador de registros.

  6. Haz clic en Crear métrica.

  7. Haz clic en Ver en el Explorador de métricas para consultar tu métrica nueva. Es posible que tus métricas tarden unos minutos en aparecer.

Crea métricas basadas en registros con la API de REST de Cloud Logging

También puedes crear métricas basadas en registros a través de la API de Cloud Logging. Para obtener más información, consulta Crea una métrica de distribución.

Crea paneles y alertas con métricas basadas en registros

Los paneles son útiles para visualizar métricas, aunque es común que se retrasen unos 2 minutos, y las alertas son útiles para enviar notificaciones cuando hay errores. Para obtener más información, consulta:

Crea paneles

Para crear un panel en Cloud Monitoring para la métrica Duración de inactividad de TensorCore, haz lo siguiente:

  1. Dirígete a la consola de Monitoring.
  2. En el panel de navegación, haz clic en Paneles.
  3. Haz clic en Crear panel y, luego, en Agregar widget.
  4. Elige el tipo de gráfico que deseas agregar. Para este ejemplo, elige Líneas.
  5. Escribe un título para el widget.
  6. Haz clic en el menú desplegable Selecciona una métrica y escribe "duración de inactividad de TensorCore" en el campo de filtro.
  7. En la lista de métricas, selecciona Trabajador de TPU -> Tpu -> Duración de inactividad de TensorCore.
  8. Para filtrar el contenido del panel, haz clic en el menú desplegable Filtro.
  9. En Etiquetas de recursos, selecciona project_id.
  10. Elige un comparador y escribe un valor en el campo Valor.
  11. Haz clic en Aplicar.