本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 AWS 神經元機器學習工作負載的 Amazon ECS 任務定義
您可將 Amazon EC2 Trn1
Amazon EC2 Trn1 執行個體採用 AWS Trainium
Amazon EC2 Inf1 執行個體和 Inf2 執行個體由 AWS Inferentia
機器學習模型使用 AWS Neuron
考量事項
當您開始在 Amazon ECS 上部署 Neuron 之前,請考量下列事項:
-
您的叢集可包含 Trn1、Inf1、Inf2 和其他執行個體的組合。
-
您需要在使用支援 AWS 神經元的機器學習架構的容器中使用 Linux 應用程式。
重要
使用其他架構的應用程式在 Trn1、Inf1 和 Inf2 執行個體上的效能可能不會有很大提升。
-
每個 AWS Trainium
或 AWS Inferentia 晶片一次僅可執行一個推論或推論訓練任務。對於 Inf1,每個晶片都有 4 NeuronCores 個。對於 Trn1 和 In2,每個芯片都有 2。 NeuronCores每個 Trn1、Inf1 和 Inf2 執行個體上有多少個晶片就可以執行多少個任務。 -
建立服務或執行獨立任務時,您可以在設定任務置放限制條件時使用執行個體類型屬性。這可確保在您指定的容器執行個體上啟動任務。藉此可協助您最佳化整體資源使用率,並確保推論工作負載的任務都位於 Trn1、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 推論晶片。您可使用
linuxParameters
參數並指定裝置詳細資訊來執行此動作。如需詳細資訊,請參閱 任務定義需求。
使用 Amazon ECS 優化 Amazon Linux 2023(神經元)AMI
Amazon ECS 提供了一個 Amazon ECS 優化 AMI,該 AMI 基於 Amazon Linux 2023,用於工作負載和推論工作負載 AWS 。 AWS 它配備了 AWS 神經元驅動程序和運行時的 Docker。此 AMI 使得在 Amazon ECS 上執行機器學習推論工作負載更輕鬆。
我們建議您在啟動 Amazon EC2 Trn1、InF1 和 In2 執行個體時使用 Amazon ECS 優化的亞馬遜 Linux 2023 (神經元) AMI。
您可以使用以下命令檢索當前 Amazon ECS 優化的 Amazon Linux 2023(神經元)AMI。 AWS CLI
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended
以下區域支援 Amazon ECS 最佳化 Amazon Linux 2023 (神經元) AMI:
-
美國東部 (維吉尼亞北部)
-
美國東部 (俄亥俄)
-
美國西部 (加利佛尼亞北部)
-
美國西部 (奧勒岡)
-
亞太區域 (孟買)
-
亞太區域 (大阪)
-
亞太區域 (首爾)
-
亞太區域 (東京)
-
亞太區域 (新加坡)
-
亞太區域 (悉尼)
-
加拿大 (中部)
-
歐洲 (法蘭克福)
-
歐洲 (愛爾蘭)
-
歐洲 (倫敦)
-
歐洲 (巴黎)
-
歐洲 (斯德哥爾摩)
-
南美洲 (聖保羅)
使用 Amazon ECS 優化 Amazon Linux 2(神經元)AMI
Amazon ECS 提供了一個 Amazon ECS 優化 AMI,該 AMI 基於 Amazon Linux 2,用於工作負載和推 AWS 論工作負載。 AWS 它配備了 AWS 神經元驅動程序和運行時的 Docker。此 AMI 使得在 Amazon ECS 上執行機器學習推論工作負載更輕鬆。
建議在啟動 Amazon EC2 Trn1、Inf1 和 Inf2 執行個體時,使用 Amazon ECS 最佳化 Amazon Linux 2 (Neuron) AMI。
您可以使用以下命令檢索當前 Amazon ECS 優化 Amazon Linux 2(神經元)AMI。 AWS CLI
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended
Amazon ECS 最佳化 Amazon Linux 2 (神經元) AMI 在以下區域支援:
-
美國東部 (維吉尼亞北部)
-
美國東部 (俄亥俄)
-
美國西部 (加利佛尼亞北部)
-
美國西部 (奧勒岡)
-
亞太區域 (孟買)
-
亞太區域 (大阪)
-
亞太區域 (首爾)
-
亞太區域 (東京)
-
亞太區域 (新加坡)
-
亞太區域 (悉尼)
-
加拿大 (中部)
-
歐洲 (法蘭克福)
-
歐洲 (愛爾蘭)
-
歐洲 (倫敦)
-
歐洲 (巴黎)
-
歐洲 (斯德哥爾摩)
-
南美洲 (聖保羅)
任務定義需求
若要在 Amazon ECS 上部署 Neuron,您的任務定義必須包含提供推論模型之預先建置容器的容器定義。 TensorFlow它由 AWS Deep Learning Containers 提供。此容器包含 AWS 神經元運行時和 TensorFlow 服務應用程序。啟動時,此容器會從 Amazon S3 擷取您的模型、使用儲存的模型啟動神經元 TensorFlow 服務,然後等待預測請求。在下面的例子中,容器映像具有 TensorFlow 1.15 和 Ubuntu 18.04。維護針對神經元優化的預先構建 Deep Learning Containers 的完整列表。 GitHub如需詳細資訊,請參閱使用 AWS 神經元服 TensorFlow 務。
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04
或者,您可以建置自己的 Neuron 附屬容器映像。如需詳細資訊,請參閱AWS Deep Learning AMI 開發人員指南中的教學課程:神經元 TensorFlow 服務
任務定義必須根據單一執行個體類型專門設定。您必須將容器設定為使用主機容器執行個體上可用的特定 AWS Trainium 或 AWS 推論裝置。您可以使用 linuxParameters
參數進行該動作。下表詳細說明特定於每種執行個體類型的晶片。
執行個體類型 | vCPU | 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
|
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 |