为多模型端点部署设置自动扩缩策略 - Amazon SageMaker

为多模型端点部署设置自动扩缩策略

SageMaker 多模型端点完全支持自动扩展,它管理模型副本以确保基于流量模式扩展模型。我们建议您基于 多模型端点部署的实例建议 配置多模型端点和实例大小时,并为端点设置基于实例的自动扩缩。用于触发自动扩展事件的调用率基于端点所提供的完整模型集中的聚合预测集。有关设置端点自动扩缩的更多详细信息,请参阅自动扩缩 Amazon SageMaker 模型

您可以在 CPU 和 GPU 支持的多模型端点上使用预定义和自定义指标设置自动扩缩策略。

注意

SageMaker 多模型端点指标以一分钟的粒度提供。

定义扩展策略

要为扩展策略指定指标和目标值,可以配置目标跟踪扩展策略。您可以使用预定义指标或自定义指标。

扩展策略配置由 JSON 块表示。您可以在文本文件中将扩展策略配置保存为 JSON 块。在调用 AWS CLI 或 Application Auto Scaling API 时,您可以使用该文本文件。有关策略配置语法的更多信息,请参阅 Application Auto Scaling API 参考 中的 TargetTrackingScalingPolicyConfiguration

可以使用以下选项定义目标跟踪扩展策略配置。

使用预定义的指标

要快速为变体定义目标跟踪扩展策略,请使用 SageMakerVariantInvocationsPerInstance 预定义指标。SageMakerVariantInvocationsPerInstance 是每分钟调用变体各个实例的平均次数。我们强烈建议您使用此指标。

要在扩展策略中使用预定义的指标,请为策略创建一个目标跟踪配置。在目标扩展配置中,包含 PredefinedMetricSpecification 以表示预定义的指标,并包含 TargetValue 以表示该指标的目标值。

以下示例是变体的典型目标跟踪扩展策略配置。在此配置中,我们使用 SageMakerVariantInvocationsPerInstance 预定义指标来调整变体实例数,以便每个实例的 InvocationsPerInstance 指标都为 70

{"TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "InvocationsPerInstance" } }
注意

建议您在使用多模型端点时使用 InvocationsPerInstance。该指标的 TargetValue 取决于您的应用程序的延迟要求。我们还建议您对端点进行负载测试,以设置合适的扩展参数值。要详细了解负载测试和为端点设置自动扩缩,请参阅博客在 Amazon SageMaker 中配置自动扩缩推理端点

使用自定义指标

如果您需要定义满足您的自定义要求的目标跟踪扩展策略,请定义自定义指标。您可以根据随扩展成比例变化的任何生产变体指标定义一个自定义指标。

并非所有 SageMaker 指标都适用于目标跟踪。指标必须是有效的使用率指标,它必须描述实例的繁忙程度。指标的值必须随变体实例数按反比例增大或减小。也就是说,当实例数增加时,指标的值应减小。

重要

在生产中部署自动扩展之前,您必须使用自定义指标来测试自动扩展。

CPU 支持的多模型端点的自定义指标示例

以下示例是扩展策略的目标跟踪配置。在此配置中,对于名为 my-model 的模型,CPUUtilization 的自定义指标会根据所有实例的、50% 的平均 CPU 利用率调整端点上的实例数量。

{"TargetValue": 50, "CustomizedMetricSpecification": {"MetricName": "CPUUtilization", "Namespace": "/aws/sagemaker/Endpoints", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "ModelName","Value": "my-model"} ], "Statistic": "Average", "Unit": "Percent" } }

GPU 支持的多模型端点的自定义指标示例

以下示例是扩展策略的目标跟踪配置。在此配置中,对于名为 my-model 的模型,GPUUtilization 的自定义指标会根据所有实例的、50% 的平均 GPU 利用率调整端点上的实例数量。

{"TargetValue": 50, "CustomizedMetricSpecification": {"MetricName": "GPUUtilization", "Namespace": "/aws/sagemaker/Endpoints", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "ModelName","Value": "my-model"} ], "Statistic": "Average", "Unit": "Percent" } }

添加冷却时间

要添加用于横向扩展端点的冷却时间,请为 ScaleOutCooldown 指定一个值(以秒为单位)。类似地,要添加用于横向缩减模型的冷却时间,请为 ScaleInCooldown 添加一个值(以秒为单位)。有关 ScaleInCooldownScaleOutCooldown 的更多信息,请参阅 Application Auto Scaling API 参考 中的 TargetTrackingScalingPolicyConfiguration

以下示例是扩展策略的目标跟踪配置示例。在该配置中,SageMakerVariantInvocationsPerInstance 预定义指标用于根据该变体的所有实例中平均值 70 来调整扩展。该配置将横向缩减冷却时间指定为 10 分钟,并将横向扩展冷却时间指定为 5 分钟。

{"TargetValue": 70.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" }, "ScaleInCooldown": 600, "ScaleOutCooldown": 300 }