繁体   English   中英

通过 Terraform 在 Sagemaker 中自动缩放

[英]Autoscaling in Sagemaker by Terraform

我们所有的 AWS 基础设施都由 Terraform 管理,包括 Sagemaker 资源。 我们想在我们的 SM 资源中实现自动缩放。 我们找不到 Terraform 解决方案来将我们的基础设施构建为代码。

通常,ASG 应位于aws_sagemaker_endpoint_configuration >> production_variants块中

参考:

  1. AWS 文档: https://aws.amazon.com/blogs/aws/auto-scaling-is-now-available-for-amazon-sagemaker/
  2. TF文档: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sagemaker_endpoint_configuration

预先感谢您的回复

所以,根据我的研究,它应该是:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM