本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将推理工作负载从 x86 迁移到 Graviton AWS
AWS Graviton
您可以使用ARM兼容的容器镜像或多架构容器镜像,将现有的推理工作负载从基于 x86 的实例迁移到基于 Graviton 的实例。本指南假设您要么使用AWS
深度学习容器镜像
概括来说,将推理工作负载从基于 x86 的实例迁移到基于 Graviton 的实例需要以下四个步骤:
将容器映像推送到亚马逊弹性容器注册表 (AmazonECR),这是一个 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 映像。
从本质上讲,多架构容器映像是一组支持不同架构或操作系统的容器映像,您可以用通用的清单名称来引用这些映像。如果您使用的是多架构容器镜像,那么除了将镜像推送到亚马逊之外ECR,您还必须将清单列表推送到亚马逊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
有关创建清单列表并将其推送到亚马逊的更多信息ECR,请查看为亚马逊ECR介绍多架构容器镜像和推送多架构镜像
创建 SageMaker 模型
通过调用来创建 SageMaker 模型CreateModel
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
" )