

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.

# Amazon-ECS-Aufgabendefinitionen für GPU-Workloads
<a name="ecs-gpu"></a>

Amazon ECS unterstützt Workloads, die GPUs verwenden, wenn Sie Cluster mit Container-Instances erstellen, die GPUs unterstützen. Amazon EC2 GPU-based EC2-Container-Instances, die die Instance-Typen p2, p3, p5, g3, g4 und g5 verwenden, bieten Zugriff auf NVIDIA-GPUs. Weitere Informationen finden Sie unter [Linux-beschleunigte Computing-Instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html) im *Benutzerhandbuch für Instance-Typen von Amazon EC2*.

Amazon ECS bietet ein GPU-optimized AMI, das mit vorkonfigurierten NVIDIA-Kerneltreibern und einer Docker-GPU-Laufzeit geliefert wird. Weitere Informationen finden Sie unter [Amazon ECS-optimized Linux-AMIs](ecs-optimized_AMI.md).

Sie können in Ihrer Aufgabendefinition eine Reihe von GPUs für die Platzierung von Aufgaben auf Container-Ebene festlegen. Amazon ECS plant verfügbare GPU-fähige Container-Instances und heftet physische GPUs für eine optimale Leistung an geeignete Container an. 

Die folgenden Amazon EC2 GPU-based EC2-Instance-Typen werden unterstützt. Weitere Informationen finden Sie unter [Amazon-EC2-P2-Instances](https://aws.amazon.com/ec2/instance-types/p2/), [Amazon-EC2-P3-Instances](https://aws.amazon.com/ec2/instance-types/p3/), [Amazon-EC2-P4d-Instances](https://aws.amazon.com/ec2/instance-types/p4/), [Amazon-EC2-P5-Instances](https://aws.amazon.com/ec2/instance-types/p5/), [Amazon-EC2-G3-Instances](https://aws.amazon.com/ec2/instance-types/g3/), [Amazon-EC2-G4-Instances](https://aws.amazon.com/ec2/instance-types/g4/), [Amazon-EC2-G5-Instances](https://aws.amazon.com/ec2/instance-types/g5/), [Amazon-EC2-G6-Instances](https://aws.amazon.com/ec2/instance-types/g6/) und [Amazon-EC2-G6e-Instances](https://aws.amazon.com/ec2/instance-types/g6e/).


|  Instance-Typ  |  GPUs  |  GPU-Speicher (GiB)  |  vCPUs  |  Arbeitsspeicher (GiB)  | 
| --- | --- | --- | --- | --- | 
| p3.2xgroß | 1 | 16 | 8 | 61 | 
| p3.8xgroß | 4 | 64 | 32 | 244 | 
| p3.16xgroß | 8 | 128 | 64 | 488 | 
| p3dn.24xgroß | 8 | 256 | 96 | 768 | 
| p4d.24xgroß | 8 | 320 | 96 | 1 152 | 
| p5.48xlarge | 8 | 640 | 192 | 2048 | 
| g3s.xgroß | 1 | 8 | 4 | 30,5 | 
| g3.4xgroß | 1 | 8 | 16 | 122 | 
| g3.8xgroß | 2 | 16 | 32 | 244 | 
| g3.16xgroß | 4 | 32 | 64 | 488 | 
| g4dn.xgroß | 1 | 16 | 4 | 16 | 
| g4dn.2xgroß | 1 | 16 | 8 | 32 | 
| g4dn.4xgroß | 1 | 16 | 16 | 64 | 
| g4dn.8xgroß | 1 | 16 | 32 | 128 | 
| g4dn.12xgroß | 4 | 64 | 48 | 192 | 
| g4dn.16xgroß | 1 | 16 | 64 | 256 | 
| g5.xgroß | 1 | 24 | 4 | 16 | 
| g5.2xlarge | 1 | 24 | 8 | 32 | 
| g5.4xlarge | 1 | 24 | 16 | 64 | 
| g5.8xlarge | 1 | 24 | 32 | 128 | 
| g5.16xlarge | 1 | 24 | 64 | 256 | 
| g5.12xlarge | 4 | 96 | 48 | 192 | 
| g5.24xlarge | 4 | 96 | 96 | 384 | 
| g5.48xlarge | 8 | 192 | 192 | 768 | 
| g6.xlarge | 1 | 24 | 4 | 16 | 
| g6.2xlarge | 1 | 24 | 8 | 32 | 
| g6.4xlarge | 1 | 24 | 16 | 64 | 
| g6.8xlarge | 1 | 24 | 32 | 128 | 
| g6.16.xlarge | 1 | 24 | 64 | 256 | 
| g6.12xlarge | 4 | 96 | 48 | 192 | 
| g6.24xlarge | 4 | 96 | 96 | 384 | 
| g6.48xlarge | 8 | 192 | 192 | 768 | 
| g6.metal | 8 | 192 | 192 | 768 | 
| gr6.4xlarge | 1 | 24 | 16 | 128 | 
| g6e.xlarge | 1 | 48 | 4 | 32 | 
| g6e.2xlarge | 1 | 48 | 8 | 64 | 
| g6e.4xlarge | 1 | 48 | 16 | 128 | 
| g6e.8xlarge | 1 | 48 | 32 | 256 | 
| g6e16.xlarge | 1 | 48 | 64 | 512 | 
| g6e12.xlarge | 4 | 192 | 48 | 384 | 
| g6e24.xlarge | 4 | 192 | 96 | 768 | 
| g6e48.xlarge | 8 | 384 | 192 | 1536 | 
| gr6.8xlarge | 1 | 24 | 32 | 256 | 

Sie können die Amazon Machine Image (AMI) -ID für ECS-optimized Amazon-AMIs abrufen, indem Sie die AWS Systems Manager Parameter Store-API abfragen. Mit diesem Parameter müssen Sie Amazon ECS-optimized AMI-IDs nicht manuell nachschlagen. Weitere Informationen zur Systems Manager Parameter Store-API finden Sie unter [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Der Benutzer, den Sie verwenden, muss über die `ssm:GetParameter` IAM-Berechtigung verfügen, um die Amazon ECS-optimized AMI-Metadaten abzurufen.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region {{us-east-1}}
```

## Überlegungen
<a name="gpu-considerations"></a>

**Anmerkung**  
Die Unterstützung für den g2-Instance-Familientyp ist veraltet.  
Der Instance-Familientyp p2 wird nur in Versionen unterstützt, die älter sind als `20230912` das Amazon GPU-optimized ECS-AMI. Wenn Sie weiterhin P2-Instances verwenden müssen, finden Sie weitere Informationen unter [Was tun, wenn Sie eine P2-Instance benötigen](#p2-instance).  
In-place Aktualisierungen der NVIDIA/CUDA Treiber für diese beiden Instance-Familientypen führen zu potenziellen Ausfällen der GPU-Arbeitslast.

Wir empfehlen, Folgendes zu beachten, bevor Sie auf Amazon ECS mit GPUs arbeiten.
+ Ihre Cluster können eine Mischung aus GPU- und Nicht-GPU-Container-Instances enthalten.
+ Sie können GPU-Workloads auf externen Instances ausführen. Stellen Sie beim Anmelden einer externen Instance bei Ihrem Cluster sicher, dass das `--enable-gpu`-Flag im Installationsskript enthalten ist. Weitere Informationen finden Sie unter [Registrieren einer externen Instance in einem Amazon-ECS-Cluster](ecs-anywhere-registration.md).
+ Sie müssen in Ihrer Agenten-Konfigurationsdatei `ECS_ENABLE_GPU_SUPPORT` auf `true` setzen. Weitere Informationen finden Sie unter [Konfiguration des Amazon-ECS-Container-Agenten](ecs-agent-config.md).
+ Wenn Sie eine Aufgabe ausführen oder einen Service erstellen, können Sie beim Konfigurieren der Platzierungsbedingungen mithilfe von Attributen des Instance-Typs festlegen, für welche Ihrer Container-Instances die Aufgabe gestartet wird. Auf diese Weise können Sie Ihre Ressourcen effektiver verwenden. Weitere Informationen finden Sie unter [So platziert Amazon ECS Aufgaben in Container-Instances](task-placement.md).

  Das folgende Beispiel startet eine Aufgabe auf einer `g4dn.xlarge`-Container-Instance in Ihrem Standard-Cluster.

  ```
  aws ecs run-task --cluster default --task-definition ecs-gpu-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type ==  g4dn.xlarge" --region us-east-2
  ```
+ Für jeden Container, der eine in der Container-Definition festgelegte GPU-Ressourcenanforderung hat, legt Amazon ECS fest, dass die Container-Laufzeitumgebung die NVIDIA-Container-Laufzeitumgebung ist.
+ Die NVIDIA Container-Laufzeitumgebung erfordert, dass einige Umgebungsvariablen im Container festgelegt werden, damit sie korrekt funktioniert. Eine Liste dieser Umgebungsvariablen finden Sie unter [Spezialisierte Konfigurationen mit Docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html?highlight=environment%20variable). Amazon ECS legt die `NVIDIA_VISIBLE_DEVICES`-Umgebungsvariablen als Liste der GPU-Geräte-IDs, die Amazon ECS dem Container zuweist, fest. Die anderen erforderlichen Umgebungsvariablen legt Amazon ECS nicht fest. Stellen Sie daher sicher, dass Ihr Container-Image sie festlegt oder dass sie in der Container-Definition festgelegt sind.
+ Die Instance-Typfamilie p5 wird in Version `20230929` und höher des Amazon ECS GPU-optimized AMI unterstützt. 
+ Die Instance-Typfamilie g4 wird in Version `20230913` und höher des Amazon ECS GPU-optimized AMI unterstützt. Weitere Informationen finden Sie unter [Amazon ECS-optimized Linux-AMIs](ecs-optimized_AMI.md). Sie wird im Workflow „Cluster erstellen“ in der Amazon-ECS-Konsole nicht unterstützt. Um diese Instance-Typen zu verwenden, müssen Sie entweder die Amazon EC2 EC2-Konsole oder die API verwenden und die Instances manuell in Ihrem Cluster registrieren. AWS CLI
+ Der Instance-Typ p4d.24xlarge funktioniert nur mit CUDA 11 oder höher.
+ Für das Amazon ECS GPU-optimized AMI ist IPv6 aktiviert, was zu Problemen bei der Verwendung `yum` führt. Dies kann durch Konfigurieren von `yum` zur Verwendung von IPv4 mit dem folgenden Befehl gelöst werden.

  ```
  echo "ip_resolve=4" >> /etc/yum.conf
  ```
+  Wenn Sie ein Container-Image erstellen, das die NVIDIA/CUDA Basis-Images nicht verwendet, müssen Sie die `NVIDIA_DRIVER_CAPABILITIES` Container-Laufzeitvariable auf einen der folgenden Werte setzen:
  + `utility,compute`
  + `all`

  Informationen zum Festlegen der Variablen finden Sie unter [Steuern der NVIDIA Container Runtime](https://sarus.readthedocs.io/en/stable/user/custom-cuda-images.html#controlling-the-nvidia-container-runtime) auf der NVIDIA-Website.
+ GPUs werden in Windows-Containern nicht unterstützt.

## GPUs freigeben
<a name="share-gpu"></a>

Wenn Sie GPUs freigeben möchten, müssen Sie Folgendes konfigurieren.

1. Entfernen Sie die GPU-Ressourcenanforderungen aus Ihren Aufgabendefinitionen, sodass Amazon ECS keine GPUs reserviert, die gemeinsam genutzt werden sollten.

1. Fügen Sie Ihren Instances die folgenden Benutzerdaten hinzu, wenn Sie GPUs gemeinsam nutzen möchten. Dadurch wird nvidia zur standardmäßigen Docker-Container-Laufzeit auf der Container-Instance, sodass alle Amazon-ECS-Container die GPUs verwenden können. Weitere Informationen finden Sie unter [Ausführen von Befehlen beim Start einer EC2-Instance mit Benutzer-Dateneingabe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) im *Amazon-EC2-Benutzerhandbuch*.

   ```
   const userData = ec2.UserData.forLinux();
    userData.addCommands(
    'sudo rm /etc/sysconfig/docker',
    'echo DAEMON_MAXFILES=1048576 | sudo tee -a /etc/sysconfig/docker',
    'echo OPTIONS="--default-ulimit nofile=32768:65536 --default-runtime nvidia" | sudo tee -a /etc/sysconfig/docker',
    'echo DAEMON_PIDFILE_TIMEOUT=10 | sudo tee -a /etc/sysconfig/docker',
    'sudo systemctl restart docker',
   );
   ```

1. Legen Sie die `NVIDIA_VISIBLE_DEVICES`-Umgebungsvariable in Ihrem Container fest. Dazu können Sie die Umgebungsvariable in Ihrer Aufgabendefinition festlegen. Informationen zu den gültigen Werten finden Sie unter [GPU-Nummerierung](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) auf der NVIDIA-Dokumentationsseite.

## Was tun, wenn Sie eine P2-Instance benötigen
<a name="p2-instance"></a>

Wenn Sie die P2-Instance verwenden müssen, können Sie eine der folgenden Optionen verwenden, um die Instances weiterhin zu verwenden.

Sie müssen die Benutzerdaten der Instance für beide Optionen ändern. Weitere Informationen finden Sie unter [Ausführen von Befehlen beim Start einer EC2-Instance mit Benutzer-Dateneingabe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) im *Amazon-EC2-Benutzerhandbuch*.

**Verwenden Sie das zuletzt unterstützte GPU-optimized AMI**

Sie können die `20230906` Version des GPU-optimized AMI verwenden und den Instance-Benutzerdaten Folgendes hinzufügen.

Ersetzen Sie cluster-name durch den Namen Ihres Clusters.

```
#!/bin/bash
echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
echo "ECS_CLUSTER={{cluster-name}}" >> /etc/ecs/ecs.config
```

**Verwenden Sie das neueste GPU-optimized AMI und aktualisieren Sie die Benutzerdaten**

Sie können den Benutzerdaten der Instance Folgendes hinzufügen. Dadurch werden die 535/Cuda12 Nvidia-2.2-Treiber deinstalliert und anschließend die 470/Cuda11 Nvidia-2.4-Treiber installiert und die Version repariert.

```
#!/bin/bash
yum remove -y cuda-toolkit* nvidia-driver-latest-dkms*
tmpfile=$(mktemp)
cat >$tmpfile <<EOF
[amzn2-nvidia]
name=Amazon Linux 2 Nvidia repository
mirrorlist=\$awsproto://\$amazonlinux.\$awsregion.\$awsdomain/\$releasever/amzn2-nvidia/latest/\$basearch/mirror.list
priority=20
gpgcheck=1
gpgkey=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub
enabled=1
exclude=libglvnd-*
EOF

mv $tmpfile /etc/yum.repos.d/amzn2-nvidia-tmp.repo
yum install -y system-release-nvidia cuda-toolkit-11-4 nvidia-driver-latest-dkms-470.182.03
yum install -y libnvidia-container-1.4.0 libnvidia-container-tools-1.4.0 nvidia-container-runtime-hook-1.4.0 docker-runtime-nvidia-1

echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
nvidia-smi
```

**Erstellen Sie Ihr eigenes P2-kompatibles GPU-optimized AMI**

Sie können Ihr eigenes benutzerdefiniertes Amazon GPU-optimized ECS-AMI erstellen, das mit P2-Instances kompatibel ist, und dann P2-Instances mithilfe des AMI starten.

1. Führen Sie den folgenden Befehl aus, um das `amazon-ecs-ami repo` zu klonen.

   ```
   git clone https://github.com/aws/amazon-ecs-ami
   ```

1. Stellen Sie die erforderlichen Amazon-ECS-Agent- und Amazon-Linux-AMI-Quellversionen in `release.auto.pkrvars.hcl` oder `overrides.auto.pkrvars.hcl` ein.

1. Führen Sie den folgenden Befehl aus, um ein privates P2-kompatibles EC2-AMI zu erstellen.

   Ersetzen Sie Region durch die Region mit der Instance-Region.

   ```
   REGION={{region}} make al2keplergpu
   ```

1. Verwenden Sie das AMI mit den folgenden Instance-Benutzerdaten, um eine Verbindung zum Amazon-ECS-Cluster herzustellen.

   Ersetzen Sie cluster-name durch den Namen Ihres Clusters.

   ```
   #!/bin/bash
   echo "ECS_CLUSTER={{cluster-name}}" >> /etc/ecs/ecs.config
   ```