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

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

將推論工作負載從 x86 移轉至 AWS 引力子

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

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

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

  1. 將容器映像推送至亞馬遜彈性容器登錄 (Amazon ECR),這是一個 AWS 受管容器登錄。

  2. 建立 SageMaker 模型。

  3. 建立端點組態。

  4. 建立端點。

本指南的以下各節提供有關上述步驟的更多詳細資訊。以您自己的資訊取代程式碼範例中的使用者預留位置文字

將容器映像推送到 Amazon ECR

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

docker inspect deep-learning-container-uri

回應 "Architecture": "arm64" 表示影像支援 ARM 架構。您可以使用 docker push 命令將它推送到 Amazon ECR。如需詳細資訊,請查看推送 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 簡介和送資訊清單的詳細資訊,請參閱適用於 Amazon ECR 的多架構映像簡介。

建立 SageMaker 模型

通過調用 CreateModelAPI 創建 SageMaker 模型。

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" )