本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Neuron 機器學習工作負載的 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 執行個體的效能。
-
每個 AWS Trainium
或 AWS Inferentia 晶片一次僅可執行一個推論或推論訓練任務。若為 Inf1,每個晶片具有 4 個 NeuronCores。對於 Trn1, Trn2 和 Inf2,每個晶片都有 2 NeuronCores。您可以對每個 Trn1, Trn2, Inf1 和 Inf2 執行個體執行任意數量的任務。 -
建立服務或執行獨立任務時,您可以在設定任務置放限制條件時使用執行個體類型屬性。這可確保在您指定的容器執行個體上啟動任務。這樣做可協助您最佳化整體資源使用率,並確保推論工作負載的任務位於 Trn1, Trn2, Inf1 和 Inf2 執行個體上。如需詳細資訊,請參閱Amazon ECS 如何在容器執行個體上置放任務。
在以下範例中,在您的
default叢集的Inf1.xlarge執行個體上執行任務。aws ecs run-task \ --cluster default \ --task-definition ecs-inference-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge" -
無法在任務定義中定義 Neuron 資源需求。反之,您可以將容器設定為使用主機容器執行個體上可用的特定 AWS Trainium 或 AWS Inferentia 晶片。您可使用
linuxParameters參數並指定裝置詳細資訊來執行此動作。如需詳細資訊,請參閱任務定義需求。
使用 Amazon ECS 最佳化 Amazon Linux 2023 (Neuron) AMI
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
任務定義需求
要在 Amazon ECS 上部署 Neuron,您的任務定義必須包含預先構建的容器的容器定義,該容器為TensorFlow 提供推論模型。它由 AWS 深度學習容器提供。此容器包含 AWS Neuron 執行期和 TensorFlow Serving 應用程式。啟動時,此容器會從 Amazon S3 中擷取您的模型、使用儲存的模型啟動 Neuron TensorFlow Serving,並等待預測請求。在以下範例中,容器映像擁有 TensorFlow 1.15 和 Ubuntu 18.04。在 GitHub 上維護為 Neuron 最佳化的預先建置的 Deep Learning Containers 完整清單。如需詳細資訊,請參閱使用 AWS Neuron TensorFlow Serving。
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04
或者,您可以建置自己的 Neuron 附屬容器映像。如需詳細資訊,請參閱《AWS 深度學習 AMIs 開發人員指南》中的教學課程:Neuron TensorFlow Serving
任務定義必須根據單一執行個體類型專門設定。您必須將容器設定為使用主機容器執行個體上可用的特定 AWS Trainium 或 AWS Inferentia 裝置。您可以使用 linuxParameters 參數進行該動作。如需範例任務定義,請參閱 在 Amazon ECS 任務定義中指定 AWS Neuron 機器學習。下表詳細說明特定於每種執行個體類型的晶片。
| 執行個體類型 | 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 |