完成先决条件
以下主题介绍了创建异步端点之前必须完成的先决条件。这些先决条件包括正确存储模型构件、使用正确的权限配置 AWS IAM 以及选择容器映像。
要完成先决条件
-
为 Amazon SageMaker 创建 IAM 角色。
异步推理需要访问 Amazon S3 存储桶 URI。为了实现这一点,请创建一个可以运行 SageMaker 并有权访问 Amazon S3 和 Amazon SNS 的 IAM 角色。使用此角色,SageMaker 可以在您的账户下运行并访问您的 Amazon S3 存储桶和 Amazon SNS 主题。
您可以使用 IAM 控制台、AWS SDK for Python (Boto3) 或 AWS CLI 创建 IAM 角色。以下示例演示如何创建 IAM 角色并使用 IAM 控制台附加必要的策略。
登录AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在 IAM 控制台的导航窗格中,选择角色,然后选择创建角色。
-
对于选择受信任实体的类型,选择 AWS 服务。
-
选择您希望允许其承担此角色的服务。在这种情况下,请选择 SageMaker。然后选择下一步:权限。
-
这会自动创建 IAM 策略,授予对 Amazon S3、Amazon ECR 和 CloudWatch Logs 等相关服务的访问权限。
-
-
选择下一步:标签。
-
(可选)通过以键值对的形式附加标签来向角色添加元数据。有关将在 IAM 中使用标签的更多信息,请参阅 Tagging IAM resources(标记 IAM 资源)。
-
选择 下一步: 审核。
-
在角色名称中键入角色名称。
-
如果可能,键入角色名称或角色名称后缀。角色名称在您的 AWS 账户内必须是唯一的。名称不区分大小写。例如,您无法同时创建名为
PRODROLE
和prodrole
的角色。由于其他 AWS 资源可能引用该角色,角色创建完毕后无法编辑角色名称。 -
(可选) 对于 Role description,键入新角色的描述。
-
检查角色,然后选择创建角色。
记录 SageMaker 角色 ARN。要使用控制台查找角色 ARN,请执行以下操作:
-
转到 IAM 控制台:https://console.aws.amazon.com/iam/
-
选择角色。
-
在搜索字段中键入角色的名称,搜索您刚刚创建的角色。
-
选择角色。
-
角色 ARN 位于摘要页面的顶部。
-
-
将 Amazon SageMaker、Amazon S3 和 Amazon SNS 权限添加到您的 IAM 角色中。
创建角色后,向您的 IAM 角色授予 SageMaker、Amazon S3 以及可选的 Amazon SNS 权限。
在 IAM 控制台中选择角色。通过在搜索字段中键入角色名称来搜索您创建的角色。
选择您的角色。
接下来选择附加策略。
-
Amazon SageMaker 异步推理需要权限才能执行以下操作:
"sagemaker:CreateModel"
、"sagemaker:CreateEndpointConfig"
、"sagemaker:CreateEndpoint"
和"sagemaker:InvokeEndpointAsync"
。这些操作包含在
AmazonSageMakerFullAccess
策略中。将此策略添加到您的 IAM 角色。在搜索字段中搜索AmazonSageMakerFullAccess
。选择AmazonSageMakerFullAccess
。 选择附加策略。
接下来选择附加策略以添加 Amazon S3 权限。
选择创建策略。
选择
JSON
选项卡。添加以下策略语句:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListBucket" ], "Effect": "Allow", "Resource": "arn:aws:s3:::
bucket_name/*
" } ] }选择下一步:标签。
键入策略名称。
选择创建策略。
重复您为添加 Amazon S3 权限所完成的相同步骤,以添加 Amazon SNS 权限。对于策略声明,请附加以下内容:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": "arn:aws:sns:
<region>:<Account_ID>:<SNS_Topic>
" } ] }
-
将您的推理数据(例如机器学习模型、示例数据)上传到 Amazon S3。
-
选择预构建的 Docker 推理映像或创建自己的推理 Docker 映像。
SageMaker 为其内置算法提供容器,并为一些最常见的机器学习框架(例如 Apache MXNet、TensorFlow、PyTorch 和 Chainer)提供预构建的 Docker 映像。有关可用 SageMaker 映像的完整列表,请参阅可用的深度学习容器映像
。如果您选择使用 SageMaker 提供的容器,则可以通过在容器中设置环境变量,将端点的超时和负载大小增加到比默认值更大的值。要了解如何为每个框架设置不同的环境变量,请参阅“创建异步端点”中的“创建模型”步骤。 如果现有的 SageMaker 容器都不能满足您的需求,并且您没有自己的现有容器,则可能需要创建一个新的 Docker 容器。有关如何创建 Docker 映像的信息,请参阅具有自定义推理代码的容器。
-
创建 Amazon SNS 主题(可选)
创建 Amazon Simple Notification Service (Amazon SNS) 主题,用于发送有关已完成处理的请求的通知。Amazon SNS 是面向消息收发应用程序的通知服务,多个订阅用户可以选择通过多种传输协议(包括 HTTP、Amazon SQS 和电子邮件)请求和接收注重时效消息的“推送”通知。使用
EndpointConfig
API 指定AsyncInferenceConfig
时,您可以在创建EndpointConfig
对象时指定 Amazon SNS 主题。按照以下步骤创建并订阅 Amazon SNS 主题。
-
使用 Amazon SNS 控制台创建主题。有关说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的创建 Amazon SNS 主题。
订阅至主题。有关说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的订阅 Amazon SNS 主题。
-
当您收到要求确认订阅主题的电子邮件时,请确认订阅。
记下主题的 Amazon 资源名称 (ARN)。您创建的 Amazon SNS 主题是您 AWS 账户中的另一项资源,它有唯一的 ARN。ARN 的格式如下所示:
arn:aws:sns:
aws-region:account-id:topic-name
有关 Amazon SNS 主题的更多信息,请参阅 Amazon SNS 开发人员指南。
-