我正在使用aws Sagemaker端点进行推断。根据流量的大小,端点应通过向端点添加更多实例来扩大和缩小规模。我正在尝试使用实例指标(CPUUtilization,MemoryUtilization或DiskUtilization)作为sagemaker端点自动缩放的指标。这些是此处定义的预定义指标:https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html
问题在于给定端点的实例指标是端点内所有正在运行的实例的总和。例如,在以下端点运行时设置中:
当前正在运行的实例为5,则CPUUtilization的值范围可以从0到500%。根据运行的实例数,最大值将更改,因此应更改自动缩放策略。 问题是:是否可以通过任何方法找出每个实例的指标,即CPUUtilizationPerInstance,而无需显式计算它们或通过自定义指标? 通过为每个实例设置CPUUtilization阈值来进行向上和向下缩放的自动缩放策略似乎是正确的方法。 AWS上还有其他类似的选择吗?
答案 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/