AWS Sagemaker自动缩放,每个实例具有实例指标

时间:2019-12-16 13:36:13

标签: amazon-web-services amazon-cloudwatch autoscaling amazon-sagemaker

我正在使用aws Sagemaker端点进行推断。根据流量的大小,端点应通过向端点添加更多实例来扩大和缩小规模。我正在尝试使用实例指标(CPUUtilization,MemoryUtilization或DiskUtilization)作为sagemaker端点自动缩放的指标。这些是此处定义的预定义指标:https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html

问题在于给定端点的实例指标是端点内所有正在运行的实例的总和。例如,在以下端点运行时设置中: Example of aws sagemaker endpoint runtime settings

当前正在运行的实例为5,则CPUUtilization的值范围可以从0到500%。根据运行的实例数,最大值将更改,因此应更改自动缩放策略。 问题是:是否可以通过任何方法找出每个实例的指标,即CPUUtilizationPerInstance,而无需显式计算它们或通过自定义指标? 通过为每个实例设置CPUUtilization阈值来进行向上和向下缩放的自动缩放策略似乎是正确的方法。 AWS上还有其他类似的选择吗?

2 个答案:

答案 0 :(得分:1)

blog post 描述了如何定义自定义指标来跟踪每个实例的平均 CPU 利用率。

tl;博士

    TargetTrackingScalingPolicyConfiguration={
        'TargetValue': 90.0,
        'CustomizedMetricSpecification':
        {
            'MetricName': 'CPUUtilization',
            'Namespace': '/aws/sagemaker/Endpoints',
            'Dimensions': [
                {'Name': 'EndpointName', 'Value': endpoint_name },
                {'Name': 'VariantName','Value': 'AllTraffic'}
            ],
            'Statistic': 'Average', # Possible - 'Statistic': 'Average'|'Minimum'|'Maximum'|'SampleCount'|'Sum'
            'Unit': 'Percent'
        },
        'ScaleInCooldown': 600,
        'ScaleOutCooldown': 300
    }

答案 1 :(得分:0)

有一个InvocationsPerInstance度量标准,该度量标准显示使用'Sum'统计信息时每个实例的平均调用次数。

https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html

此博客文章详细介绍了如何对端点进行负载测试以为InvocationsPerInstance查找可用于自动缩放的良好目标值:https://aws.amazon.com/blogs/machine-learning/load-test-and-optimize-an-amazon-sagemaker-endpoint-using-automatic-scaling/