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.
Angeben von GPUs in einer Amazon-ECS-Aufgabendefinition
Um die GPUs für eine Container-Instance und die Docker-GPU-Laufzeitumgebung zu nutzen, müssen Sie in der Aufgabendefinition die für Ihren Container erforderliche Anzahl von GPUs angeben. Sie können einen Integer-Wert, einen Dezimalwert für fraktionale GPUs oder angeben. ALL Wenn Sie angebenALL, werden alle GPUs auf der Container-Instance dem Container zugewiesen. Wenn Sie beispielsweise einen Dezimalwert angeben0.25, platziert Amazon ECS die Aufgabe auf einer GPU-Instance mit Bruchteilen, die die angeforderte GPU-Kapazität bereitstellt. Wenn GPU-fähige Container platziert werden, heftet der Amazon-ECS-Container-Agent die gewünschte Anzahl von physischen GPUs an den entsprechenden Container an. Die Anzahl der für alle Container in einer Aufgabe reservierten GPUs darf nicht größer sein als die Anzahl der verfügbaren GPUs für die Container-Instance, für die die Aufgabe gestartet wird. Weitere Informationen finden Sie unter Erstellen einer Amazon-ECS-Aufgabendefinition mit der Konsole.
Wichtig
Wenn Ihre GPU-Anforderungen in der Aufgabendefinition nicht angegeben werden, verwendet die Aufgabe die Standard-Docker-Laufzeit.
Das folgende Beispiel zeigt das JSON-Format für die GPU-Anforderungen in einer Aufgabendefinition:
{ "containerDefinitions": [ { ... "resourceRequirements" : [ { "type" : "GPU", "value" : "2" } ], }, ... }
Sie können auch ALL als Wert anstelle einer Zahl angeben, um alle GPUs auf der Container-Instance dem Container zuzuweisen.
Das folgende Beispiel veranschaulicht die Syntax eines Docker-Containers, der eine GPU-Anforderung angibt. Dieser Container verwendet 2 GPUs, führt das Dienstprogramm nvidia-smi aus und wird dann beendet.
{ "containerDefinitions": [ { "memory": 80, "essential": true, "name": "gpu", "image": "nvidia/cuda:11.0.3-base", "resourceRequirements": [ { "type":"GPU", "value": "2" } ], "command": [ "sh", "-c", "nvidia-smi" ], "cpu": 100 } ], "family": "example-ecs-gpu" }
Die folgende Beispiel-Aufgabendefinition zeigt einen TensorFlow-Container, der die Anzahl der verfügbaren GPUs ausgibt. Die Aufgabe wird in Amazon ECS Managed Instances ausgeführt, benötigt eine GPU und verwendet eine g4dn.xlarge-Instance.
{ "family": "tensorflow-gpu", "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "tensorflow", "image": "tensorflow/tensorflow:latest-gpu", "essential": true, "command": [ "python", "-c", "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))" ], "resourceRequirements": [ { "type": "GPU", "value": "1" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/tensorflow-gpu", "awslogs-region": "region", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "MANAGED_INSTANCES" ], "cpu": "4096", "memory": "8192", }
Angabe fraktionaler GPUs
Amazon ECS unterstützt fraktionierte GPU-Planung mit Amazon EC2 G6f-Instances. G6f-Instances stellen hardwarepartitionierte Teile einer NVIDIA L4 GPU bereit, wobei jede Instance einen festen GPU-Slice (1/8, oder) mit dediziertem GPU-Speicher und Rechenleistung zur Verfügung stellt. 1/4 1/2 Um eine fraktionierte GPU zu verwenden, geben Sie in Ihrer Container-Definition einen Dezimalwert an: resourceRequirements
"resourceRequirements": [ { "type": "GPU", "value": "0.25" } ]
Die unterstützten Bruchwerte und die entsprechenden G6f-Instance-Typen sind:
| GPU-Wert | GPU-Fraktion | GPU-Arbeitsspeicher | Instance-Typen |
|---|---|---|---|
0.125 |
1/8 GPU | 3 GB | g6f.large, g6f.xlarge |
0.25 |
1/4 GPU | 6 GB | g6f.2xlarge |
0.5 |
1/2 GPU | 12 GB | g 6 f, 4 x groß, g 6 f, 4 x groß |
In der folgenden Beispiel-Aufgabendefinition wird ein kompakter Inferenzcontainer auf einer fraktionierten GPU mit 1/4 einer GPU (6 GB GPU-Speicher) ausgeführt: NVIDIA L4
{ "family": "fractional-gpu-inference", "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "inference", "image": "nvidia/cuda:12.0.0-base-ubuntu22.04", "essential": true, "command": ["nvidia-smi"], "resourceRequirements": [ { "type": "GPU", "value": "0.25" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fractional-gpu-inference", "awslogs-region": "region", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "MANAGED_INSTANCES" ], "cpu": "2048", "memory": "4096" }
Überlegungen zu fraktionierten GPUs
-
Nur ein Container pro Aufgabe kann einen Bruchteil der GPU anfordern. Wenn ein Container eine fraktionale GPU angibt, kann kein anderer Container in dieser Aufgabendefinition eine GPU-Ressourcenanforderung haben.
-
Ganzzahlwerte (
12, usw.) werden als vollständige GPU-Anfragen behandelt und nur auf Instanzen mit voller GPU-Kapazität platziert. Dezimalwerte (0.125,0.25,0.5) werden als gebrochene GPU-Anfragen behandelt und auf Instanzen mit der entsprechenden fraktionierten GPU-Partition platziert. -
Sie können sowohl fraktionierte GPU-Instances (G6f) als auch vollständige GPU-Instances (wie g5 oder g6) in denselben Kapazitätsanbieter aufnehmen. Amazon ECS leitet Aufgaben auf der Grundlage des deklarierten GPU-Werts an den richtigen Instance-Typ weiter. Sie benötigen keine separaten Kapazitätsanbieter pro GPU-Familie.
-
Sie können fraktionierte GPU-Planung mit Amazon ECS Managed Instances und Amazon ECS auf Amazon EC2 verwenden. Fargate und Amazon ECS Anywhere unterstützen keine fraktionierte GPU-Planung.
-
Verwenden Sie für vollständige GPU-Workloads weiterhin Integer-Werte wie zuvor:.
"value": "1"