本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 執行個體
執行個體類型 |
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:GetParameter
IAM權限。
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
時出現問題。這可以通過配置以使yum
IPv4用以下命令來解決。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
-
執行下列命令以複製
amazon-ecs-ami repo
。git clone https://github.com/aws/amazon-ecs-ami
-
在或中設定所需的 Amazon ECS 代理程式並來源 Amazon Linux AMI 版
release.auto.pkrvars.hcl
本overrides.auto.pkrvars.hcl
。 -
運行以下命令以構建私有 P2 兼容EC2AMI。
將區域替換為具有執行個體區域的區域。
REGION=
region
make al2keplergpu -
AMI搭配下列執行個體使用者資料使用,以連線到 Amazon ECS 叢集。
以您的叢集名稱取代 cluster-name。
#!/bin/bash echo "ECS_CLUSTER=
cluster-name
" >> /etc/ecs/ecs.config