

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 AWS Neuron-Workloads für maschinelles Lernen
<a name="ecs-inference"></a>

Sie können [Amazon EC2 Trn1-, Amazon EC2 Trn2](https://aws.amazon.com/ec2/instance-types/trn1/) -, [Amazon EC2](https://aws.amazon.com/ec2/instance-types/trn2/) [Inf1- und [Amazon EC2 Inf2-Instances](https://aws.amazon.com/ec2/instance-types/inf2/)](https://aws.amazon.com/ec2/instance-types/inf1/) in Ihren Clustern für maschinelles Lernen registrieren.

[Amazon EC2 Trn1- und Trn2-Instances werden mit Trainium-Chips betrieben.AWS](https://aws.amazon.com/ai/machine-learning/trainium/) Diese Instances bieten leistungsstarkes und kostengünstiges Training für Machine Learning in der Cloud. Sie können ein Inferenzmodell für maschinelles Lernen mithilfe eines Frameworks für maschinelles Lernen mit AWS Neuron auf einer Trn1- oder Trn2-Instance trainieren. Anschließend können Sie das Modell auf einer Inf1-Instanz oder einer Inf2-Instanz ausführen, um die Beschleunigung der Inferentia-Chips zu nutzen. AWS 

Die Amazon-EC2-Instances Inf1 und Inf2 werden von [AWS -Inferentia-Chips](https://aws.amazon.com/ai/machine-learning/inferentia/) angetrieben. Sie bieten hohe Leistung und niedrigste Kosten für Inferenzen in der Cloud.

Machine-Learning-Modelle werden auf Containern mit [AWS Neuron](https://aws.amazon.com/ai/machine-learning/neuron/) bereitgestellt, einem spezialisierten Software Developer Kit (SDK). Das SDK besteht aus einem Compiler, Runtime- und Profiling-Tools, die die Leistung von Machine-Learning-Chips für maschinelles Lernen optimieren. AWS AWS Neuron unterstützt beliebte Frameworks für maschinelles Lernen wie TensorFlow PyTorch, und Apache. MXNet

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

Berücksichtigen Sie Folgendes, bevor Sie mit der Bereitstellung von Neuron auf Amazon ECS beginnen:
+ Ihre Cluster können eine Mischung aus Trn1, Trn2, Inf1, Inf2 und anderen Instances enthalten.
+ Sie benötigen eine Linux-Anwendung in einem Container, der ein Framework für maschinelles Lernen verwendet, das Neuron unterstützt. AWS 
**Wichtig**  
Anwendungen, die andere Frameworks verwenden, weisen möglicherweise keine verbesserte Leistung auf Trn1-, Trn2-, Inf1- und Inf2-Instances auf.
+ Auf jedem [AWS Trainium](https://aws.amazon.com/ai/machine-learning/trainium/)- oder [AWS Inferentia](https://aws.amazon.com/ai/machine-learning/inferentia/)-Chip kann nur eine Inferenz- oder Inferenztrainingsaufgabe ausgeführt werden. Bei Inf1 hat jeder Chip 4. NeuronCores Für Trn1, Trn2 und Inf2 hat jeder Chip 2. NeuronCores Sie können so viele Aufgaben ausführen, wie Chips für jede Ihrer Trn1-, Trn2-, Inf1- und Inf2-Instances vorhanden sind.
+ Wenn Sie eine eigenständige Aufgabe ausführen oder einen Service erstellen, können Sie beim Konfigurieren der Aufgabenplatzierungbedingungen Attribute des Instance-Typs verwenden. Dadurch wird sichergestellt, dass die Aufgabe auf der von Ihnen angegebenen Container-Instance gestartet wird. Auf diese Weise können Sie die allgemeine Ressourcennutzung optimieren und sicherstellen, dass Aufgaben für Inferenz-Workloads auf Ihren Trn1-, Trn2-, Inf1- und Inf2-Instances ausgeführt werden. Weitere Informationen finden Sie unter [So platziert Amazon ECS Aufgaben in Container-Instances](task-placement.md).

  Im folgenden Beispiel wird eine Aufgabe auf einer `Inf1.xlarge`-Instance auf Ihrem `default`-Cluster ausgeführt.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition ecs-inference-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  ```
+ Ressourcenanforderungen für Neuron können in einer Aufgabendefinition nicht definiert werden. Stattdessen konfigurieren Sie einen Container so, dass er bestimmte AWS Trainium- oder Inferentia-Chips verwendet, die auf der Host-Container-Instance verfügbar sind. AWS Nutzen Sie dazu den `linuxParameters`-Parameter und geben Sie die Geräteinformationen an. Weitere Informationen finden Sie unter [Anforderungen an die Aufgabendefinition](#ecs-inference-requirements).

## Das Amazon-ECS-optimierte AMI für Amazon Linux 2023 (Neuron) verwenden
<a name="ecs-inference-ami2023"></a>

Amazon ECS bietet ein für Amazon ECS optimiertes AMI, das auf Amazon Linux 2023 für AWS Trainium- und AWS Inferentia-Workloads basiert. Es wird mit den AWS Neuron-Treibern und der Laufzeit für Docker geliefert. Dieses AMI erleichtert das Ausführen von Machine Learning Inferenz-Workloads auf Amazon ECS.

Wir empfehlen, das Amazon-ECS-optimierte AMI für Amazon Linux 2023 (Neuron) zu verwenden, wenn Sie Ihre Amazon-EC2-Trn1-, -Inf1- und -Inf2-Instances starten. 

Sie können das aktuelle Amazon ECS-optimierte Amazon Linux 2023 (Neuron) AMI AWS CLI mit dem folgenden Befehl abrufen.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended
```

## Anforderungen an die Aufgabendefinition
<a name="ecs-inference-requirements"></a>

Um Neuron auf Amazon ECS bereitzustellen, muss Ihre Aufgabendefinition die Container-Definition für einen vorgefertigten Container enthalten, für den das Inferenzmodell verwendet wird. TensorFlow Es wird von AWS Deep Learning Containers bereitgestellt. Dieser Container enthält die AWS Neuron-Runtime und die TensorFlow Serving-Anwendung. Beim Start ruft dieser Container Ihr Modell von Amazon S3 ab, startet Neuron TensorFlow Serving mit dem gespeicherten Modell und wartet auf Vorhersageanfragen. Im folgenden Beispiel hat das Container-Image TensorFlow 1.15 und Ubuntu 18.04. Eine vollständige Liste vorgefertigter Deep Learning Containers, die für Neuron optimiert sind, wird auf geführt. GitHub Weitere Informationen finden Sie unter [AWS Neuron TensorFlow Serving verwenden](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia-tf-neuron-serving.html).

```
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04
```

Alternativ können Sie Ihr eigenes Neuron Seitenwagen Container-Image erstellen. Weitere Informationen finden Sie unter [Tutorial: Neuron TensorFlow Serving](https://github.com/aws-neuron/aws-neuron-sdk/blob/master/frameworks/tensorflow/tensorflow-neuron/tutorials/tutorials-tensorflow-utilizing-neuron-capabilities.rst) im *AWS Deep Learning AMIs Entwicklerhandbuch*.

Die Aufgabendefinition muss für den einzelnen Instance-Typ spezifisch sein. Sie müssen einen Container so konfigurieren, dass er bestimmte AWS Trainium- oder AWS Inferentia-Geräte verwendet, die auf der Host-Container-Instance verfügbar sind. Dazu können Sie den `linuxParameters`-Parameter verwenden. Ein Beispiel für eine Aufgabendefinition finden Sie unter. [Spezifizierung des maschinellen Lernens mit AWS Neuron in einer Amazon ECS-Aufgabendefinition](ecs-inference-task-def.md) In der folgenden Tabelle sind die Chips aufgeführt, die für jeden Instance-Typ spezifisch sind.


| Instance-Typ | v CPUs | RAM (GiB) | AWS ML-Beschleunigerchips | Gerätepfade | 
| --- | --- | --- | --- | --- | 
| trn1.2xlarge | 8 | 32 | 1 | /dev/neuron0 | 
| trn1.32xlarge | 128 | 512 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| trn2.48xlarge | 192 | 1536 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| inf1.xlarge | 4 | 8 | 1 | /dev/neuron0 | 
| inf1.2xlarge | 8 | 16 | 1 | /dev/neuron0 | 
| inf1.6xlarge | 24 | 48 | 4 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3 | 
| inf1.24xlarge | 96 | 192 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| inf2.xlarge | 8 | 16 | 1 | /dev/neuron0 | 
| inf2.8xlarge | 32 | 64 | 1 | /dev/neuron0 | 
| inf2.24xlarge | 96 | 384 | 6 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5,  | 
| inf2.48xlarge | 192 | 768 | 12 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11 | 

# Spezifizierung des maschinellen Lernens mit AWS Neuron in einer Amazon ECS-Aufgabendefinition
<a name="ecs-inference-task-def"></a>

Nachfolgend finden Sie ein Beispiel der Linux-Aufgabendefinition für `inf1.xlarge`, das die zu verwendende Syntax anzeigt.

```
{
    "family": "ecs-neuron",
    "requiresCompatibilities": ["EC2"],
    "placementConstraints": [
        {
            "type": "memberOf",
            "expression": "attribute:ecs.os-type == linux"
        },
        {
            "type": "memberOf",
            "expression": "attribute:ecs.instance-type == inf1.xlarge"
        }
    ],
    "executionRoleArn": "${YOUR_EXECUTION_ROLE}",
    "containerDefinitions": [
        {
            "entryPoint": [
                "/usr/local/bin/entrypoint.sh",
                "--port=8500",
                "--rest_api_port=9000",
                "--model_name=resnet50_neuron",
                "--model_base_path=s3://amzn-s3-demo-bucket/resnet50_neuron/"
            ],
            "portMappings": [
                {
                    "hostPort": 8500,
                    "protocol": "tcp",
                    "containerPort": 8500
                },
                {
                    "hostPort": 8501,
                    "protocol": "tcp",
                    "containerPort": 8501
                },
                {
                    "hostPort": 0,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "linuxParameters": {
                "devices": [
                    {
                        "containerPath": "/dev/neuron0",
                        "hostPath": "/dev/neuron0",
                        "permissions": [
                            "read",
                            "write"
                        ]
                    }
                ],
                "capabilities": {
                    "add": [
                        "IPC_LOCK"
                    ]
                }
            },
            "cpu": 0,
            "memoryReservation": 1000,
            "image": "763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04",
            "essential": true,
            "name": "resnet50"
        }
    ]
}
```