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

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

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

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

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

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

注册模型

要为使用预置并发的无服务器端点添加自动扩缩功能,必须首先使用 Amazon CLI 或 Application Auto 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 Scaling API)

要注册模型,请使用带有以下参数的 RegisterScalableTarget Application 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 Scaling API 时,您可以使用该文本文件。要为无服务器端点快速定义目标跟踪扩展策略,请使用 SageMakerVariantProvisionedConcurrencyUtilization 预定义指标。

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

应用扩缩策略

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

应用目标跟踪扩展策略

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 Application 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)

要对模型应用扩展策略,请使用带有以下参数的 PutScalingPolicy Application 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 的模型。如果当前预置并发低于为 MinCapacity 指定的值,则根据指定的计划(UTC 时间每天中午 12:15)。Application 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 Scaling API)

要对模型应用扩展策略,请使用带有以下参数的 PutScheduledAction Application Auto Scaling API 操作:

  • ScheduleActionName – 扩展操作的名称。

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

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

  • ServiceNamespace – 将该值设置为 sagemaker

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

  • ScalableTargetAction – 扩展操作的目标。

以下示例演示如何将重复计划的名为 MyScalingAction 的扩展操作添加到名为 MyVariant 的模型。如果当前预置并发低于为 MinCapacity 指定的值,则根据指定的计划(UTC 时间每天中午 12:15)。Application 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" } } }

删除扩展策略

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 Application Auto Scaling API 删除扩展策略。有关使用Amazon Web Services Management Console删除扩展策略的更多信息,请参阅 SageMaker 自动扩缩文档中的删除扩展策略

删除扩展策略 (Amazon CLI)

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

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

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

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

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

以下示例从名为 MyVariant 的模型中删除名为 MyScalingPolicy 的扩展策略。

aws application-autoscaling delete-scaling-policy \ --policy-name MyScalingPolicy \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant

删除扩展策略 (Application Auto Scaling API)

要删除模型的扩展策略,请使用带有以下参数的 DeleteScalingPolicy Application Auto Scaling API 操作:

  • PolicyName – 扩展策略的名称。

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

  • ServiceNamespace – 将该值设置为 sagemaker

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

以下示例使用 Application Auto Scaling API 从名为 MyVariant 的模型中删除名为 MyScalingPolicy 的扩展策略。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy 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", }

取消注册模型

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 Application Auto Scaling API 取消注册模型。

取消注册模型 (Amazon CLI)

要从 Application Auto Scaling 取消注册模型,请使用带有以下参数的 deregister-scalable-target Amazon CLI 命令:

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

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

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

以下示例从 Application Auto Scaling 取消注册名为 MyVariant 的模型。

aws application-autoscaling deregister-scalable-target \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant

取消注册模型 (Application Auto Scaling API)

要从 Application Auto Scaling 取消注册模型,请使用带有以下参数的 DeregisterScalableTarget Application Auto Scaling API 操作:

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

  • ServiceNamespace – 将该值设置为 sagemaker

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

以下示例使用 Application Auto Scaling API 从 Application Auto Scaling 取消注册名为 MyVariant 的模型。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.DeregisterScalableTarget 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", }

取消注册模型 (Amazon Web Services Management Console)

要使用Amazon Web Services Management Console取消注册模型(生产变体),请执行以下操作:

  1. 打开 Amazon SageMaker 控制台

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

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

  4. 选择托管生产变体的无服务器端点。此时将出现一个包含端点设置的页面,在端点运行时系统设置部分列出了生产变体。

  5. 选择要取消注册的生产变体,然后选择配置自动扩缩。此时将显示配置变体自动扩展对话框。

  6. 选择取消注册自动扩缩