View a markdown version of this page

Menentukan GPU dalam definisi tugas Amazon ECS - Amazon Elastic Container Service

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

Menentukan GPU dalam definisi tugas Amazon ECS

Untuk menggunakan GPU pada instance kontainer dan runtime GPU Docker, pastikan Anda menetapkan jumlah GPU yang dibutuhkan wadah Anda dalam definisi tugas. Anda dapat menentukan nilai integer, nilai desimal untuk GPU pecahan, atau. ALL Saat Anda menentukanALL, semua GPU pada instance kontainer dialokasikan ke wadah. Saat Anda menentukan nilai desimal seperti0.25, Amazon ECS menempatkan tugas pada instance GPU fraksional yang menyediakan kapasitas GPU yang diminta. Saat wadah yang mendukung GPU ditempatkan, agen kontainer Amazon ECS menyematkan jumlah GPU fisik yang diinginkan ke wadah yang sesuai. Jumlah GPU yang dicadangkan untuk semua wadah dalam tugas tidak boleh melebihi jumlah GPU yang tersedia pada instance kontainer tempat tugas diluncurkan. Untuk informasi selengkapnya, lihat Membuat definisi tugas Amazon ECS menggunakan konsol.

penting

Jika persyaratan GPU Anda tidak ditentukan dalam ketentuan tugas, tugas akan menggunakan waktu aktif Docker default.

Berikut ini menunjukkan format JSON untuk persyaratan GPU dalam ketentuan tugas:

{ "containerDefinitions": [ { ... "resourceRequirements" : [ { "type" : "GPU", "value" : "2" } ], }, ... }

Anda juga dapat menentukan ALL sebagai nilai alih-alih angka untuk mengalokasikan semua GPU pada instance kontainer ke wadah.

Contoh berikut menunjukkan sintaksis untuk kontainer Docker yang menentukan persyaratan GPU. Wadah ini menggunakan dua GPU, menjalankan nvidia-smi utilitas, dan kemudian keluar.

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

Contoh definisi tugas berikut menunjukkan TensorFlow wadah yang mencetak jumlah GPU yang tersedia. Tugas berjalan di Instans Terkelola Amazon ECS, memerlukan satu GPU, dan menggunakan 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", }

Menentukan GPU fraksional

Amazon ECS mendukung penjadwalan GPU fraksional dengan instans Amazon EC2 G6f. Instans G6f menyediakan pecahan NVIDIA L4 GPU yang dipartisi perangkat keras, di mana setiap instance mengekspos irisan GPU tetap (1/8, 1/4, atau 1/2) dengan memori dan komputasi GPU khusus. Untuk menggunakan GPU pecahan, tentukan nilai desimal dalam definisi wadah Anda: resourceRequirements

"resourceRequirements": [ { "type": "GPU", "value": "0.25" } ]

Nilai pecahan yang didukung dan jenis instance G6f yang sesuai adalah:

Nilai GPU Fraksi GPU Memori GPU Tipe instans
0.125 1/8 GPU 3 GB g6f.besar, g6f.xbesar
0.25 1/4 GPU 6GB g6f.2xbesar
0.5 1/2 GPU 12GB g6f.4xbesar, gr6f.4xbesar

Contoh definisi tugas berikut menjalankan wadah inferensi ringan pada GPU fraksional dengan 1/4 GPU (memori NVIDIA L4 GPU 6 GB):

{ "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" }
Pertimbangan GPU fraksional
  • Hanya satu wadah per tugas yang dapat meminta nilai GPU fraksional. Jika wadah menentukan GPU fraksional, tidak ada wadah lain dalam definisi tugas tersebut yang dapat memiliki persyaratan sumber daya GPU.

  • Nilai integer (1,2, dll.) diperlakukan sebagai permintaan GPU penuh dan hanya ditempatkan pada instans dengan kapasitas GPU penuh. Nilai desimal (0.125,0.25,0.5) diperlakukan sebagai permintaan GPU fraksional dan ditempatkan pada instance dengan partisi GPU fraksional yang sesuai.

  • Anda dapat menyertakan instans GPU fraksional (G6f) dan instans GPU penuh (seperti g5 atau g6) dalam penyedia kapasitas yang sama. Amazon ECS merutekan tugas ke jenis instans yang benar berdasarkan nilai GPU yang dinyatakan. Anda tidak memerlukan penyedia kapasitas terpisah per keluarga GPU.

  • Anda dapat menggunakan penjadwalan GPU fraksional dengan Instans Terkelola Amazon ECS dan Amazon ECS di Amazon EC2. Fargate dan Amazon ECS Anywhere tidak mendukung penjadwalan GPU fraksional.

  • Untuk beban kerja GPU penuh, lanjutkan menggunakan nilai integer seperti sebelumnya:"value": "1".