將推論工作負載從 x86 移轉至 AWS Graviton - Amazon SageMaker

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

將推論工作負載從 x86 移轉至 AWS Graviton

AWS 引力是一系列基於設計的處理ARM器 AWS。 它們比基於 x86 的處理器更具能源效率,並且具有令人信服的性價比。Amazon SageMaker 提供以重力為基礎的執行個體,因此您可以利用這些進階處理器來滿足您的推論需求。

您可以使用相容的容器映像檔或多架構ARM容器映像,將現有的推論工作負載從 x86 型執行個體移轉到以重力為基礎的執行個體。本指南假設您正在使用 AWS 深度學習容器映像檔,或您自己ARM相容的容器映像檔。如需建立自己映像的詳細資訊,請勾選建立您的映像

在高層級上,將推論工作負載從 x86 型執行個體遷移到 Graviton 型執行個體需要四個步驟:

  1. 將容器映像推送到 Amazon 彈性容器註冊表(AmazonECR), AWS 受管理的容器登錄。

  2. 建立 SageMaker 模型。

  3. 建立端點組態。

  4. 建立端點。

本指南的以下各節提供有關上述步驟的更多詳細資訊。更換 user placeholder text 在代碼示例中使用您自己的信息。

將容器映像推送到 Amazon ECR

您可以將容器映像推送到 Amazon ECR AWS CLI。 使用ARM相容的映像檔時,請確認其支援ARM架構:

docker inspect deep-learning-container-uri

回應"Architecture": "arm64"表示影像支援ARM架構。您可以ECR使用該docker push命令將其推送到 Amazon。如需詳細資訊,請查看推送 Docker 映像檔

多架構容器映像基本上是一組支援不同架構或作業系統的容器映像檔,您可以透過通用資訊清單名稱來參考這些映像檔。如果您使用的是多架構容器映像,那麼除了將圖像推送到 Amazon 之外ECR,您還必須將清單列表推送到 Amazon ECR。資訊清單允許巢狀包含其他影像資訊清單,其中每個包含的映像檔都由架構、作業系統和其他平台屬性指定。下面的示例創建一個清單列表,並將其推送到 Amazon ECR。

  1. 建立資訊清單清單。

    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 \
  2. 註釋資訊清單,以便它正確識別哪個映像適用於哪個體系結構。

    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
  3. 推送清單檔案。

    docker manifest push aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository

如需建立和推送資訊清單清單至 Amazon 的詳細資訊ECR,請參閱為 Amazon ECR 引入多架構容器映像推送多架構映像。

建立 SageMaker 模型

呼叫建立 SageMaker 模型CreateModelAPI。

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 )

建立一個端點組態

透過呼叫建立端點組態CreateEndpointConfigAPI。如需以 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 } ] )

建立端點

透過呼叫建立端點CreateEndpointAPI。

sagemaker_client.create_endpoint( EndpointName = "endpoint-name", EndpointConfigName = "endpoint-config-name" )