Los clústeres de entrenamiento ejecutan verificaciones de estado automáticas en tus nodos y realizan intervenciones cuando falla una verificación. Por ejemplo, cuando se identifica un error fatal de XID, puede vaciar el nodo, volver a poner en cola el trabajo de Slurm afectado y volver a crear el nodo. Cada una de estas intervenciones se escribe en los registros de tu proyecto como un evento de resiliencia.
En esta página, se muestra cómo compilar un panel personalizado de Cloud Monitoring que muestre esos eventos de resiliencia junto con el estado de Slurm de tus nodos de procesamiento, de modo que puedas ver qué acciones de recuperación tomó el servicio y cómo se correlacionan con el estado de tu clúster. El panel tiene dos gráficos:
- Estados de nodos de Slurm: La cantidad de nodos en cada estado de Slurm a lo largo del tiempo,
tomada de la métrica
hypercomputecluster.googleapis.com/slurm/node_state. - Eventos de resiliencia: Un recuento de eventos de resiliencia, desglosado por tipo de evento, tomado de una métrica basada en registros que creas en la siguiente sección.
Antes de comenzar
Instala e inicializa Google Cloud CLI y, luego, configura el proyecto que contiene tus clústeres de entrenamiento:
gcloud auth login gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el ID de tu proyecto.
Roles obligatorios
Para obtener los permisos que necesitas para crear la métrica basada en registros y el panel, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Crear la métrica basada en registros:
Escritor de configuración de registros (
roles/logging.configWriter) -
Crear el panel:
Editor de configuración del panel de Monitoring (
roles/monitoring.dashboardEditor)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para crear la métrica basada en registros y el panel. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear la métrica basada en registros y el panel:
-
Crear la métrica basada en registros:
logging.logMetrics.create -
Crear el panel:
monitoring.dashboards.create
También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.
Crea la métrica basada en registros
Los eventos de resiliencia se registran en los registros de tu proyecto, en los que cada evento lleva una etiqueta event_type con el prefijo RESILIENCE_EVENT_TYPE_. Para ver los eventos sin procesar en el Explorador de registros, usa la siguiente consulta:
labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"
Cloud Monitoring no puede graficar entradas de registro directamente, por lo que primero debes convertir esta consulta en una métrica basada en registros.
Guarda la siguiente configuración en un archivo llamado
resilience_metric.yaml:name: training_cluster_resilience_events description: "Resilience events on training cluster nodes (VM instances)." filter: 'resource.type="gce_instance" AND labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"' metricDescriptor: metricKind: DELTA valueType: INT64 unit: "1" labels: - key: cluster_id valueType: STRING description: "The ID of the training cluster." - key: event_type valueType: STRING description: "The type of resilience event." - key: slurm_job_name valueType: STRING description: "The name of the Slurm job that triggered the resilience event, if applicable." - key: slurm_job_id valueType: STRING description: "The ID of the Slurm job that triggered the resilience event, if applicable." - key: slurm_job_partition valueType: STRING description: "The partition that the resilience event acts on." labelExtractors: cluster_id: "EXTRACT(labels.cluster_id)" event_type: "EXTRACT(labels.event_type)" slurm_job_name: "EXTRACT(labels.slurm_job_name)" slurm_job_id: "EXTRACT(labels.slurm_job_id)" slurm_job_partition: "EXTRACT(labels.slurm_job_partition)"El campo
labelExtractorscopia las etiquetas de cada entrada de registro en la métrica, lo que te permite desglosar el gráfico por tipo de evento, por clúster o por trabajo de Slurm.Crea la métrica:
gcloud logging metrics create training_cluster_resilience_events \ --config-from-file=resilience_metric.yamlVerifica que la métrica exista:
gcloud logging metrics describe training_cluster_resilience_eventsTambién puedes confirmar la métrica en la Google Cloud consola en la página Métricas basadas en registros.
Crea el panel
Guarda la siguiente configuración en un archivo llamado
resilience_dashboard.json:{ "displayName": "Training Clusters Resilience Dashboard", "mosaicLayout": { "columns": 48, "tiles": [ { "height": 16, "width": 24, "widget": { "title": "Slurm node states", "xyChart": { "chartOptions": { "mode": "COLOR" }, "dataSets": [ { "minAlignmentPeriod": "60s", "plotType": "LINE", "targetAxis": "Y1", "timeSeriesQuery": { "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_SUM", "groupByFields": [ "metric.label.\"state\"" ], "perSeriesAligner": "ALIGN_MEAN" }, "filter": "metric.type=\"hypercomputecluster.googleapis.com/slurm/node_state\" resource.type=\"gce_instance\"" } } } ], "yAxis": { "scale": "LINEAR" } } } }, { "yPos": 16, "height": 16, "width": 24, "widget": { "title": "Resilience events", "xyChart": { "chartOptions": { "mode": "COLOR" }, "dataSets": [ { "minAlignmentPeriod": "60s", "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_COUNT", "groupByFields": [ "metric.label.\"event_type\"" ], "perSeriesAligner": "ALIGN_COUNT" }, "filter": "metric.type=\"logging.googleapis.com/user/training_cluster_resilience_events\" resource.type=\"gce_instance\"" } } } ], "yAxis": { "scale": "LINEAR" } } } } ] } }Si le diste un nombre diferente a la métrica basada en registros en la sección anterior, cambia el filtro
logging.googleapis.com/user/para que coincida.Crea el panel:
gcloud monitoring dashboards create \ --config-from-file=resilience_dashboard.jsonEn la Google Cloud consola, ve a la página Paneles y, luego, en Mis paneles, abre Panel de resiliencia de clústeres de entrenamiento. El panel puede tardar aproximadamente un minuto en aparecer.
Soluciona problemas
En las siguientes secciones, se describen los problemas que es más probable que encuentres después de crear la métrica y el panel.
El gráfico "Eventos de resiliencia" está vacío
Una métrica basada en registros no se propaga de forma retroactiva. Solo cuenta las entradas de registro que llegan después de que creas la métrica. Como se explica en la descripción general de las métricas basadas en registros, una métrica no se propaga de forma retroactiva con datos de entradas de registro que ya están en Cloud Logging.
Si se produjeron eventos de resiliencia desde que creaste la métrica y el gráfico está aún vacío, confirma que los eventos estén presentes en el Explorador de registros ejecutando la consulta en Crea la métrica basada en registros.
Al gráfico "Estados de nodos de Slurm" le faltan algunos clústeres
La métrica hypercomputecluster.googleapis.com/slurm/node_state solo la informan los clústeres que ejecutan una versión lo suficientemente reciente del software del clúster. Si falta un
clúster en el gráfico,
actualiza el clúster
y, luego, vuelve a consultar el gráfico.
El gráfico "Estados de nodos de Slurm" no muestra nodos de acceso
Esta situación es esperable. Los nodos de acceso no tienen un estado de Slurm, como idle o mixed, por lo que no informan la métrica slurm/node_state.
El gráfico "Eventos de resiliencia" cuenta eventos en exceso
Cloud Logging procesa cada entrada de registro al menos una vez, por lo que un error interno transitorio puede hacer que una entrada se cuente más de una vez. Para obtener más información, consulta Soluciona problemas de métricas basadas en registros.
Las entradas de registro en sí son la fuente de información. Para obtener un recuento exacto de un período, consulta los eventos en el Explorador de registros en lugar de leerlos en el gráfico.
¿Qué sigue?
- Obtén información sobre cómo funciona la resiliencia del clúster.
- Visualiza los paneles de observabilidad precompilados para un clúster.
- Supervisa los trabajos de entrenamiento en Gemini Enterprise Agent Platform.