GPU工作負載的 Amazon ECS 任務定義 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

GPU工作負載的 Amazon ECS 任務定義

當您使用ECS支援的容器執行個體建立叢集時GPUs,Amazon 支援使用的工作負載GPUs。使用 p2、p3、p5、g3、g4 和 g5 執行個體類EC2GPU型的 Amazon 容器執行個體可以存取。NVIDIA GPUs如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Linux 加速運算執行個體

Amazon ECS 提供預先設定的NVIDIA核心驅動程式和 D GPU ocker 執行階段的GPU最佳化功AMI能。如需詳細資訊,請參閱Amazon ECS 優化 Linux AMIs

您可以在作業定義GPUs中指定一些,以便在貨櫃層次考量作業安置。Amazon ECS 排程可用的容器執行個體,以支援GPUs並GPUs將實體固定到適當的容器,以獲得最佳效能。

支EC2GPU援下列 Amazon 執行個體類型。如需詳細資訊,請參閱 Amazon EC2 P2 執行個體Amazon EC2 P3 執行個體Amazon EC2 P4d 執行個體Amazon EC2 P5 執行個體、Amazon EC2 G3 執行個體、Amazon G5 執行個體和 Amazon EC2 G6 執行個體。EC2 EC2

執行個體類型

GPUs

GPU記憶體 (GiB)

vCPUs

記憶體 (GiB)

p3.2xlarge

1

16

8

61

p3.8xlarge

4

64

32

244

p3.16xlarge

8

128

64

488

p3dn.24xlarge

8

256

96

768

p4d.24xlarge

8 320 96 1152
p5.48xlarge 8 640 192 2048

g3s.xlarge

1

8

4

30.5

g3.4xlarge

1

8

16

122

g3.8xlarge

2

16

32

244

g3.16xlarge

4

32

64

488

g4dn.xlarge

1

16

4

16

g4dn.2xlarge

1

16

8

32

g4dn.4xlarge

1

16

16

64

g4dn.8xlarge

1

16

32

128

g4dn.12xlarge

4

64

48

192

g4dn.16xlarge

1

16

64

256

g5.xlarge

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

1 24 4 16
1 24 8 32
1 24 16 64
1 24 32 128
1 24 64 256
4 96 48 192
4 96 48 192
8 192 192 768
g6. 金屬 8 192 192 768
克 6.4 倍大 1 24 16 128
克 6.8 倍大 1 24 32 256

您可以AMIs透過查詢 AWS Systems Manager 參數存放區API擷取 Amazon 機器映像 (AMI) ID 以進行 Amazon ECS 優化。使用這個參數,你不需要手動查找 Amazon ECS 優化AMIIDs。如需「Systems Manager 參數存放區」的更多資訊API,請參閱GetParameter。您使用的使用者必須擁有擷取 Amazon ECS 最佳化AMI中繼資料的ssm:GetParameterIAM權限。

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

考量事項

注意

對 g2 執行個體系列類型的支援已被棄用。

p2 執行個體系列類型僅在 Amazon ECS GPU 最佳化之前20230912的版本上受支援。AMI如果您需要繼續使用 p2 執行個體,請參閱 您需要 P2 執行個體時要採取的動作

這兩種執行個體系列類型上的NVIDIA/CUDA驅動程式的就地更新將導致潛在的GPU工作負載失敗。

我們建議您GPUs在開始使用 Amazon 之前考慮以下事項ECS。

  • 您的叢集可以包含混合執行個體GPU和非GPU容器執行個體。

  • 您可在外部執行個體上執行GPU工作負載。在您叢集中註冊外部執行個體時,請確保安裝指令碼中包含 --enable-gpu 標記。如需詳細資訊,請參閱將外部執行個體註冊到 Amazon ECS 叢集

  • 您必須在代理程式組態檔案中將 ECS_ENABLE_GPU_SUPPORT 設定為 true。如需詳細資訊,請參閱Amazon ECS 容器代理配置

  • 執行任務或建立服務時,您可以在設定任務放置限制條件時使用執行個體類型屬性,來決定任務在哪個容器執行個體啟動。這樣便可更有效地使用您的資源。如需詳細資訊,請參閱Amazon 如何在容器執行個體上ECS放置任務

    以下範例會在預設叢集的 g4dn.xlarge 容器執行個體啟動任務。

    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
  • 對於具有容器定義中指定GPU資源需求的每個容器,Amazon 會將容器執行階段ECS設定為NVIDIA容器執行階段。

  • NVIDIA容器執行階段需要在容器中設定一些環境變數,才能正常運作。如需這些環境變數的清單,請參閱使用 Docker 進行特殊組態。Amazon ECS 將NVIDIA_VISIBLE_DEVICES環境變量值設置為 Amazon ECS 分配給容器的設GPU備IDs列表。對於其他必需的環境變量,Amazon ECS 不會設置它們。因此,請確保容器映像會設定它們,或在容器定義中設定它們。

  • 在 Amazon ECS GPU 優化的版本20230929和更高版本上支援 p5 執行個體類型系列。AMI

  • 在 Amazon ECS GPU 優化的版本20230913和更高版本上支援 g4 執行個體類型系列。AMI如需詳細資訊,請參閱Amazon ECS 優化 Linux AMIs。Amazon ECS 主控台的「建立叢集」工作流程不支援此功能。若要使用這些執行個體類型,您必須使用 Amazon EC2 主控台 AWS CLI API,或手動將執行個體註冊到叢集。

  • p4d.24xlarge 執行個體類型僅適用於 11 或更新版本。CUDA

  • Amazon ECS GPU 優化AMI已IPv6啟用,這會導致使用yum時出現問題。這可以通過配置以使yumIPv4用以下命令來解決。

    echo "ip_resolve=4" >> /etc/yum.conf
  • 當您建置不使用NVIDIA/CUDA基底影像的容器映像檔時,必須將NVIDIA_DRIVER_CAPABILITIES容器執行階段變數設定為下列其中一個值:

    • utility,compute

    • all

    如需如何設定變數的詳細資訊,請參閱控制NVIDIA網站上的NVIDIA容器執行階段

  • GPUs在視窗容器上不受支援。

您需要 P2 執行個體時要採取的動作

如果您需要使用 P2 執行個體,您可以使用下列其中一個選項來繼續使用執行個體。

您必須修改這兩個選項的執行個體使用者資料。如需詳細資訊,請參閱 Amazon 使用者指南中的使用執行個體EC2使用者資料

使用上次支援的最佳GPU化 AMI

您可以使用 GPU-optimized 的20230906版本AMI,並將以下內容添加到實例用戶數據中。

以您的叢集名稱取代 cluster-name。

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

使用最新的GPU優化AMI,並更新用戶數據

您可以將下列內容新增至執行個體使用者資料。這將解除安裝 Nvidia 535/Cuda12.2 驅動程式,然後安裝 Nvidia 470/Cuda11.4 驅動程式並修復該版本。

#!/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

創建自己的 P2 兼容 GPU-優化 AMI

您可以建立與 P2 執行個體相容的自訂 Amazon ECS GPU 最佳化AMI,然後使用. AMI

  1. 執行下列命令以複製 amazon-ecs-ami repo

    git clone https://github.com/aws/amazon-ecs-ami
  2. 在或中設定所需的 Amazon ECS 代理程式並來源 Amazon Linux AMI 版release.auto.pkrvars.hcloverrides.auto.pkrvars.hcl

  3. 運行以下命令以構建私有 P2 兼容EC2AMI。

    將區域替換為具有執行個體區域的區域。

    REGION=region make al2keplergpu
  4. AMI搭配下列執行個體使用者資料使用,以連線到 Amazon ECS 叢集。

    以您的叢集名稱取代 cluster-name。

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