Dashboards für Cloud TPU-Monitoring und ‑Logging

Das Repository für die Dashboards für Cloud TPU-Monitoring und ‑Logging enthält die gesamte Infrastruktur und Logik, die zum Überwachen und Debuggen von Workflows auf TPU-VMs erforderlich ist. Dazu ist das Open-Source-Tool Terraform erforderlich, mit dem Google CloudInfrastruktur mithilfe von Konfigurationsdateien definiert und verwaltet werden kann.

Monitoring-Dashboard

Im Monitoring-Dashboard werden die folgenden Cloud TPU-Messwerte angezeigt:

  • CPU-Auslastung auf dem TPU-Worker: cpu/utilization
  • Arbeitsspeichernutzung nach TPU-VM: memory/usage
  • Von einem Pod über das Netzwerk empfangene Netzwerkbyte: network/received_bytes_count
  • Von einem Pod über das Netzwerk gesendete Netzwerkbyte: network/sent_bytes_count
  • TensorCore-Inaktivitätsdauer des TPU-Chips: tpu/tensorcore/idle_duration

Cloud Monitoring generiert automatisch Messwertdaten. Rufen Sie in der Google Cloud Console das Monitoring-Dashboard auf, indem Sie Monitoring und dann Dashboards auswählen. Wählen Sie in der Liste der Dashboards GCE – TPU-Monitoring-Dashboard aus. Das Cloud TPU-Monitoring-Dashboard besteht aus mehreren Bereichen, in denen Messwertdaten angezeigt werden. Für jeden Cloud TPU-Messwert werden im Dashboard die aktuellen Daten, der Mittelwert und die Maximalwerte in separaten Bereichen angezeigt. In den Bereichen für Durchschnitt und Maximum können Sie TPU-VMs mit Ausreißerwerten sehen, die sie dann genauer untersuchen können.

Sie können TPU-Messwerte auch mit dem Metrics Explorer in derGoogle Cloud Console von Cloud Monitoring ansehen. Weitere Informationen finden Sie unter Cloud TPU-VMs überwachen.

Logging-Dashboard

Das Logging-Dashboard enthält zwei Bereiche:

  1. Logmesswerte: Hier wird die Anzahl der Stacktrace-Einträge angezeigt, die für jeden TPU-VM-Worker erfasst wurden.
  2. Logbereich: Hier werden alle Stacktrace-Einträge mit Spalten für den Schweregrad, einen Zeitstempel und eine Zusammenfassung des Eintrags angezeigt. Sie können diesen Logbereich nach einem String oder nach TPU-Worker-Labels wie node_id oder worker_id filtern. Wenn Sie beispielsweise den Filter resource.labels.node_id:"testing" hinzufügen, werden alle Trace-Einträge angezeigt, die für den TPU VM-Worker mit der ID „testing“ erfasst wurden.

Cloud Logging erfasst Logeinträge, die von Google Cloud Diensten, Drittanbieterdiensten, ML-Frameworks und Ihrem Code generiert wurden. Sie können das PyPi-Paket cloud-tpu-diagnostics installieren, um Python-Stacktraces zu schreiben, wenn ein Fehler oder eine Ausnahme auftritt oder wenn Ihre Arbeitslast nicht reagiert. Weitere Informationen finden Sie unter Cloud TPU-VMs debuggen.

Rufen Sie in der Google Cloud Console das Logging-Dashboard auf, indem Sie Monitoring und dann Dashboards auswählen. Wählen Sie in der Liste der Dashboards GCE – TPU-Logging-Dashboard aus.

Messwert- und Logging-Dashboard konfigurieren

Folgen Sie dieser Anleitung, um das Messwert- und das Logging-Dashboard zu konfigurieren.

Dashboard-Repository klonen

Sie können das Repository direkt aus dem GitHub-Repository für das Cloud TPU-Monitoring und ‑Debugging oder über die Befehlszeile klonen:

git clone https://github.com/google/cloud-tpu-monitoring-debugging.git

Terraform installieren

  1. Installieren Sie Terraform auf Ihrem lokalen Computer.
  2. Führen Sie terraform init aus, um die erforderlichen Plug-ins hinzuzufügen und das Verzeichnis .terraform zu erstellen.
  3. Führen Sie terraform init –upgrade aus, um alle verfügbaren Updates zu installieren.

Berechtigungen für Monitoring und Logging konfigurieren

Zum Bereitstellen von Monitoring-Ressourcen in Ihrem Google Cloud Projekt sind die Rollen „Monitoring-Administrator“, „Bearbeiter der Monitoring-Dashboardkonfiguration“ und „Logging-Administrator“ erforderlich. Weitere Informationen zu Monitoring-Rollen finden Sie unter Zugriff auf Cloud Monitoring gewähren.

Cloud Storage-Bucket erstellen

Erstellen Sie einen Cloud Storage-Bucket zum Speichern von Terraform-Statusdateien. Sie können auch einen vorhandenen Cloud Storage-Bucket verwenden. Wenn Sie einen Cloud Storage-Bucket verwenden, können mehrere Nutzer gleichzeitig Terraform ausführen und auf dieselbe Infrastruktur zugreifen.

  1. Erstellen Sie in Cloud Shell den Cloud Storage-Bucket:

    gcloud storage buckets create gs://${GCS_BUCKET_NAME}
    
  2. Aktivieren Sie „Objektversionsverwaltung“, um den Verlauf Ihrer Bereitstellungen zu speichern. Durch das Aktivieren von „Objektversionsverwaltung“ werden die Speicherkosten erhöht. Dies können Sie umgehen, indem Sie die Verwaltung des Objektlebenszyklus so konfigurieren, dass alte Statusversionen gelöscht werden.

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

Terraform initialisieren

Führen Sie terraform init im Verzeichnis gcp_resources/gce des Repositorys aus. Sie werden aufgefordert, den Namen eines Cloud Storage-Buckets einzugeben, in dem Terraform-Statusdateien gespeichert werden sollen.

Monitoring- und Logging-Dashboards bereitstellen

Führen Sie terraform apply im Verzeichnis gcp_resources/gce aus, um die Monitoring- und Logging-Dashboards in Ihrem Google Cloud Projekt bereitzustellen. Sie werden aufgefordert, Werte für die folgenden Variablen anzugeben:

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

Wenn Sie nur das Monitoringdashboard bereitstellen möchten, führen Sie terraform init und terraform apply im Verzeichnis gcp_resources/gce/dashboard/monitoring_dashboard aus. Führen Sie diese Befehle im Verzeichnis gcp_resources/gce/dashboard/logging_dashboard aus, um nur das Logging-Dashboard bereitzustellen.

Beispielkonfigurationen

Wenn Sie terraform apply ausführen, werden Sie von Terraform aufgefordert, einige Konfigurationsvariablenwerte einzugeben. In diesem Abschnitt finden Sie einige Beispielkonfigurationen, die Sie verwenden können. In jedem Beispiel werden die Ausgabe des Befehls „terraform apply“ sowie vorgeschlagene Werte für jede Konfigurationsvariable in Fettdruck angezeigt. Die Eingabe muss im JSON-Format vorliegen und von geschweiften Klammern („{}“) umgeben sein.

Beispiel 1

In diesem Beispiel wird der Google Cloud Projektname angegeben und für den Rest der Konfiguration werden die Standardwerte verwendet.

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

Beispiel 2

In diesem Beispiel wird das Dashboard so konfiguriert, dass 5 TPU-VMs mit Ausreißern angezeigt werden.

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

Beispiel 3

Mit dieser Konfiguration wird ein Dashboard erstellt, in dem 10 TPU-VMs mit Ausreißern angezeigt werden. Dabei wird „test“ als Präfix für die vom Dashboard generierten Knotennamen verwendet:

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

Beispiel 4

Mit dieser Konfiguration wird ein Dashboard erstellt, in dem 5 Ausreißer-VMs mit „test“ als Präfix für die vom Dashboard generierten Knotennamen angezeigt werden.

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

Beispiel 5

In diesem Beispiel wird ein Cloud Storage-Bucket zum Speichern von Stacktraces konfiguriert. Für die Stacktraces gilt standardmäßig eine Aufbewahrungsrichtlinie von 30 Tagen.

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


Beispiel 6

In diesem Beispiel wird ein Cloud Storage-Bucket mit einer Aufbewahrungsdauer von 20 Tagen konfiguriert.

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}