Supervisa las TPU
En esta guía, se explica cómo usar Cloud Monitoring para supervisar tus VMs de TPU. Cloud Monitoring recopila automáticamente métricas y registros de tu TPU y su VM host. Estos datos se pueden usar para supervisar el estado de tu 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 deGoogle Cloud , las aplicaciones de terceros y la infraestructura deGoogle 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.
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.
Accede a las métricas de TPU
Compute Engine genera dos tipos de métricas de TPU: métricas del entorno de ejecución de TPU y métricas de infraestructura de la VM de TPU. Puedes obtener las métricas de dos maneras:
Biblioteca de supervisión de TPU: Obtén métricas del entorno de ejecución de TPU desde el SDK de LibTPU con la biblioteca de supervisión de TPU. Esto permite que tus aplicaciones obtengan telemetría en tiempo real desde el entorno de invitado. Para obtener más información, consulta la biblioteca de supervisión de TPU.
Recopilador de telemetría de IA: Obtén métricas de tiempo de ejecución y de infraestructura de VM a través del recopilador de telemetría de IA. El recopilador de telemetría de IA se ejecuta dentro de la VM de TPU y te permite acceder a las métricas a través de Cloud Monitoring o de tu propia canalización de supervisión basada en Prometheus. Para obtener más información, consulta AI Telemetry Collector.
Métricas de TPU
Las métricas deGoogle Cloud para Cloud TPU se generan automáticamente en las VMs de Compute Engine y el entorno de ejecución de Cloud TPU. Las métricas de la siguiente tabla se generan a partir de las VMs de Compute Engine.
Las cadenas de “tipo de métrica” de esta tabla deben tener el prefijo compute.googleapis.com/. Este prefijo se omitió en las entradas de la tabla. Cuando consultes una etiqueta, usa el prefijo metric.labels. Por ejemplo,
metric.labels.LABEL="VALUE".
| Tipo de métrica Etapa de lanzamiento (niveles de jerarquía de recursos) Nombre visible |
|
|---|---|
| Clase, tipo, unidad Recursos supervisados |
Descripción Etiquetas |
instance/tpu/accelerator/duty_cycle
BETA
(proyecto)
Ciclo de trabajo del acelerador |
|
GAUGE, DOUBLE, %
gce_instance |
Porcentaje de tiempo durante el período de muestra en el que el acelerador se procesaba de forma activa. Los valores se encuentran en el rango de [0,100].
accelerator_id:
Es el ID del dispositivo del acelerador.
|
instance/tpu/accelerator/memory_bandwidth_utilization
BETA
(proyecto)
Uso del ancho de banda de la memoria del acelerador |
|
GAUGE, DOUBLE, %
gce_instance |
Porcentaje actual de memoria y ancho de banda del acelerador en uso. Se calcula dividiendo el ancho de banda de memoria usado durante un período de muestra por el ancho de banda máximo admitido durante el mismo período.
accelerator_id:
Es el ID del dispositivo del acelerador.
|
instance/tpu/accelerator/memory_total
BETA
(proyecto)
Memoria total del acelerador |
|
GAUGE, INT64, By
gce_instance |
Memoria total del acelerador asignada actualmente en bytes.
accelerator_id:
Es el ID del dispositivo del acelerador.
|
instance/tpu/accelerator/memory_used
BETA
(proyecto)
Memoria del acelerador utilizada |
|
GAUGE, INT64, By
gce_instance |
Memoria total del acelerador que se usa actualmente en bytes.
accelerator_id:
Es el ID del dispositivo del acelerador.
|
instance/tpu/accelerator/tensorcore_utilization
BETA
(proyecto)
Uso de TensorCore del acelerador |
|
GAUGE, DOUBLE, %
gce_instance |
Porcentaje actual del TensorCore que se usa. Se calcula dividiendo las operaciones de TensorCore que se realizaron durante un período de muestra por la cantidad admitida de operaciones de TensorCore durante el mismo período de muestra.
accelerator_id:
Es el ID del dispositivo del acelerador.
|
instance/tpu/active_chips
BETA
(proyecto)
Recuento de chips de TPU activos |
|
GAUGE, INT64, 1
gce_instance |
Es el recuento actual de chips que se utilizan de forma activa (es decir, que no están inactivos).
accelerator_type:
Tipo y generación del acelerador.
reservation_id:
Es el ID de la reserva de la máquina física.
provisioning_model:
Es el modelo de aprovisionamiento asociado.
protection_tier:
Es el modelo de protección asociado.
block_id:
Es el ID del bloque dentro del clúster que aloja la VM.
subblock_id:
Es el ID del subbloque que aloja la VM.
is_exr:
(BOOL)
Indica si el chip forma parte de una reserva extendida.
|
instance/tpu/chip_state
BETA
(proyecto)
Recuento de estados de chips de TPU |
|
GAUGE, INT64, 1
gce_instance |
Es el recuento de chips TPU en varios estados, como en buen estado, en mal estado y desconocido.
state:
Es el estado del chip.
accelerator_type:
Tipo y generación del acelerador.
block_id:
Es el ID del bloque dentro del clúster que aloja la VM.
subblock_id:
Es el ID del subbloque que aloja la VM.
reservation_id:
Es el ID de la reserva de la máquina física.
is_exr:
(BOOL)
Indica si el chip forma parte de una reserva extendida.
|
instance/tpu/infra_health
BETA
(proyecto)
Estado de la instancia de TPU |
|
GAUGE, INT64, 1
gce_instance |
Indica el estado general de una instancia de TPU. Las etiquetas de métricas ayudan a identificar el estado de salud específico y los motivos de los problemas en las instancias de TPU degradadas o en mal estado, principalmente en lo que respecta al hardware y el estado del sistema de la TPU. Es posible que los cambios en el estado de salud tarden varios minutos en reflejarse en esta métrica. Se hace un muestreo cada 60 segundos. Luego del muestreo, los datos no son visibles durante un máximo de 420 segundos.
health_status:
Es el estado general de la instancia de TPU. Valores posibles: HEALTHY (funciona según lo esperado), UNHEALTHY (se detectó un problema crítico), DEGRADED (problema que afecta el rendimiento), UNKNOWN (no se puede determinar el estado).
unhealthy_category:
Explicación del estado de VM en mal estado. Esta etiqueta solo se completa cuando el valor de la métrica es Unhealthy.
machine_type:
Es el tipo de máquina de la instancia (p.ej., ct6e-standard-4t-tpu).
machine_id:
Es el ID de la máquina física que aloja la VM.
block_id:
Es el ID del bloque dentro del clúster que aloja la VM.
cluster_id:
Es el ID del clúster que aloja la VM.
reservation_id:
Es el ID de la reserva de la máquina física.
subblock_id:
Es el ID del subbloque que aloja la VM.
|
instance/tpu/runtime/uptime
BETA
(proyecto)
Tiempo de actividad del entorno de ejecución |
|
GAUGE, INT64, s
gce_instance |
Tiempo de actividad del entorno de ejecución de AA desde la inicialización de la biblioteca del entorno de ejecución (libtpu.so) por parte del trabajo de AA. Durante este período, la biblioteca de tiempo de ejecución bloquea los dispositivos TPU para que el trabajo de AA no los use.
ml_framework_name:
Nombre del framework de AA.
ml_framework_version:
Es la versión del framework de AA.
|
instance/tpu/scheduled_chips
BETA
(project)
Recuento de chips de TPU programados |
|
GAUGE, INT64, 1
gce_instance |
Es el recuento actual de chips asignados a una VM que está en buen estado y NO está INHABILITADA para mantenimiento.
accelerator_type:
Tipo y generación del acelerador.
reservation_id:
Es el ID de la reserva de la máquina física.
provisioning_model:
Es el modelo de aprovisionamiento asociado.
protection_tier:
Es el modelo de protección asociado.
block_id:
Es el ID del bloque dentro del clúster que aloja la VM.
subblock_id:
Es el ID del subbloque que aloja la VM.
is_exr:
(BOOL)
Indica si el chip forma parte de una reserva extendida.
|
instance/tpu/utilized_chips
BETA
(proyecto)
Chips de TPU utilizados |
|
GAUGE, DOUBLE, 1
gce_instance |
La capacidad agregada utilizada actual, expresada como una cantidad efectiva de chips activos. Equivale a la suma del uso fraccionario (de 0.0 a 1.0) de todos los chips activos.
accelerator_type:
Tipo y generación del acelerador.
reservation_id:
Es el ID de la reserva de la máquina física.
provisioning_model:
Es el modelo de aprovisionamiento asociado.
protection_tier:
Es el modelo de protección asociado.
block_id:
Es el ID del bloque dentro del clúster que aloja la VM.
subblock_id:
Es el ID del subbloque que aloja la VM.
is_exr:
(BOOL)
Indica si el chip forma parte de una reserva extendida.
|
quota/tpus_per_tpu_family/exceeded
ALFA
(project)
Error por exceso de cuota de recuento de TPU por familia de TPU |
|
DELTA, INT64, 1
compute.googleapis.com/Location |
Cantidad de intentos para superar el límite en la métrica de cuota compute.googleapis.com/tpus_per_tpu_family. Luego del muestreo, los datos no son visibles durante un máximo de 150 segundos.
limit_name:
Es el nombre del límite.
tpu_family:
Dimensión personalizada de la familia de TPU.
|
quota/tpus_per_tpu_family/limit
ALPHA
(project)
Límite de cuota para el recuento de TPU por familia de TPU |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Límite actual en la métrica de cuota compute.googleapis.com/tpus_per_tpu_family. Se hace un muestreo cada 60 segundos. Luego del muestreo, los datos no son visibles durante un máximo de 150 segundos.
limit_name:
Es el nombre del límite.
tpu_family:
Dimensión personalizada de la familia de TPU.
|
quota/tpus_per_tpu_family/usage
ALFA
(project)
Recuento de TPU por familia de TPU. Uso de la cuota |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Uso actual de la métrica de cuota compute.googleapis.com/tpus_per_tpu_family. Luego del muestreo, los datos no son visibles durante un máximo de 150 segundos.
limit_name:
Es el nombre del límite.
tpu_family:
Dimensión personalizada de la familia de TPU.
|
tpu/multislice/accelerator/device_to_host_transfer_latencies
BETA
(proyecto)
Latencias de transferencia de dispositivo a host |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de la latencia de transferencia de dispositivo a host para cada fragmento de datos. La latencia comienza cuando se emite la solicitud de transferencia de datos al host y finaliza cuando se recibe una confirmación de que se completó la transferencia de datos.
buffer_size:
Tamaño del búfer.
|
tpu/multislice/accelerator/host_to_device_transfer_latencies
BETA
(proyecto)
Latencias de transferencia de host a dispositivo |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de la latencia de transferencia de host a dispositivo para cada fragmento de datos del tráfico de varias porciones. La latencia comienza cuando se emite la solicitud de transferencia de datos al dispositivo y finaliza cuando se recibe una confirmación de que se completó la transferencia de datos.
buffer_size:
Tamaño del búfer.
|
tpu/multislice/network/collective_end_to_end_latencies
BETA
(proyecto)
Latencias colectivas de extremo a extremo |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de la latencia colectiva de extremo a extremo para el tráfico de varias porciones. Una latencia comienza cuando se emite la solicitud para el colectivo y finaliza cuando se recibe una confirmación de que se completó la transferencia de datos.
input_size:
Tamaño de entrada de la operación colectiva.
collective_type:
Es el tipo de operación colectiva.
|
tpu/multislice/network/dcn_transfer_latencies
BETA
(proyecto)
Latencias de transferencia de DCN |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de las latencias de transferencia de red para el tráfico de varias porciones. La latencia comienza cuando se emite la solicitud de transferencia de datos a través de la DCN y finaliza cuando se recibe una confirmación de que se completó la transferencia de datos.
buffer_size:
Tamaño del búfer.
type:
Tipo.
|
tpu/multislice/network/grpc_client_call_latencies
BETA
(proyecto)
Latencias de llamadas de cliente de gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de las latencias de transferencia de red que tarda la biblioteca de gRPC en completar una RPC desde la perspectiva de la entidad que llama.
buffer_size:
Tamaño del búfer.
|
tpu/multislice/network/grpc_server_call_latencies
BETA
(proyecto)
Latencias de llamadas del servidor de gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de las latencias de transferencia de red para que el servidor de gRPC complete una RPC desde la perspectiva del transporte.
buffer_size:
Tamaño del búfer.
|
tpu/multislice/network/grpc_tcp_delivery_rates
BETA
(proyecto)
Tasas de entrega de TCP de gRPC |
|
CUMULATIVE, DISTRIBUTION, Mb/s
gce_instance |
Distribución acumulativa de las tasas de transferencia de datos de las conexiones TCP. Cada muestra es la tasa de transferencia de datos promedio más reciente para una conexión TCP determinada durante el último intervalo de ACK de TCP. Cada 20 s, se extraen muestras de las tasas de transferencia de datos del kernel de TCP de Linux, por lo que se puede esperar que cada conexión TCP cree aproximadamente 3 muestras por intervalo de 60 s. |
tpu/multislice/network/grpc_tcp_min_round_trip_times
BETA
(proyecto)
Tiempos de ida y vuelta mínimos de TCP de gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribución acumulativa de las latencias mínimas de transferencia de red por conexión TCP. |
tpu/multislice/network/grpc_tcp_packets_retransmitted_count
BETA
(project)
Recuento de paquetes TCP de gRPC retransmitidos |
|
CUMULATIVE, INT64, 1
gce_instance |
Recuento total de paquetes retransmitidos. |
tpu/multislice/network/grpc_tcp_packets_sent_count
BETA
(project)
Recuento de paquetes TCP de gRPC enviados |
|
CUMULATIVE, INT64, 1
gce_instance |
Recuento total de paquetes que envía TCP. |
tpu/slice/capacity/available_chips
BETA
(proyecto)
Recuento de chips de TPU disponibles |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
Es el recuento actual de chips de TPU de la reserva extendida que están disponibles de forma activa y listos para usarse. Se hace un muestreo cada 60 segundos. Luego del muestreo, los datos no son visibles durante un máximo de 360 segundos.
accelerator_type:
Tipo y generación del acelerador.
reservation_id:
Es el ID de la reserva de la máquina física.
block_id:
Es el ID del bloque asociado con el segmento.
subblock_id:
Es el ID del subbloque asociado con el segmento.
provisioning_model:
Es el modelo de aprovisionamiento asociado.
protection_tier:
Es el modelo de protección asociado.
|
tpu/slice/capacity/committed_chips
BETA
(proyecto)
Recuento de chips TPU comprados |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
Es el recuento actual de chips TPU comprados de la reserva extendida. Se hace un muestreo cada 60 segundos. Luego del muestreo, los datos no son visibles durante un máximo de 360 segundos.
accelerator_type:
Tipo y generación del acelerador.
reservation_id:
Es el ID de la reserva de la máquina física.
block_id:
Es el ID del bloque asociado con el segmento.
subblock_id:
Es el ID del subbloque asociado con el segmento.
provisioning_model:
Es el modelo de aprovisionamiento asociado.
protection_tier:
Es el modelo de protección asociado.
|
Para obtener una lista completa de las métricas que genera Compute Engine, consulta Métricas de Compute Engine.
Recopilador de telemetría de IA
El recopilador de telemetría de IA recopila y publica métricas de TPU en el espacio de nombres compute.googleapis.com para las TPU creadas con la API de Compute Engine.
Estas métricas son métricas integradas del sistema que proporcionan visibilidad del estado y el rendimiento.
La arquitectura del recopilador de telemetría de IA está diseñada como un recopilador de OpenTelemetry (OTEL) especializado y ligero. Utiliza dos receptores principales para capturar datos:
- TPU Runtime Receiver: Extrae métricas de tiempo de ejecución y de carga de trabajo (como el ciclo de trabajo y el uso de memoria) directamente del entorno de ejecución de TPU cuando hay una carga de trabajo de aprendizaje automático activa.
- TPU Host Receiver: Captura métricas de uso del hardware, como el uso de TensorCore y el uso de ancho de banda de memoria, directamente desde el dispositivo, independientemente de si se está ejecutando una carga de trabajo.
Luego, el recopilador de telemetría de IA usa procesadores para aplicar automáticamente las etiquetas de recursos necesarias (como project_id, instance_id y zone) y exporta de forma segura la telemetría directamente a Cloud Monitoring.
El recopilador de telemetría de IA viene preinstalado en las imágenes de Ubuntu LTS optimizadas para TPU de Google y se ejecuta automáticamente cuando se inicia la VM. Para usar esta configuración, especifica el proyecto y la familia de imágenes de aceleradores oficiales de Google cuando crees una instancia de VM de TPU o una plantilla de instancias. Una vez que se inicia la VM, el recopilador de telemetría de IA envía automáticamente las métricas a los paneles de Cloud Monitoring.
Si compilas imágenes personalizadas del sistema operativo, puedes usar el recopilador de telemetría de IA después de instalar y ejecutar la imagen de Docker ai-telemetry-collector. Para obtener más información, consulta Usa una imagen del SO personalizada.
Configuración
El recopilador de telemetría de IA envía automáticamente métricas a los paneles de Cloud Monitoring y no requiere pasos de configuración adicionales. Sin embargo, puedes configurar el paquete Snap o la imagen de Docker para agregar destinos de exportación externos, modificar los intervalos de recopilación de métricas y agregar opciones de depuración.
Puedes reemplazar la configuración predeterminada por un archivo de configuración nuevo o agregar un archivo de configuración adicional a la configuración predeterminada existente. Cuando se agregan configuraciones, se agregan las claves que aún no existen y se reemplazan las que ya existen. Sin embargo, los arrays y las listas no son aditivos, por lo que las listas nuevas deben incluir tanto los valores existentes como los nuevos.
El siguiente archivo YAML configura el recopilador de telemetría de IA para enviar métricas a Prometheus, un kit de herramientas de alertas y supervisión de sistemas de código abierto. También habilita la opción de depuración, que imprime métricas en la consola.
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
exporters:
- prometheus # For more: https://prometheus.io/docs/introduction/overview/
- googlecloud # If you do not include this, you'll lose Google Cloud Monitoring
- debug # print metrics within the console
SO predeterminado
Si usas las imágenes de Ubuntu LTS optimizadas para TPU de Google, ejecuta el siguiente comando de Snap para agregar el nuevo archivo de configuración a la configuración existente:
sudo snap set \
ai-telemetry-collector \
extra-flags="--config /home/username/additional-config.yaml"
Si deseas anular y reemplazar la configuración existente, usa la marca config-path en lugar de extra-flags:
sudo snap set \
ai-telemetry-collector \
config-path="/home/username/new-config.yaml"
El comando snap set debería activar un reinicio automático del recopilador de telemetría de IA. Para verificar que el recopilador se reinició y aplicó correctamente tus configuraciones, usa el siguiente comando para ver los registros:
sudo snap logs -f ai-telemetry-collector
SO personalizado
Si usas un SO personalizado, ejecuta el siguiente comando de Docker para agregar el nuevo archivo de configuración a la configuración existente:
# First apply the default configs via `--config=/etc/ai-telemetry-collector/config.yaml`
# Then apply your additional config by volume mount.
docker run --privileged --net=host \
-v <path>/additional-config.yaml:/etc/ai-telemetry-collector/additional-config.yaml \
ai-telemetry-collector:latest \
--config=/etc/ai-telemetry-collector/config.yaml \
--config=/etc/ai-telemetry-collector/additional-config.yaml
Si deseas reemplazar la configuración existente, usa el siguiente comando de Docker:
# Mount a volume (your config file) to `/etc/ai-telemetry-collector/config.yaml`
# The binary automatically picks up this file.
docker run --privileged --net=host \
-v <path>/my-config.yaml:/etc/ai-telemetry-collector/config.yaml \
ai-telemetry-collector:latest
Registros de auditoría
Los servicios deGoogle Cloud generan registros de auditoría que registran las actividades administrativas y de acceso dentro de tus recursos de Google Cloud . Para obtener más información, consulta Registro de auditoría de Compute Engine.