View a markdown version of this page

AWS Neuron Machine Learning 工作負載的 Amazon ECS 任務定義 - Amazon Elastic Container Service

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

AWS Neuron Machine Learning 工作負載的 Amazon ECS 任務定義

對於機器學習工作負載,您可以將 Amazon EC2 Trn1Amazon EC2 Trn2Amazon EC2 Inf1 (僅 EC2 啟動類型支援 Inf1) 和 Amazon EC2 Inf2 執行個體與叢集搭配使用。

Amazon EC2 Trn1 和 Trn2 執行個體採用 AWS Trainium 晶片。這些執行個體為雲端中的機器學習提供高效能和低成本的訓練。您可以使用機器學習架構搭配 Trn1 或 Trn2 執行個體上的 AWS Neuron 來訓練機器學習推論模型。然後,您可以在 Inf1 執行個體 (僅 EC2 啟動類型支援 Inf1) 或 Inf2 執行個體上執行模型,以使用 AWS Inferentia 晶片的加速。

Amazon EC2 Inf1 執行個體和 Inf2 執行個體由 AWS Inferentia 晶片提供支援。這些晶片在雲端提供高效能和最低成本的推論。

機器學習模型使用 AWS Neuron 部署至容器,這是一款特殊軟體開發套件 (SDK)。SDK 包含編譯器、執行時間和分析工具,可最佳化機器學習晶片的 AWS 機器學習效能。 AWS Neuron 支援熱門的機器學習架構,例如 TensorFlow、PyTorch 和 Apache MXNet。

考量事項

當您開始在 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 – 使用 trainiuminferentia2trainium2 選取特定加速器晶片。

  • allowedInstanceTypes – 使用 inf*trn* 依名稱選取 Neuron 執行個體類型。

以下範例使用 allowedInstanceTypes

{ "instanceRequirements": { "allowedInstanceTypes": ["inf*", "trn*"] } }

任務定義

若要在任務定義中請求 Neuron 裝置,請新增類型為 NeuronDevice且值為 resourceRequirements的項目ALL。這可讓容器專屬存取執行個體上的所有 Neuron 裝置。

以下為目前的限制:

  • 最多可以在 NeuronDevice中指定一個容器定義resourceRequirements

  • 您無法resourceRequirements在相同的任務定義中結合 Neuron 裝置的類型 NeuronDevicelinuxParameters.devices

任務啟動後,您可以透過呼叫 DescribeTasks API 操作來驗證 Neuron 裝置指派。回應包含每個容器上的neuronDeviceIds欄位,其中顯示指派的 Neuron 裝置的 IDs。您也可以呼叫 DescribeContainerInstances API 操作,在容器執行個體的 NEURON_DEVICES registeredResourcesremainingResources欄位中檢視 。

如需範例任務定義,請參閱 Neuron 任務定義範例

手動 Neuron 裝置規格

透過此方法,您可以使用 linuxParameters.devices 參數在任務定義中手動指定 AWS Trainium 或 AWS Inferentia 裝置路徑。此方法適用於 EC2 啟動類型和受管執行個體。

每個 AWS TrainiumAWS Inferentia 晶片一次僅可執行一個推論或推論訓練任務。您可以透過將不同的裝置指派給每個任務,在執行個體上執行任意數量的任務。

對於 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