先决条件 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

先决条件

要使用异步端点,请首先确保您已满足这些先决条件。

  1. 为 Amazon SageMaker 创建 IAM 角色。

    异步推理需要访问 Amazon S3 存储桶 URI。为了实现这一点,请创建一个可以运行 SageMaker 并有权访问 Amazon S3 和 Amazon SNS 的 IAM 角色。使用此角色,SageMaker 可以在您的账户下运行并访问您的 Amazon S3 存储桶和 Amazon SNS 主题。

    您可以使用 IAM 控制台、Amazon SDK for Python (Boto3) 或 Amazon CLI 创建 IAM 角色。以下示例演示如何创建 IAM 角色并使用 IAM 控制台附加必要的策略。

    1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

    2. 在 IAM 控制台的导航窗格中,选择 Roles,然后选择 Create role

    3. 对于选择受信任实体的类型,选择 Amazon 服务

    4. 选择您希望允许其承担此角色的服务。在这种情况下,选择 SageMaker。然后选择 Next: Permissions (下一步:权限)

      • 这会自动创建 IAM 策略,授予对 Amazon S3、Amazon ECR 和 CloudWatch Logs 等相关服务的访问权限。

    5. 选择下一步:标签

    6. (可选)通过以键值对的形式附加标签来向角色添加元数据。有关将在 IAM 中使用标签的更多信息,请参阅 Tagging IAM resources(标记 IAM 资源)。

    7. 选择 Next: Review(下一步: 审核)

    8. 角色名称中键入角色名称。

    9. 如果可能,键入角色名称或角色名称后缀。角色名称在您的 Amazon 账户内必须是唯一的。名称不区分大小写。例如,您无法同时创建名为 PRODROLEprodrole 的角色。由于其他 Amazon 资源可能引用该角色,角色创建完毕后无法编辑角色名称。

    10. (可选) 对于 Role description,键入新角色的描述。

    11. 检查角色,然后选择 Create role

      记录 SageMaker 角色 ARN。要使用控制台查找角色 ARN,请执行以下操作:

      1. 转到 IAM 控制台:https://console.aws.amazon.com/iam/

      2. 选择角色

      3. 在搜索字段中键入角色的名称,搜索您刚刚创建的角色。

      4. 选择角色。

      5. 角色 ARN 位于摘要页面的顶部。

  2. 将 Amazon SageMaker、Amazon S3 和 Amazon SNS 权限添加到您的 IAM 角色中。

    创建角色后,向您的 IAM 角色授予 SageMaker、Amazon S3 以及可选的 Amazon SNS 权限。

    在 IAM 控制台中选择角色。通过在搜索字段中键入角色名称来搜索您创建的角色。

    1. 选择您的角色。

    2. 接下来选择附加策略

    3. Amazon SageMaker 异步推理需要权限才能执行以下操作:"sagemaker:CreateModel""sagemaker:CreateEndpointConfig""sagemaker:CreateEndpoint""sagemaker:InvokeEndpointAsync"

      这些操作包含在 AmazonSageMakerFullAccess 策略中。将此策略添加到您的 IAM 角色。在搜索字段中搜索 AmazonSageMakerFullAccess。选择 AmazonSageMakerFullAccess

    4. 选择 Attach policy(附上策略)。

    5. 接下来选择附加策略以添加 Amazon S3 权限。

    6. 选择创建策略

    7. 选择 JSON 选项卡。

    8. 添加以下策略语句:

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListBucket" ], "Effect": "Allow", "Resource": "arn:aws:s3:::bucket_name/*" } ] }
    9. 选择下一步:标签

    10. 键入策略名称

    11. 选择创建策略

    12. 重复您为添加 Amazon S3 权限所完成的相同步骤,以添加 Amazon SNS 权限。对于策略声明,请附加以下内容:

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": "arn:aws:sns:<region>:<Account_ID>:<SNS_Topic>" } ] }
  3. 将您的推理数据(例如机器学习模型、示例数据)上传到 Amazon S3

  4. 选择预构建的 Docker 推理映像或创建自己的推理 Docker 映像。

    SageMaker 为其内置算法提供容器,并为一些最常见的机器学习框架(例如 Apache MXNet、TensorFlow、PyTorch 和 Chainer)提供预构建的 Docker 映像。有关可用 SageMaker 映像的完整列表,请参阅可用的深度学习容器映像。如果您选择使用 SageMaker 提供的容器,则可以通过在容器中设置环境变量,将端点的超时和负载大小增加到比默认值更大的值。要了解如何为每个框架设置不同的环境变量,请参阅“创建异步端点”中的“创建模型”步骤。

    如果现有的 SageMaker 容器都不能满足您的需求,并且您没有自己的现有容器,则可能需要创建一个新的 Docker 容器。有关如何创建 Docker 映像的信息,请参阅使用您自己的推理代码

  5. 创建 Amazon SNS 主题(可选)

    创建 Amazon Simple Notification Service (Amazon SNS) 主题,用于发送有关已完成处理的请求的通知。Amazon SNS 是面向消息收发应用程序的通知服务,多个订阅用户可以选择通过多种传输协议(包括 HTTP、Amazon SQS 和电子邮件)请求和接收注重时效消息的“推送”通知。使用 EndpointConfig API 指定 AsyncInferenceConfig 时,您可以在创建 EndpointConfig 对象时指定 Amazon SNS 主题。

    按照以下步骤创建并订阅 Amazon SNS 主题。

    1. 使用 Amazon SNS 控制台创建主题。有关说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的创建 Amazon SNS 主题

    2. 订阅至主题。有关说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的订阅 Amazon SNS 主题

    3. 当您收到要求确认订阅主题的电子邮件时,请确认订阅。

    4. 记下主题的 Amazon 资源名称 (ARN)。您创建的 Amazon SNS 主题是您 Amazon 账户中的另一项资源,它有唯一的 ARN。ARN 的格式如下所示:

      arn:aws:sns:aws-region:account-id:topic-name

    有关 Amazon SNS 主题的更多信息,请参阅 Amazon SNS 开发人员指南