[英]Autoscaling in Sagemaker by Terraform
我们所有的 AWS 基础设施都由 Terraform 管理,包括 Sagemaker 资源。 我们想在我们的 SM 资源中实现自动缩放。 我们找不到 Terraform 解决方案来将我们的基础设施构建为代码。
通常,ASG 应位于aws_sagemaker_endpoint_configuration
>> production_variants
块中
参考:
预先感谢您的回复
所以,根据我的研究,它应该是:
resource "aws_appautoscaling_target" "sagemaker_target" {
max_capacity = var.max_instance_count
min_capacity = var.min_instance_count
resource_id = "endpoint/${aws_sagemaker_endpoint.endpoint.name}/variant/${var.service_name}-${var.site}-${var.environment}"
role_arn = aws_iam_role.sm_execution.arn
scalable_dimension = "sagemaker:variant:DesiredInstanceCount"
service_namespace = "sagemaker"
}
resource "aws_appautoscaling_policy" "sagemaker_policy" {
name = "${var.service_name}-${var.site}-${var.environment}-target-tracking"
policy_type = "TargetTrackingScaling"
resource_id = aws_appautoscaling_target.sagemaker_target.resource_id
scalable_dimension = aws_appautoscaling_target.sagemaker_target.scalable_dimension
service_namespace = aws_appautoscaling_target.sagemaker_target.service_namespace
target_tracking_scaling_policy_configuration {
predefined_metric_specification {
predefined_metric_type = "SageMakerVariantInvocationsPerInstance"
}
target_value = var.target_invocations
scale_in_cooldown = var.target_scale_in_cooldown
scale_out_cooldown = var.target_scale_out_cooldown
}
}
从其他答案中获取参考,下面是我的代码的样子。 贴在这里供大家参考。
注意:我必须从aws_appautoscaling_target
资源中删除role_arn
键,以便它使用默认服务 IAM 角色,并且还必须使用SageMakerEndpointInvocationScalingPolicy
字符串作为aws_appautoscaling_policy
资源中的策略name
,以获得与我们从 aws 为 sagemaker 端点创建自动缩放策略时获得的相同行为安慰。
PS:如果没有进行上述调整,TargetValue 无法从 aws 控制台查看,并且我无法手动更改 terraform 的目标值创建了 sagemaker 端点的自动缩放策略(就像从控制台更新 TargetValue 时一样,正在获取Validation Exception like Only one Target Tracking Scaling policy for a given metric specification is allowed
。错误等
resource "aws_appautoscaling_target" "register_myendpoint_target" {
max_capacity = 2
min_capacity = 1
resource_id = "endpoint/${aws_sagemaker_endpoint.my_model-endpoint.name}/variant/${variant_name}"
scalable_dimension = "sagemaker:variant:DesiredInstanceCount"
service_namespace = "sagemaker"
}
resource "aws_appautoscaling_policy" "autoscale_policy_my_endpoint" {
name = "SageMakerEndpointInvocationScalingPolicy" # Had to use this name ditto so that on console it doesn't show some custom policy is configured etc etc
policy_type = "TargetTrackingScaling"
resource_id = aws_appautoscaling_target.register_myendpoint_target.resource_id
scalable_dimension = aws_appautoscaling_target.register_myendpoint_target.scalable_dimension
service_namespace = aws_appautoscaling_target.register_myendpoint_target.service_namespace
target_tracking_scaling_policy_configuration {
target_value = 100.0
predefined_metric_specification {
predefined_metric_type = "SageMakerVariantInvocationsPerInstance"
}
scale_in_cooldown = 300
scale_out_cooldown = 300
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.