自动缩放概述 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自动缩放概述

以下概述详细介绍了用于 auto Scaling 的先决条件和组件。

先决条件

在使用 auto Scaling 之前,您必须已经创建了 Amazon SageMaker 模型终端节点。同一个端点可以有多个模型版本。每个型号都被称为量产(模型)变体。有关部署模型终端节点的更多信息,请参阅将模型部署到 SageMaker 托管服务

要激活模型的自动缩放,您可以使用 SageMaker 控制台、 AWS Command Line Interface (AWS CLI) 或 AWS SDK通过 Application Auto Scaling API。

  • 如果这是您第一次为模型配置缩放比例,我们建议您这样做使用控制台配置模型自动扩缩

  • 使用 AWS CLI 或 Application Auto Scaling 时API,流程是将模型注册为可扩展目标,定义扩展策略,然后应用该策略。在 SageMaker 控制台的导航窗格的 “推理” 下,选择 “终端节点”。找到模型的端点名称,然后选择它来查找变体名称。必须同时指定端点名称和变体名称才能为模型激活 auto Scaling。

扩展策略概述

要使用 auto Scaling,您需要定义一个扩展策略,该策略可根据实际工作负载添加和删除生产变体的实例数量。

要在工作负载发生变化时自动扩展,您有两种选择:目标跟踪和步进扩展策略。

我们建议使用目标跟踪扩展策略。通过目标跟踪,您可以选择 Amazon CloudWatch 指标和目标值。Auto Scaling 创建和管理扩展策略的 CloudWatch 警报,并根据指标和目标值计算缩放调整。该策略根据需要添加和删除实例数,以使指标保持在或接近指定目标值。例如,使用具有目标值为 70 的预定义 InvocationsPerInstance 指标的扩展策略可以将 InvocationsPerInstance 保持在或接近 70。有关更多信息,请参阅《Application Auto Scaling 用户指南》中的目标跟踪扩展策略

当您需要高级配置时,您可以使用步进扩展,如指定要在什么条件下部署多少个实例。否则,最好使用目标跟踪缩放,因为它将完全自动化。请注意,步进缩放只能通过 AWS CLI 或 Application Auto Scaling 进行管理API。有关步进扩展策略及其工作原理的概述,请参阅《App lication Auto Scaling 用户指南》中的步进扩展策略

要创建目标跟踪扩缩策略,您需要指定以下内容:

  • 指标-要跟踪的 CloudWatch 指标,例如每个实例的平均调用次数。

  • 目标值-指标的目标值,例如每分钟每个实例调用 70 次。

您可以使用预定义的指标或自定义指标,创建目标跟踪扩展策略。预定义指标是在枚举中定义的,因此您可以在代码中按名称指定该指标或在 SageMaker 控制台中使用。或者,您可以使用 AWS CLI 或 Application Auto Scaling API 来应用基于预定义或自定义指标的目标跟踪扩展策略。

请注意,为了防止容量快速波动,扩展活动是在两者之间的冷却时间内执行的。您可以选择为扩缩策略配置冷却时间。

按计划扩展

您还可以创建计划操作以在特定时间执行扩展活动。您可以创建仅扩展一次或按重复计划扩展的计划操作。计划操作运行后,您的扩展策略可以继续决定是否在工作负载发生变化时动态扩展。只能通过 AWS CLI 或 Application Auto Scaling 管理定时扩展API。有关更多信息,请参阅《Application Auto Scaling 用户指南》中的计划的扩展

最小和最大缩放限制

配置 auto Scaling 时,您必须在创建扩展策略之前指定扩展限制。您可以分别设置最小值和最大值的限制。

最小值必须至少为 1,并且等于或小于为最大值指定的值。

最大值必须等于或大于为最小值指定的值。 SageMaker auto scaling 不会对该值强制施加限制。

要确定典型流量所需的缩放限制,请使用模型的预期流量测试您的 auto Scaling 配置。

如果变体的流量变为零,则 SageMaker 会自动缩放到指定的最小实例数。在这种情况下, SageMaker 会发出值为零的指标。

有三个选项可用于指定最小和最大容量:

  1. 使用控制台更新最小实例数最大实例数设置。

  2. 运行register-scalable-target命令时,使用 AWS CLI --min-capacity并包括和--max-capacity选项。

  3. 调用RegisterScalableTargetAPI并指定MinCapacityMaxCapacity参数。

提示

您可以通过增加最小值来手动缩小规模,也可以通过减小最大值来手动缩小。

冷却时间

当您的模型向内扩展(减少容量)或向外扩展(增加容量)时,冷却时间用于防止过度扩展。它通过在期限到期之前减慢随后的扩展活动来实现这一目标。具体而言,它会阻止删除用于缩容请求的实例,并限制为扩展请求创建实例。有关更多信息,请参阅《App lication Auto Scaling 用户指南》中的定义冷却时间

您可以在扩展策略中配置冷却时间。

如果您未指定缩减或扩展冷却时间,则您的扩展策略将使用默认值,即每个冷却时间为 300 秒。

如果您在测试扩展配置时添加或删除实例的速度过快,请考虑增加此值。如果模型的流量出现了很多峰值,或者您为一个变体定义了多个扩展策略,则可能会看到这种行为。

如果无法快速添加实例以处理增加的流量,请考虑减小此值。

权限

Amazon SageMaker、Amazon 和 Application Auto Scaling 的组合使自动扩展成为可能APIs。 CloudWatch有关所需最低权限的信息,请参阅《Auto Scaling Auto Scaling 用户指南》中的 Auto Scaling 基于身份的策略示例

SagemakerFullAccessPolicyIAM策略具有执行 auto Scaling 所需的所有IAM权限。有关 SageMaker IAM权限的更多信息,请参阅如何使用 SageMaker 执行角色

如果您管理自己的权限策略,则必须包括以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeEndpoint", "sagemaker:DescribeEndpointConfig", "sagemaker:UpdateEndpointWeightsAndCapacities" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "application-autoscaling:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint", "Condition": { "StringLike": { "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:DeleteAlarms" ], "Resource": "*" } ] }

服务相关角色

自动缩放使用AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint服务相关角色。此服务相关角色授予 Application Auto Scaling 描述策略警报、监控当前容量水平和扩展目标资源的权限。此角色是自动为您创建的。要成功创建自动角色,您必须拥有iam:CreateServiceLinkedRole操作权限。有关更多信息,请参阅《Application Auto Scaling 用户指南》中的服务相关角色

有关配置 auto Scaling 的更多信息,请参阅以下资源:

注意

SageMaker 最近推出了基于实时推理端点的新推理功能。您可以使用终端节点配置创建 SageMaker 终端节点,该端点配置定义了终端节点的实例类型和初始实例数。然后,创建一个推理组件,这是一个 SageMaker 托管对象,可用于将模型部署到终端节点。有关扩展推理组件的信息,请参阅SageMaker 添加新的推理功能以帮助降低基础模型部署成本和延迟,以及使用博客上的最新功能将模型部署成本平均降低 50%。 SageMaker AWS