自动扩展无服务器端点的预置并发 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

自动扩展无服务器端点的预置并发

Amazon SageMaker 会自动扩展或缩小按需无服务器终端节点。对于使用预置并发的无服务器端点,您可以使用 Application Auto Scaling,根据流量状况增加或减少预置并发,从而优化成本。

以下是在无服务器端点上自动扩缩预置并发的先决条件:

在使用自动扩缩功能之前,您必须已将模型部署到使用预置并发的无服务器端点。部署的模型称为生产变体。有关将模型部署到使用预置并发的无服务器端点的更多信息,请参阅创建端点配置创建端点。要为扩展策略指定指标和目标值,必须配置扩展策略。有关如何定义扩展策略的更多信息,请参阅定义扩展策略。注册模型并定义扩展策略后,将扩展策略应用于已注册的模型。有关如何应用扩展策略的信息,请参阅应用扩缩策略

有关用于自动缩放的其他先决条件和组件的详细信息,请参阅自动缩SageMaker 放文档中的自动缩放的先决条件部分。

注册模型

要使用预配置并发向无服务器端点添加自动扩缩功能,您必须首先使用或 Application Aut Amazon CLI o Scaling 注册您的模型(生产变体)。API

注册模型 (Amazon CLI)

要注册您的模型,请使用带有以下参数的register-scalable-target Amazon CLI 命令:

  • --service-namespace – 将该值设置为 sagemaker

  • --resource-id – 模型(特别是生产变体)的资源标识符。对于该参数,资源类型为 endpoint,唯一标识符为生产变体的名称。例如 endpoint/MyEndpoint/variant/MyVariant

  • --scalable-dimension – 将该值设置为 sagemaker:variant:DesiredProvisionedConcurrency

  • --min-capacity – 模型的预置并发最小数。将 --min-capacity 至少设置为 1。该值必须等于或小于为 --max-capacity 指定的值。

  • --max-capacity – 应通过 Application Auto Scaling 启用的预置并发最大数。将 --max-capacity 至少设置为 1。该值必须大于或等于为 --min-capacity 指定的值。

以下示例演示如何注册名为 MyVariant 的模型,该模型动态扩展以具有 1 到 10 的预置并发值:

aws application-autoscaling register-scalable-target \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --min-capacity 1 \ --max-capacity 10

注册模型(Application Auto ScalingAPI)

要注册您的模型,请使用带有以下参数的 App RegisterScalableTarget lication Auto Scaling API 操作:

  • ServiceNamespace – 将该值设置为 sagemaker

  • ResourceId – 模型(特别是生产变体)的资源标识符。对于该参数,资源类型为 endpoint,唯一标识符为生产变体的名称。例如 endpoint/MyEndpoint/variant/MyVariant

  • ScalableDimension – 将该值设置为 sagemaker:variant:DesiredProvisionedConcurrency

  • MinCapacity – 模型的预置并发最小数。将 MinCapacity 至少设置为 1。该值必须等于或小于为 MaxCapacity 指定的值。

  • MaxCapacity – 应通过 Application Auto Scaling 启用的预置并发最大数。将 MaxCapacity 至少设置为 1。该值必须大于或等于为 MinCapacity 指定的值。

以下示例演示如何注册名为 MyVariant 的模型,该模型动态扩展以具有 1 到 10 的预置并发值:

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndPoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "MinCapacity": 1, "MaxCapacity": 10 }

定义扩展策略

要为扩展策略指定指标和目标值,可以配置目标跟踪扩展策略。将扩展策略定义为文本文件中的一个JSON块。然后,您可以在调用 Amazon CLI 或 Application Auto Scal API ing 时使用该文本文件。要为无服务器端点快速定义目标跟踪扩展策略,请使用 SageMakerVariantProvisionedConcurrencyUtilization 预定义指标。

{ "TargetValue": 0.5, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization" }, "ScaleOutCooldown": 1, "ScaleInCooldown": 1 }

应用扩缩策略

注册模型后,您可以将扩展策略应用于使用预置并发的无服务器端点。要应用已定义的目标跟踪扩展策略,请参阅应用目标跟踪扩展策略。如果无服务器端点的流量具有可预测的规律,那么您可能不需要应用目标跟踪扩展策略,而需要在特定时间计划扩展操作。有关计划扩展操作的更多信息,请参阅计划扩展

应用目标跟踪扩展策略

您可以使用 Amazon CLI 或 Applic Amazon Web Services Management Console ation Auto Scaling API 通过预配置并发将目标跟踪扩展策略应用于您的无服务器终端节点。

应用目标跟踪扩展策略 (Amazon CLI)

要将扩展策略应用于模型,请使用带有以下参数的 put-scaling-policy Amazon CLI命令:

  • --policy-name – 扩展策略的名称。

  • --policy-type – 将该值设置为 TargetTrackingScaling

  • --resource-id – 变体的资源标识符。对于该参数,资源类型为 endpoint,唯一标识符为变体的名称。例如 endpoint/MyEndpoint/variant/MyVariant

  • --service-namespace – 将该值设置为 sagemaker

  • --scalable-dimension – 将该值设置为 sagemaker:variant:DesiredProvisionedConcurrency

  • --target-tracking-scaling-policy-configuration – 用于模型的目标跟踪扩展策略配置。

以下示例演示如何将名为 MyScalingPolicy 的目标跟踪扩展策略应用于名为 MyVariant 的模型。策略配置保存在一个名为 scaling-policy.json 的文件中。

aws application-autoscaling put-scaling-policy \ --policy-name MyScalingPolicy \ --policy-type TargetTrackingScaling \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --target-tracking-scaling-policy-configuration file://[file-localtion]/scaling-policy.json

应用目标跟踪扩展策略(Application Auto Scaling)API

要对模型应用缩放策略,请使用带有以下参数的 App PutScalingPolicy lication Auto Scaling API 操作:

  • PolicyName – 扩展策略的名称。

  • PolicyType – 将该值设置为 TargetTrackingScaling

  • ResourceId – 变体的资源标识符。对于该参数,资源类型为 endpoint,唯一标识符为变体的名称。例如 endpoint/MyEndpoint/variant/MyVariant

  • ServiceNamespace – 将该值设置为 sagemaker

  • ScalableDimension – 将该值设置为 sagemaker:variant:DesiredProvisionedConcurrency

  • TargetTrackingScalingPolicyConfiguration – 用于模型的目标跟踪扩展策略配置。

以下示例演示如何将名为 MyScalingPolicy 的目标跟踪扩展策略应用于名为 MyVariant 的模型。策略配置保存在一个名为 scaling-policy.json 的文件中。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "PolicyName": "MyScalingPolicy", "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndpoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 0.5, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization" } } }

应用目标跟踪扩展策略 (Amazon Web Services Management Console)

要应用目标跟踪扩展策略,请执行以下操作: Amazon Web Services Management Console

  1. 登录 Amazon SageMaker 控制台

  2. 在导航面板中,选择推理

  3. 选择端点以查看所有端点的列表。

  4. 选择要将扩展策略应用到的端点。此时将出现一个包含端点设置的页面,在端点运行时系统设置部分列出了模型(生产变体)。

  5. 选择要将扩展策略应用到的生产变体,然后选择配置自动扩缩。此时将显示配置变体自动扩展对话框。

    控制台中配置变体自动扩展对话框的屏幕截图。
  6. 变体自动扩展部分,在最小预置并发最大预置并发字段中分别输入最小和最大的预置并发值。最小预置并发必须小于或等于最大预置并发。

  7. 在目标指标 SageMakerVariantProvisionedConcurrencyUtilization目标值字段中输入目标值。

  8. (可选)分别在横向缩减冷却时间横向扩展冷却时间字段中输入横向缩减冷却时间值和横向扩展冷却时间值(以秒为单位)。

  9. (可选)如果您不想在流量减少时通过自动扩缩功能删除实例,请选择禁用横向缩减

  10. 选择保存

计划扩展

如果使用预置并发的无服务器端点的流量遵循一种常规模式,您可能希望在特定时间计划扩展操作,以横向缩减或横向扩展预置并发。您可以使用 Amazon CLI 或 Application Auto Scaling 来安排扩展操作。

计划扩展 (Amazon CLI)

要对模型应用缩放策略,请使用带有以下参数的 put-scheduled-action Amazon CLI; 命令:

  • --schedule-action-name – 扩展操作的名称。

  • --schedule – 一个 cron 表达式,用于指定具有重复计划的扩展操作的开始和结束时间。

  • --resource-id – 变体的资源标识符。对于该参数,资源类型为 endpoint,唯一标识符为变体的名称。例如 endpoint/MyEndpoint/variant/MyVariant

  • --service-namespace – 将该值设置为 sagemaker

  • --scalable-dimension – 将该值设置为 sagemaker:variant:DesiredProvisionedConcurrency

  • --scalable-target-action – 扩展操作的目标。

以下示例演示如何将重复计划的名为 MyScalingAction 的扩展操作添加到名为 MyVariant 的模型。如果当前的预配置并发度低于为的指定值,则按照指定的计划(每天下午 12:15UTC)。MinCapacityApplication Auto Scaling 将预置并发横向扩展到由 MinCapacity 指定的值。

aws application-autoscaling put-scheduled-action \ --scheduled-action-name 'MyScalingAction' \ --schedule 'cron(15 12 * * ? *)' \ --service-namespace sagemaker \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --scalable-target-action 'MinCapacity=10'

计划扩展(Application Auto ScalingAPI)

要对模型应用缩放策略,请使用带有以下参数的 App PutScheduledAction lication Auto Scaling API 操作:

  • ScheduleActionName – 扩展操作的名称。

  • Schedule – 一个 cron 表达式,用于指定具有重复计划的扩展操作的开始和结束时间。

  • ResourceId – 变体的资源标识符。对于该参数,资源类型为 endpoint,唯一标识符为变体的名称。例如 endpoint/MyEndpoint/variant/MyVariant

  • ServiceNamespace – 将该值设置为 sagemaker

  • ScalableDimension – 将该值设置为 sagemaker:variant:DesiredProvisionedConcurrency

  • ScalableTargetAction – 扩展操作的目标。

以下示例演示如何将重复计划的名为 MyScalingAction 的扩展操作添加到名为 MyVariant 的模型。如果当前的预配置并发度低于为的指定值,则按照指定的计划(每天下午 12:15UTC)。MinCapacityApplication Auto Scaling 将预置并发横向扩展到由 MinCapacity 指定的值。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.PutScheduledAction X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "ScheduledActionName": "MyScalingAction", "Schedule": "cron(15 12 * * ? *)", "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndpoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "ScalableTargetAction": "MinCapacity=10" } } }