获取自动扩缩策略推荐 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

获取自动扩缩策略推荐

借助 Amazon SageMaker Inference Recommender,您可以根据预期的流量模式获得有关 SageMaker 端点的自动扩缩策略的推荐。如果您已完成一个推理推荐作业,则可以提供该作业的详细信息,以获取可应用于端点的自动扩缩策略的推荐。

Inference Recommender 对每个指标的不同值进行基准测试,以确定端点的理想自动扩缩配置。自动扩缩推荐将返回推理推荐作业中定义的每个指标的推荐自动扩缩策略。您可以使用 PutScalingPolicy API 保存策略并将其应用于您的端点。

要开始使用,请查看以下先决条件。

先决条件

开始之前,您必须已成功完成推理推荐作业。在下一部分中,您可以提供推理推荐 ID 或已在推理推荐作业期间进行基准测试的 SageMaker 端点的名称。

要检索您的推荐作业 ID 或端点名称,您可以在 SageMaker 控制台中查看推理推荐作业的详细信息,也可以使用 DescribeInferenceRecommendationsJob API 返回的 RecommendationIdEndpointName 字段。

创建自动扩缩配置推荐

要创建自动扩缩推荐策略,您可以使用 Amazon SDK for Python (Boto3)。

以下示例显示 GetScalingConfigurationRecommendation API 的字段。在调用此 API 时,使用以下字段:

  • InferenceRecommendationsJobName – 输入您的推理推荐作业的名称。

  • RecommendationId – 输入推荐作业中的推理推荐的 ID。如果您已指定 EndpointName 字段,则此项是可选的。

  • EndpointName – 输入已在推理推荐作业期间进行基准测试的端点的名称。如果您已指定 RecommendationId 字段,则此项是可选的。

  • TargetCpuUtilizationPerCore –(可选)输入一个百分比值,它表示您希望要使用的端点上的实例在自动扩缩前的利用率。如果未指定此字段,则默认值为 50%。

  • ScalingPolicyObjective –(可选)一个对象,可在其中指定预期的流量模式。

    • MinInvocationsPerMinute –(可选)预计每分钟向端点发出的请求的最小数量。

    • MaxInvocationsPerMinute –(可选)预计每分钟向端点发出的请求的最大数量。

{ "InferenceRecommendationsJobName": "string", // Required "RecommendationId": "string", // Optional, provide one of RecommendationId or EndpointName "EndpointName": "string", // Optional, provide one of RecommendationId or EndpointName "TargetCpuUtilizationPerCore": number, // Optional "ScalingPolicyObjective": { // Optional "MinInvocationsPerMinute": number, "MaxInvocationsPerMinute": number } }

提交请求后,您将收到响应,其中包含为每个指标定义的自动扩缩策略。请参阅以下部分,了解有关如何解释响应的信息。

查看您的自动扩缩配置推荐结果

以下示例显示来自 GetScalingConfigurationRecommendation API 的响应:

{ "InferenceRecommendationsJobName": "string", "RecommendationId": "string", // One of RecommendationId or EndpointName is shown "EndpointName": "string", "TargetUtilizationPercentage": Integer, "ScalingPolicyObjective": { "MinInvocationsPerMinute": Integer, "MaxInvocationsPerMinute": Integer }, "Metric": { "ModelLatency": Integer, "InvocationsPerInstance": Integer }, "DynamicScalingConfiguration": { "MinCapacity": number, "MaxCapacity": number, "ScaleInCooldown": number, "ScaleOutCooldown": number, "ScalingPolicies": [ { "TargetTracking": { "MetricSpecification": { "Predefined" { "PredefinedMetricType": "string" }, "Customized": { "MetricName": "string", "Namespace": "string", "Statistic": "string" } }, "TargetValue": Double } } ] } }

从您的初始请求中复制 InferenceRecommendationsJobNameRecommendationIDEndpointNameTargetCpuUtilizationPerCoreScalingPolicyObjective 对象字段。

Metric 对象列出了已在推理推荐作业中进行基准测试的指标,以及当实例利用率与 TargetCpuUtilizationPerCore 值相同时每个指标的值计算。这对于预测端点在使用推荐的自动扩缩策略进行横向缩减和横向扩展时的性能指标非常有用。例如,考虑推理推荐作业中的实例利用率是否为 50%,并且您的 InvocationsPerInstance 值最初是否为 4。如果您在自动扩缩推荐请求中将 TargetCpuUtilizationPerCore 值指定为 100%,则响应中返回的 InvocationsPerInstance 指标值为 2,因为您预计将分配两倍的实例利用率。

DynamicScalingConfiguration 对象返回您在调用 PutScalingPolicy API 时应为 TargetTrackingScalingPolicyConfiguration 指定的值。这包括推荐的最小容量值和最大容量值、推荐的横向缩减和横向扩展冷却时间以及 ScalingPolicies 对象,其中包含应为每个指标指定的推荐的 TargetValue