本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將推論工作負載從 x86 遷移至 AWS Graviton
AWS Graviton
您可以使用ARM相容的容器映像或多架構容器映像,將現有的推論工作負載從以 x86 為基礎的執行個體遷移到以 Graviton 為基礎的執行個體。本指南假設您正在使用 AWS 深度學習容器映像
在高層級上,將推論工作負載從 x86 型執行個體遷移到 Graviton 型執行個體需要四個步驟:
將容器映像推送至 Amazon Elastic Container Registry (Amazon ECR),這是 AWS 受管容器登錄檔。
建立 SageMaker 模型。
建立端點組態。
建立端點。
本指南的以下各節提供有關上述步驟的更多詳細資訊。取代 user placeholder text
在程式碼範例中,使用您自己的資訊。
將容器映像推送至 Amazon ECR
您可以使用 ECR將容器映像推送至 Amazon AWS CLI。使用ARM相容映像時,請確認其支援ARM架構:
docker inspect
deep-learning-container-uri
回應"Architecture": "arm64"
表示映像支援ARM架構。您可以使用 docker push
命令ECR將其推送至 Amazon。如需詳細資訊,請查看推送 Docker 映像檔。
多架構容器映像基本上是一組支援不同架構或作業系統的容器映像檔,您可以透過通用資訊清單名稱來參考這些映像檔。如果您使用的是多架構容器映像,則除了將映像推送到 Amazon 之外ECR,您還必須將資訊清單清單推送到 Amazon ECR。資訊清單允許巢狀包含其他影像資訊清單,其中每個包含的映像檔都由架構、作業系統和其他平台屬性指定。下列範例會建立資訊清單清單,並將其推送至 Amazon ECR。
-
建立資訊清單清單。
docker manifest create
aws-account-id
.dkr.ecr.aws-region
.amazonaws.com/my-repository
\aws-account-id
.dkr.ecr.aws-account-id
.amazonaws.com/my-repository:amd64
\aws-account-id
.dkr.ecr.aws-account-id
.amazonaws.com/my-repository:arm64
\ -
註釋資訊清單,以便它正確識別哪個映像適用於哪個體系結構。
docker manifest annotate --arch arm64
aws-account-id
.dkr.ecr.aws-region
.amazonaws.com/my-repository
\aws-account-id
.dkr.ecr.aws-region
.amazonaws.com/my-repository:arm64
-
推送清單檔案。
docker manifest push
aws-account-id
.dkr.ecr.aws-region
.amazonaws.com/my-repository
如需建立清單清單並將其推送至 Amazon 的詳細資訊ECR,請參閱介紹 Amazon 的多架構容器映像ECR
建立 SageMaker 模型
呼叫 CreateModel
來建立 SageMaker 模型API。
import boto3 from sagemaker import get_execution_role aws_region = "
aws-region
" sagemaker_client = boto3.client("sagemaker", region_name=aws_region) role = get_execution_role() sagemaker_client.create_model( ModelName = "model-name
", PrimaryContainer = { "Image": "deep-learning-container-uri
", "ModelDataUrl": "model-s3-location
", "Environment": { "SAGEMAKER_PROGRAM": "inference.py
", "SAGEMAKER_SUBMIT_DIRECTORY": "inference-script-s3-location
", "SAGEMAKER_CONTAINER_LOG_LEVEL": "20", "SAGEMAKER_REGION": aws_region, } }, ExecutionRoleArn = role )
建立一個端點組態
呼叫 CreateEndpointConfig
來建立端點組態API。如需以 Graviton 為基礎的執行個體清單,請勾選運算最佳化執行個體。
sagemaker_client.create_endpoint_config( EndpointConfigName = "
endpoint-config-name
", ProductionVariants = [ { "VariantName": "variant-name
", "ModelName": "model-name
", "InitialInstanceCount":1
, "InstanceType": "ml.c7g.xlarge
", # Graviton-based instance } ] )
建立端點
呼叫 CreateEndpoint
來建立端點API。
sagemaker_client.create_endpoint( EndpointName = "
endpoint-name
", EndpointConfigName = "endpoint-config-name
" )