

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# GPU-Überwachung und -Optimierung
<a name="tutorial-gpu"></a>

Der folgende Abschnitt führt Sie durch GPU-Optimierungs und -Überwachungsoptionen. Dieser Abschnitt ist wie ein typischer Workflow mit Überwachung, Beaufsichtigung, Vorverarbeitung und Schulung aufgebaut. 
+ [Überwachen](tutorial-gpu-monitoring.md)
  + [Überwachen Sie mit GPUs CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimierung](tutorial-gpu-opt.md)
  + [Vorverarbeitung](tutorial-gpu-opt-preprocessing.md)
  + [Training](tutorial-gpu-opt-training.md)

# Überwachen
<a name="tutorial-gpu-monitoring"></a>

Auf Ihrem DLAMI sind mehrere GPU-Überwachungstools vorinstalliert. Diese Anleitung erwähnt auch Tools, die heruntergeladen und installiert werden können.
+ [Überwachen Sie mit GPUs CloudWatch](tutorial-gpu-monitoring-gpumon.md)- ein vorinstalliertes Hilfsprogramm, das Statistiken zur GPU-Nutzung an Amazon CloudWatch meldet.
+ [nvidia-CLI](https://developer.nvidia.com/nvidia-system-management-interface) – ein Dienstprogramm zur Überwachung der allgemeinen GPU-Rechenleistungs- und -Speichernutzung. Dies ist auf Ihrem AWS Deep Learning AMIs (DLAMI) vorinstalliert.
+ [NVML C-Bibliothek](https://developer.nvidia.com/nvidia-management-library-nvml) - eine auf C basierende API für den direkten Zugriff auf GPU-Überwachungs- und Verwaltungsfunktionen. Dies wird von der nvidia-smi-CLI intern verwendet und ist auf Ihrem DLAMI vorinstalliert. Dazu gehören weiterhin Python- und Perl-Anbindungen zur Unterstützung der Bereitstellung in diesen Sprachen. Das auf Ihrem DLAMI vorinstallierte Hilfsprogramm gpumon.py verwendet das Paket pynvml von. [nvidia-ml-py](https://pypi.org/project/nvidia-ml-py/)
+ [NVIDIA DCGM](https://developer.nvidia.com/data-center-gpu-manager-dcgm) - Ein Cluster-Management-Tool. Besuchen Sie die Entwicklerseite, um zu erfahren, wie Sie dieses Tool installieren und konfigurieren.

**Tipp**  
Im Entwickler-Blog von NVIDIA finden Sie die neuesten Informationen zur Verwendung der auf Ihrem DLAMI installierten CUDA-Tools:  
[Überwachung TensorCore der Auslastung mit Nsight](https://devblogs.nvidia.com/using-nsight-compute-nvprof-mixed-precision-deep-learning-models/) IDE und nvprof.

# Überwachen Sie mit GPUs CloudWatch
<a name="tutorial-gpu-monitoring-gpumon"></a>

Wenn Sie Ihre DLAMI mit einem GPU verwenden, stellen Sie möglicherweise fest, dass Sie auf der Suche nach Möglichkeiten zur Nachverfolgung der Nutzung während der Schulung oder Inferenz sind. Dies kann nützlich sein, um Ihre Datenpipeline zu optimieren und Ihr Deep Learning-Netzwerk zu verfeinern. 

Es gibt zwei Möglichkeiten, GPU-Metriken zu konfigurieren mit CloudWatch:
+ [Metriken mit dem AWS CloudWatch Agenten konfigurieren (empfohlen)](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-guide)
+ [Konfigurieren Sie Metriken mit dem vorinstallierten Skript `gpumon.py`](#tutorial-gpu-monitoring-gpumon-script)

## Metriken mit dem AWS CloudWatch Agenten konfigurieren (empfohlen)
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-guide"></a>

Integrieren Sie Ihr DLAMI in den [Unified CloudWatch Agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html), um GPU-Metriken zu konfigurieren und die Nutzung von GPU-Koprozessen in Amazon EC2 EC2-beschleunigten Instances zu überwachen.

Es gibt vier Möglichkeiten, [GPU-Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-NVIDIA-GPU.html) mit Ihrem DLAMI zu konfigurieren:
+ [Konfigurieren Sie minimale GPU-Metriken](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-minimal)
+ [Konfigurieren Sie partielle GPU-Metriken](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-partial)
+ [Konfigurieren Sie alle verfügbaren GPU-Metriken](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-all)
+ [Konfigurieren Sie benutzerdefinierte GPU-Metriken](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom)

Informationen zu Updates und Sicherheitspatches finden Sie unter [Sicherheitspatches für den Agenten AWS CloudWatch](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security)

### Voraussetzungen
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-prerequisites"></a>

Zu Beginn müssen Sie IAM-Berechtigungen für Amazon EC2 EC2-Instances konfigurieren, an die Ihre Instance Metriken weiterleiten kann. CloudWatch Ausführliche Schritte finden Sie unter [IAM-Rollen und -Benutzer für die Verwendung mit dem Agenten erstellen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html). CloudWatch 

### Konfigurieren Sie minimale GPU-Metriken
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-minimal"></a>

Konfigurieren Sie minimale GPU-Metriken mithilfe des `dlami-cloudwatch-agent@minimal` `systemd` Dienstes. Dieser Dienst konfiguriert die folgenden Metriken:
+ `utilization_gpu`
+ `utilization_memory`

Sie finden den `systemd` Dienst für minimale vorkonfigurierte GPU-Metriken an der folgenden Stelle:

```
/opt/aws/amazon-cloudwatch-agent/etc/dlami-amazon-cloudwatch-agent-minimal.json
```

Aktivieren und starten Sie den `systemd` Dienst mit den folgenden Befehlen:

```
sudo systemctl enable dlami-cloudwatch-agent@minimal
sudo systemctl start dlami-cloudwatch-agent@minimal
```

### Konfigurieren Sie partielle GPU-Metriken
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-partial"></a>

Konfigurieren Sie partielle GPU-Metriken mithilfe des `dlami-cloudwatch-agent@partial` `systemd` Dienstes. Dieser Dienst konfiguriert die folgenden Metriken:
+ `utilization_gpu`
+ `utilization_memory`
+ `memory_total`
+ `memory_used`
+ `memory_free`

Sie finden den `systemd` Dienst für teilweise vorkonfigurierte GPU-Metriken an der folgenden Stelle:

```
/opt/aws/amazon-cloudwatch-agent/etc/dlami-amazon-cloudwatch-agent-partial.json
```

Aktivieren und starten Sie den `systemd` Dienst mit den folgenden Befehlen:

```
sudo systemctl enable dlami-cloudwatch-agent@partial
sudo systemctl start dlami-cloudwatch-agent@partial
```

### Konfigurieren Sie alle verfügbaren GPU-Metriken
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-all"></a>

Konfigurieren Sie alle verfügbaren GPU-Metriken mithilfe des `dlami-cloudwatch-agent@all` `systemd` Dienstes. Dieser Dienst konfiguriert die folgenden Metriken:
+ `utilization_gpu`
+ `utilization_memory`
+ `memory_total`
+ `memory_used`
+ `memory_free`
+ `temperature_gpu`
+ `power_draw`
+ `fan_speed`
+ `pcie_link_gen_current`
+ `pcie_link_width_current`
+ `encoder_stats_session_count`
+ `encoder_stats_average_fps`
+ `encoder_stats_average_latency`
+ `clocks_current_graphics`
+ `clocks_current_sm`
+ `clocks_current_memory`
+ `clocks_current_video`

Sie finden den `systemd` Dienst für alle verfügbaren vorkonfigurierten GPU-Metriken an der folgenden Stelle:

```
/opt/aws/amazon-cloudwatch-agent/etc/dlami-amazon-cloudwatch-agent-all.json
```

Aktivieren und starten Sie den `systemd` Dienst mit den folgenden Befehlen:

```
sudo systemctl enable dlami-cloudwatch-agent@all
sudo systemctl start dlami-cloudwatch-agent@all
```

### Konfigurieren Sie benutzerdefinierte GPU-Metriken
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom"></a>

Wenn die vorkonfigurierten Metriken Ihren Anforderungen nicht entsprechen, können Sie eine benutzerdefinierte CloudWatch Agentenkonfigurationsdatei erstellen.

#### Erstellen Sie eine benutzerdefinierte Konfigurationsdatei
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom-create"></a>

Informationen zum Erstellen einer benutzerdefinierten Konfigurationsdatei finden Sie in den detaillierten Schritten unter [Manuelles Erstellen oder Bearbeiten der CloudWatch Agentenkonfigurationsdatei](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html).

Gehen Sie für dieses Beispiel davon aus, dass sich die Schemadefinition unter befindet`/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json`.

#### Konfigurieren Sie Metriken mit Ihrer benutzerdefinierten Datei
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom-configure"></a>

Führen Sie den folgenden Befehl aus, um den CloudWatch Agenten entsprechend Ihrer benutzerdefinierten Datei zu konfigurieren:

```
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config -m ec2 -s -c \
file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
```

### Sicherheitspatches für den Agenten AWS CloudWatch
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security"></a>

Neu veröffentlichte Versionen DLAMIs sind mit den neuesten verfügbaren AWS CloudWatch Agent-Sicherheitspatches konfiguriert. In den folgenden Abschnitten erfahren Sie, wie Sie Ihr aktuelles DLAMI je nach Betriebssystem Ihrer Wahl mit den neuesten Sicherheitspatches aktualisieren können.

#### Amazon Linux 2
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security-al2"></a>

Wird verwendet`yum`, um die neuesten AWS CloudWatch Agenten-Sicherheitspatches für ein Amazon Linux 2-DLAMI zu erhalten.

```
 sudo yum update
```

#### Ubuntu
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security-ubuntu"></a>

Um die neuesten AWS CloudWatch Sicherheitspatches für ein DLAMI mit Ubuntu zu erhalten, muss der AWS CloudWatch Agent über einen Amazon S3 S3-Download-Link neu installiert werden.

```
wget https://s3.region.amazonaws.com/amazoncloudwatch-agent-region/ubuntu/arm64/latest/amazon-cloudwatch-agent.deb
```

Weitere Informationen zur Installation des AWS CloudWatch Agenten mithilfe von Amazon S3 S3-Download-Links finden Sie unter [Installation und Ausführung des CloudWatch Agenten auf Ihren Servern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html).

## Konfigurieren Sie Metriken mit dem vorinstallierten Skript `gpumon.py`
<a name="tutorial-gpu-monitoring-gpumon-script"></a>

Das Dienstprogramm gpumon.py ist auf Ihrem DLAMI vorinstalliert. Es lässt sich in die Nutzung pro GPU integrieren CloudWatch und unterstützt deren Überwachung: GPU-Speicher, GPU-Temperatur und GPU-Leistung. Das Skript sendet die überwachten Daten regelmäßig an CloudWatch. Sie können die Granularität für die zu sendenden Daten konfigurieren, CloudWatch indem Sie einige Einstellungen im Skript ändern. Bevor Sie das Skript starten, müssen Sie jedoch einrichten, um die Metriken CloudWatch zu empfangen. 

**Wie richte ich die GPU-Überwachung ein und führe sie aus CloudWatch**

1. Erstellen Sie einen IAM-Benutzer oder ändern Sie einen vorhandenen Benutzer, um eine Richtlinie für die Veröffentlichung der Metrik festzulegen CloudWatch. Wenn Sie einen neuen Benutzer erstellen, notieren Sie sich die Anmeldeinformationen, da Sie diese im nächsten Schritt benötigen. 

   Die IAM-Richtlinie, nach der gesucht werden soll, lautet „cloudwatch:“. PutMetricData Die Richtlinie, die hinzugefügt wird, lautet wie folgt:

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
           {
               "Action": [
                   "cloudwatch:PutMetricData"
                ],
                "Effect": "Allow",
                "Resource": "*"
           }
      ]
   }
   ```

------
**Tipp**  
[Weitere Informationen zum Erstellen eines IAM-Benutzers und zum Hinzufügen von Richtlinien für CloudWatch finden Sie in der Dokumentation. CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)

1. Führen Sie auf Ihrem DLAMI [AWS configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration) aus und geben Sie die IAM-Benutzeranmeldedaten an. 

   ```
   $ aws configure
   ```

1. Möglicherweise müssen Sie einige Änderungen am gpumon-Dienstprogramm vornehmen, bevor Sie es ausführen können. Sie finden das Gpumon-Hilfsprogramm und die README-Datei an dem im folgenden Codeblock definierten Speicherort. Weitere Informationen zum `gpumon.py` Skript finden Sie [im Amazon S3 S3-Speicherort des Skripts.](https://s3.amazonaws.com/aws-bigdata-blog/artifacts/GPUMonitoring/gpumon.py)

   ```
   Folder: ~/tools/GPUCloudWatchMonitor
   Files: 	~/tools/GPUCloudWatchMonitor/gpumon.py
         	~/tools/GPUCloudWatchMonitor/README
   ```

   Optionen:
   + Ändern Sie die Region in gpumon.py, wenn sich Ihre Instance NICHT in us-east-1 befindet.
   + Ändern Sie andere Parameter wie den CloudWatch `namespace` oder den Berichtszeitraum mit`store_reso`.

1. Derzeit unterstützt das Skript nur Python 3. Aktivieren Sie die Python-3-Umgebung Ihres bevorzugten Frameworks oder aktivieren Sie die allgemeine Python-3-Umgebung von DLAMI. 

   ```
   $ source activate python3
   ```

1. Führen Sie das gpumon-Dienstprogramm im Hintergrund aus.

   ```
   (python3)$ python gpumon.py &
   ```

1. Öffnen Sie Ihren Browser mit [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) und wählen Sie dann die Metrik. Sie wird einen Namespace '' haben. DeepLearningTrain 
**Tipp**  
Sie können den Namespace durch Modifizierung von gpumon.py ändern. Sie können auch das Berichtsintervall durch Anpassung von `store_reso` ändern. 

Im Folgenden finden Sie ein CloudWatch Beispieldiagramm, das über einen Lauf von gpumon.py berichtet, der einen Trainingsjob auf der p2.8xlarge-Instance überwacht. 

![\[GPU-Überwachung aktiviert CloudWatch\]](http://docs.aws.amazon.com/de_de/dlami/latest/devguide/images/gpumon.png)


Möglicherweise sind diese weiteren Themen zur GPU-Überwachung und -Optimierung für Sie interessant:
+ [Überwachen](tutorial-gpu-monitoring.md)
  + [Überwachen Sie mit GPUs CloudWatch](#tutorial-gpu-monitoring-gpumon)
+ [Optimierung](tutorial-gpu-opt.md)
  + [Vorverarbeitung](tutorial-gpu-opt-preprocessing.md)
  + [Training](tutorial-gpu-opt-training.md)

# Optimierung
<a name="tutorial-gpu-opt"></a>

Um das Beste aus Ihrem herauszuholen GPUs, können Sie Ihre Datenpipeline optimieren und Ihr Deep-Learning-Netzwerk optimieren. Wie das folgende Diagramm zeigt, nutzt eine „naive“ oder einfache Implementierung eines neuronalen Netzwerks die GPU möglicherweise inkonsistent und nicht mit ihrem vollen Potenzial. Wenn Sie Ihre Vorverarbeitung und das Laden der Daten optimieren, können Sie den Engpass von CPU zu GPU reduzieren. Sie können das neuronale Netzwerk selbst anpassen, indem Sie Hybridisierung (wenn vom Framework unterstützt) verwenden, die Stapelgröße anpassen sowie Aufrufe synchronisieren. Sie können in den meisten Frameworks auch Schulungen mit mehreren Präzisionen verwenden, was dramatische Verbesserungen des Durchsatzes mit sich bringen kann. 

Das folgende Diagramm zeigt die kumulativen Leistungssteigerungen bei der Anwendung verschiedener Optimierungen. Ihre Ergebnisse hängen von den verarbeiteten Daten und dem optimierten Netzwerk ab.

![\[Leistungsverbesserungen für GPUs\]](http://docs.aws.amazon.com/de_de/dlami/latest/devguide/images/performance-enhancements.png)


In den folgenden Anleitungen werden Optionen vorgestellt, die mit Ihrem DLAMI funktionieren und Ihnen helfen, die GPU-Leistung zu steigern.

**Topics**
+ [Vorverarbeitung](tutorial-gpu-opt-preprocessing.md)
+ [Training](tutorial-gpu-opt-training.md)

# Vorverarbeitung
<a name="tutorial-gpu-opt-preprocessing"></a>

Die Vorverarbeitung von Daten durch Umwandlungen oder Erweiterungen ist oft ein CPU-gebundener Prozess, was zu einem Engpass in Ihrer allgemeinen Pipeline führen kann. Frameworks verfügen über integrierte Operatoren für die Abbildverarbeitung, DALI (Data Augmentation Library) zeigt jedoch eine verbesserte Leistung gegenüber den in Frameworks integrierten Optionen.
+ NVIDIA Data Augmentation Library (DALI): DALI übergibt die Datenerweiterung an die GPU. Es ist nicht auf dem DLAMI vorinstalliert, aber Sie können darauf zugreifen, indem Sie es installieren oder einen unterstützten Framework-Container auf Ihrem DLAMI oder einer anderen Amazon Elastic Compute Cloud-Instanz laden. Einzelheiten finden Sie auf der [DALI-Projektseite](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html) auf der NVIDIA-Website. [Ein Anwendungsbeispiel und zum Herunterladen von Codebeispielen finden Sie im Beispiel Preprocessing Training Performance. SageMaker ](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance)
+ nvJPEG: eine GPU-beschleunigte JPEG-Decoder-Bibliothek für C-Programmierer. Sie unterstützt die Decodierung einzelner Abbilder oder Stapel sowie Transformationsoperationen, die für Deep Learning verbreitet sind. nvJPEG ist mit DALI integriert. Alternativ können Sie es von der [nvjpeg-Seite der NVIDIA-Website](https://developer.nvidia.com/nvjpeg) herunterladen und separat verwenden.

Möglicherweise sind diese weiteren Themen zur GPU-Überwachung und -Optimierung für Sie interessant:
+ [Überwachen](tutorial-gpu-monitoring.md)
  + [Überwachen Sie mit GPUs CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimierung](tutorial-gpu-opt.md)
  + [Vorverarbeitung](#tutorial-gpu-opt-preprocessing)
  + [Training](tutorial-gpu-opt-training.md)

# Training
<a name="tutorial-gpu-opt-training"></a>

Mit Schulungen mit gemischter Präzision können Sie größere Netzwerke mit derselben Speichergröße bereitstellen oder die Speichernutzung gegenüber Ihrem Netzwerk mit einzelner oder doppelter Präzision reduzieren - die Rechenleistung wird dadurch sicher gesteigert. Dazu kommt der Vorteil kleinerer und schnellerer Datenübertragungen, ein wichtiger Faktor für verteilte Schulungen mit mehreren Knoten. Um die Schulung mit gemischter Präzision nutzen zu können, müssen Sie das Data Casting und die Verlustskalierung anpassen. Nachfolgend finden Sie Anleitungen dazu, wie Sie dies für Frameworks tun können, die gemischte Präzisionen unterstützen.
+ [NVIDIA Deep Learning SDK](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/) — Dokumente auf der NVIDIA-Website, in denen die Implementierung mit gemischter Genauigkeit für, und beschrieben wird. MXNet PyTorch TensorFlow

**Tipp**  
Konsultieren Sie die Website für das von Ihnen gewählte Framework und suchen Sie nach „gemischte Präzision“ oder „fp16“ für die jeweils neuesten Optimierungstechniken. Hier finden Sie einige Anleitungen für gemischte Präzisionen, die möglicherweise nützlich für Sie sind:  
[Training mit gemischter Präzision mit TensorFlow (Video)](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/) — auf der NVIDIA-Blogseite.
[Training mit gemischter Präzision mit Float16 mit MXNet](https://mxnet.apache.org/api/faq/float16) - ein FAQ-Artikel auf der Website. MXNet 
[NVIDIA Apex: ein Tool für einfaches Training mit gemischter Präzision mit PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) — einem Blogartikel auf der NVIDIA-Website.

Möglicherweise sind diese weiteren Themen zur GPU-Überwachung und -Optimierung für Sie interessant:
+ [Überwachen](tutorial-gpu-monitoring.md)
  + [Überwachen Sie mit GPUs CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimierung](tutorial-gpu-opt.md)
  + [Vorverarbeitung](tutorial-gpu-opt-preprocessing.md)
  + [Training](#tutorial-gpu-opt-training)