

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Definisi tugas Amazon ECS untuk beban kerja pembelajaran mesin AWS Neuron
<a name="ecs-inference"></a>

Anda dapat mendaftarkan [instans Amazon EC2 Trn1, Amazon](https://aws.amazon.com/ec2/instance-types/trn1/) EC2 [Trn2, Amazon EC2 Inf1,](https://aws.amazon.com/ec2/instance-types/trn2/) [dan [Amazon EC2](https://aws.amazon.com/ec2/instance-types/inf2/) Inf2](https://aws.amazon.com/ec2/instance-types/inf1/) ke cluster Anda untuk beban kerja pembelajaran mesin.

[Instans Amazon EC2 Trn1 dan Trn2 didukung oleh chip Trainium.AWS](https://aws.amazon.com/ai/machine-learning/trainium/) Instans ini memberikan pelatihan berkinerja tinggi dan biaya rendah untuk pembelajaran mesin di cloud. Anda dapat melatih model inferensi pembelajaran mesin menggunakan kerangka pembelajaran mesin dengan AWS Neuron pada instance Trn1 atau Trn2. Kemudian, Anda dapat menjalankan model pada instance Inf1, atau instance Inf2 untuk menggunakan akselerasi chip AWS Inferentia.

Instans Amazon EC2 Inf1 dan instans Inf2 didukung oleh chip [AWS Inferentia. Instans ini memberikan kinerja tinggi dan inferensi](https://aws.amazon.com/ai/machine-learning/inferentia/) biaya terendah di cloud.

Model pembelajaran mesin digunakan ke wadah menggunakan [AWS Neuron](https://aws.amazon.com/ai/machine-learning/neuron/), yang merupakan Kit Pengembang Perangkat Lunak (SDK) khusus. SDK terdiri dari compiler, runtime, dan alat profiling yang mengoptimalkan kinerja machine learning chip machine learning. AWS AWS Neuron mendukung kerangka kerja pembelajaran mesin populer seperti TensorFlow, PyTorch, dan MXNet Apache.

## Pertimbangan-pertimbangan
<a name="ecs-inference-considerations"></a>

Sebelum Anda mulai menerapkan Neuron di Amazon ECS, pertimbangkan hal berikut:
+ Cluster Anda dapat berisi campuran Trn1, Trn2, Inf1, Inf2 dan instance lainnya.
+ Anda memerlukan aplikasi Linux dalam wadah yang menggunakan kerangka pembelajaran mesin yang mendukung AWS Neuron.
**penting**  
Aplikasi yang menggunakan kerangka kerja lain mungkin tidak meningkatkan kinerja pada instance Trn1, Trn2, Inf1, dan Inf2.
+ [Hanya satu tugas inferensi atau pelatihan inferensi yang dapat dijalankan pada setiap chip [AWS Trainium](https://aws.amazon.com/ai/machine-learning/trainium/) atau Inferentia.AWS](https://aws.amazon.com/ai/machine-learning/inferentia/) Untuk Inf1, setiap chip memiliki 4 NeuronCores. Untuk Trn1, Trn2, dan Inf2 setiap chip memiliki 2. NeuronCores Anda dapat menjalankan tugas sebanyak mungkin karena ada chip untuk setiap instans Trn1, Trn2, Inf1, dan Inf2 Anda.
+ Saat membuat layanan atau menjalankan tugas mandiri, Anda dapat menggunakan atribut tipe instance saat mengonfigurasi batasan penempatan tugas. Ini memastikan bahwa tugas diluncurkan pada instance container yang Anda tentukan. Melakukannya dapat membantu Anda mengoptimalkan pemanfaatan sumber daya secara keseluruhan dan memastikan bahwa tugas untuk beban kerja inferensi ada di instans Trn1, Trn2, Inf1, dan Inf2 Anda. Untuk informasi selengkapnya, lihat [Cara Amazon ECS Menempatkan Tugas di Instans Kontainer](task-placement.md).

  Dalam contoh berikut, tugas dijalankan pada `Inf1.xlarge` instance di `default` cluster Anda.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition ecs-inference-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  ```
+ Persyaratan sumber daya neuron tidak dapat didefinisikan dalam definisi tugas. Sebagai gantinya, Anda mengonfigurasi wadah untuk menggunakan chip AWS Trainium atau AWS Inferentia tertentu yang tersedia di instance wadah host. Lakukan ini dengan menggunakan `linuxParameters` parameter dan menentukan detail perangkat. Untuk informasi selengkapnya, lihat [Persyaratan ketentuan tugas](#ecs-inference-requirements).

## Gunakan AMI Amazon Linux 2023 (Neuron) Amazon ECS yang dioptimalkan oleh Amazon
<a name="ecs-inference-ami2023"></a>

Amazon ECS menyediakan AMI Amazon ECS yang dioptimalkan yang didasarkan pada Amazon Linux 2023 untuk beban kerja AWS Trainium dan Inferentia. AWS Muncul dengan driver AWS Neuron dan runtime untuk Docker. AMI ini membuat menjalankan beban kerja inferensi pembelajaran mesin lebih mudah di Amazon ECS.

Sebaiknya gunakan AMI Amazon Linux 2023 (Neuron) Amazon ECS yang dioptimalkan Amazon ECS saat meluncurkan instans Amazon EC2 Trn1, Inf1, dan Inf2 Anda. 

Anda dapat mengambil AMI Amazon Linux 2023 (Neuron) Amazon ECS yang dioptimalkan saat AWS CLI ini menggunakan perintah berikut.

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

## Persyaratan ketentuan tugas
<a name="ecs-inference-requirements"></a>

Untuk menerapkan Neuron di Amazon ECS, definisi tugas Anda harus berisi definisi penampung untuk wadah bawaan yang menyajikan model inferensi. TensorFlow Ini disediakan oleh AWS Deep Learning Containers. Wadah ini berisi runtime AWS Neuron dan aplikasi TensorFlow Serving. Saat startup, penampung ini mengambil model Anda dari Amazon S3, meluncurkan Penyajian TensorFlow Neuron dengan model yang disimpan, dan menunggu permintaan prediksi. Dalam contoh berikut, gambar kontainer memiliki TensorFlow 1.15 dan Ubuntu 18.04. Daftar lengkap Deep Learning Containers pra-bangun yang dioptimalkan untuk Neuron GitHub dipertahankan. Untuk informasi lebih lanjut, lihat [Menggunakan TensorFlow Penyajian AWS Neuron](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
```

Atau, Anda dapat membangun sendiri citra kontainer Neuron sespan. Untuk informasi lebih lanjut, lihat [Tutorial: TensorFlow Penyajian Neuron](https://github.com/aws-neuron/aws-neuron-sdk/blob/master/frameworks/tensorflow/tensorflow-neuron/tutorials/tutorials-tensorflow-utilizing-neuron-capabilities.rst) di *Panduan AWS Deep Learning AMIs Pengembang*.

Definisi tugas harus spesifik untuk satu jenis instance. Anda harus mengonfigurasi wadah untuk menggunakan perangkat AWS Trainium atau AWS Inferentia tertentu yang tersedia di instance wadah host. Anda dapat melakukannya dengan menggunakan `linuxParameters` parameter. Untuk contoh definisi tugas, lihat[Menentukan pembelajaran mesin AWS Neuron dalam definisi tugas Amazon ECS](ecs-inference-task-def.md). Tabel berikut merinci chip yang spesifik untuk setiap jenis instance.


| Tipe Instans | v CPUs | RAM (GiB) | AWS Chip akselerator mL | Jalur Perangkat | 
| --- | --- | --- | --- | --- | 
| 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 | 

# Menentukan pembelajaran mesin AWS Neuron dalam definisi tugas Amazon ECS
<a name="ecs-inference-task-def"></a>

Berikut ini adalah contoh definisi tugas Linux untuk`inf1.xlarge`, menampilkan sintaks yang akan digunakan.

```
{
    "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"
        }
    ]
}
```