本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Neuron Machine Learning 工作負載的 Amazon ECS 任務定義
對於機器學習工作負載,您可以將 Amazon EC2 Trn1
Amazon EC2 Trn1 和 Trn2 執行個體採用 AWS Trainium
Amazon EC2 Inf1 執行個體和 Inf2 執行個體由 AWS Inferentia
機器學習模型使用 AWS Neuron
考量事項
當您開始在 Amazon ECS 上部署 Neuron 之前,請考量下列事項:
-
根據啟動類型,您的叢集可以包含 Trn1、Trn2、Inf1、Inf2 和其他執行個體的混合。
-
您需要容器中使用支援 AWS Neuron 的機器學習架構的 Linux 應用程式。
重要
使用其他架構的應用程式可能無法改善 Trn1、Trn2、Inf1 和 Inf2 執行個體的效能。
-
Amazon ECS 支援兩種方法來設定 Neuron 裝置存取:
-
Managed Neuron 裝置配置 – 在容器定義
NeuronDevice中使用resourceRequirements參數搭配 類型。Amazon ECS 會自動探索 Neuron 裝置並將其指派給您的容器。僅適用於受管執行個體。如需詳細資訊,請參閱Managed Neuron 裝置配置。 -
手動 Neuron 裝置規格 – 使用
linuxParameters.devices參數明確指定 Neuron 裝置路徑。適用於 EC2 啟動類型和受管執行個體。如需詳細資訊,請參閱手動 Neuron 裝置規格。
重要
僅使用一種方法,以避免衝突。
-
Managed Neuron 裝置配置
透過受管執行個體,您可以在容器定義中使用 resourceRequirements 參數來請求 Neuron 裝置。Amazon ECS 會自動探索執行個體上的 Neuron 裝置、將它們指派給您的任務,以及設定可存取執行個體上所有 Neuron 裝置的容器。由於任務需要所有裝置的專屬存取權,因此每個執行個體只會執行一個 Neuron 任務。
注意
Inf1 執行個體僅支援 EC2 啟動類型。若要使用 Inf1 執行個體,請參閱 手動 Neuron 裝置規格。
Neuron 執行個體選取
若要為受管執行個體工作負載選取已啟用 Neuron 的執行個體類型,請使用容量提供者啟動範本中的 instanceRequirements 物件。您可以使用下列屬性來選取已啟用 Neuron 的執行個體:
-
acceleratorManufacturers– 使用amazon-web-services來選取具有 AWS 加速器的執行個體 (包括 Inferentia 和 Trainium)。 -
acceleratorNames– 使用trainium、inferentia2或trainium2選取特定加速器晶片。 -
allowedInstanceTypes– 使用inf*和trn*依名稱選取 Neuron 執行個體類型。
以下範例使用 allowedInstanceTypes:
{ "instanceRequirements": { "allowedInstanceTypes": ["inf*", "trn*"] } }
任務定義
若要在任務定義中請求 Neuron 裝置,請新增類型為 NeuronDevice且值為 resourceRequirements的項目ALL。這可讓容器專屬存取執行個體上的所有 Neuron 裝置。
以下為目前的限制:
-
最多可以在
NeuronDevice中指定一個容器定義resourceRequirements。 -
您無法
resourceRequirements在相同的任務定義中結合 Neuron 裝置的類型NeuronDevice和linuxParameters.devices。
任務啟動後,您可以透過呼叫 DescribeTasks API 操作來驗證 Neuron 裝置指派。回應包含每個容器上的neuronDeviceIds欄位,其中顯示指派的 Neuron 裝置的 IDs。您也可以呼叫 DescribeContainerInstances API 操作,在容器執行個體的 NEURON_DEVICES registeredResources和 remainingResources欄位中檢視 。
如需範例任務定義,請參閱 Neuron 任務定義範例。
手動 Neuron 裝置規格
透過此方法,您可以使用 linuxParameters.devices 參數在任務定義中手動指定 AWS Trainium 或 AWS Inferentia 裝置路徑。此方法適用於 EC2 啟動類型和受管執行個體。
每個 AWS Trainium
對於 EC2 啟動類型,您可以在設定任務置放限制條件時使用執行個體類型屬性,以確保在您指定的執行個體類型上啟動任務。如需詳細資訊,請參閱Amazon ECS 如何在容器執行個體上置放任務。
任務定義需求
任務定義必須根據單一執行個體類型專門設定。您必須將容器設定為使用主機容器執行個體上可用的特定 AWS Trainium 或 AWS Inferentia 裝置。您可以使用 linuxParameters 參數進行該動作。下表詳細說明特定於每種執行個體類型的晶片。
| 執行個體類型 | vCPUs | RAM (GiB) | AWS ML 加速器晶片 | 裝置路徑 |
|---|---|---|---|---|
| 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 |
如需範例任務定義,請參閱 Neuron 任務定義範例。
受管執行個體
受管執行個體會自動使用包含 Neuron 驅動程式的 AMI。不需要額外的 AMI 組態。
EC2 啟動類型
Amazon ECS 提供以 Amazon Linux 2023 為基礎的 Amazon ECS 最佳化 AMI,適用於 AWS Trainium 和 AWS Inferentia 工作負載。它隨附 Docker 的 AWS Neuron 驅動程式和執行期。此 AMI 使得在 Amazon ECS 上執行機器學習推論工作負載更輕鬆。
建議在啟動 Amazon EC2 Trn1、Inf1 和 Inf2 執行個體時,使用 Amazon ECS 最佳化 Amazon Linux 2023 (Neuron) AMI。
您可以使用 AWS CLI 搭配下列命令,擷取目前的 Amazon ECS 最佳化 Amazon Linux 2023 (Neuron) AMI。
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended