

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon SageMaker AI 모델의 자동 규모 조정
<a name="endpoint-auto-scaling"></a>

Amazon SageMaker AI는 호스팅된 모델에 대한 자동 규모 조정(오토 스케일링)을 지원합니다. *오토 스케일링*은 워크로드의 변화에 따라 모델에 대해 프로비저닝된 인스턴스의 수를 동적으로 조정합니다. 워크로드가 증가하면 오토 스케일링은 더 많은 인스턴스를 온라인 상태로 전환합니다. 워크로드가 감소하면 오토 스케일링을 통해 불필요한 인스턴스가 제거되므로 프로비저닝된 인스턴스 중 사용하지 않는 인스턴스에 대해 요금을 지불하지 않습니다.

**Topics**
+ [오토 스케일링 정책 개요](endpoint-auto-scaling-policy.md)
+ [오토 스케일링 사전 조건](endpoint-auto-scaling-prerequisites.md)
+ [콘솔을 사용하여 모델 오토 스케일링 구성](endpoint-auto-scaling-add-console.md)
+ [모델 등록](endpoint-auto-scaling-add-policy.md)
+ [크기 조정 정책 정의](endpoint-auto-scaling-add-code-define.md)
+ [스케일링 정책 적용](endpoint-auto-scaling-add-code-apply.md)
+ [조정 정책 편집 지침](endpoint-auto-scaling-edit.md)
+ [조정 정책 일시 해제](endpoint-auto-scaling-suspend-scaling-activities.md)
+ [스케일링 정책 삭제](endpoint-auto-scaling-delete.md)
+ [크기 조정 활동을 설명하여 조정 활동의 상태 확인](endpoint-scaling-query-history.md)
+ [엔드포인트의 인스턴스를 0개로 조정](endpoint-auto-scaling-zero-instances.md)
+ [오토 스케일링 구성 로드 테스트](endpoint-scaling-loadtest.md)
+ [CloudFormation 를 사용하여 조정 정책 생성](endpoint-scaling-cloudformation.md)
+ [오토 스케일링을 사용하는 엔드포인트 업데이트](endpoint-scaling-update.md)
+ [오토 스케일링에 대해 구성된 엔드포인트 삭제](endpoint-delete-with-scaling.md)

# 오토 스케일링 정책 개요
<a name="endpoint-auto-scaling-policy"></a>

오토 스케일링을 사용하려면 실제 워크로드에 대한 응답으로 프로덕션 변형의 인스턴스 수를 추가하고 제거하는 크기 조정 정책을 정의합니다.

워크로드 변경에 따라 자동으로 확장하려면 대상 추적 및 단계 조정 정책의 두 가지 옵션이 있습니다.

대부분의 경우 대상 추적 조정 정책을 사용하는 것이 좋습니다. 대상 추적을 사용하면 Amazon CloudWatch 지표와 대상 값을 선택할 수 있습니다. 오토 스케일링은 크기 조정 정책에 대한 CloudWatch 경보를 생성 및 관리하고 지표와 대상 값을 기준으로 조정 조절을 계산합니다. 이 정책은 필요에 따라 엔드포인트 인스턴스를 추가 및 제거하여 측정치를 지정한 목표 값으로, 혹은 목표 값에 가깝게 유지합니다. 예를 들어 대상 값이 70인 사전 정의된 `InvocationsPerInstance` 지표를 사용하는 스케일링 정책은 `InvocationsPerInstance`를 70에 근접하게 유지할 수 있습니다. 자세한 내용을 알아보려면 [Application Auto Scaling 사용 설명서](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)의 *대상 추적 조정 정책*을 참조하세요.

어떤 조건 하에서 얼마나 많은 수의 인스턴스를 배포할 것인지 지정하는 등 고급 구성이 필요한 경우 단계 스케일링을 사용할 수 있습니다. 예를 들어 활성 인스턴스가 없는 상태에서 엔드포인트가 스케일 아웃되도록 하려면 단계 조정을 사용해야 합니다. 단계 조정 정책 및 작동 방식에 대한 개요는 Application Auto Scaling 사용 설명서의 [Step scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html)를 참조하세요.**

대상 추적 조정 정책을 생성하려면 다음을 지정합니다.
+ **지표** — 인스턴스당 평균 호출 수와 같이 추적할 CloudWatch 지표입니다.
+ **대상 값** - 분당 인스턴스당 70회 호출과 같은 지표의 대상 값입니다.

사용자 지정 또는 사전 정의된 지표를 사용하여 대상 추적 크기 조정 정책을 생성할 수 있습니다. 사전 정의된 지표가 열거 형식으로 정의되어 이를 코드의 이름별로 지정하거나 SageMaker AI 콘솔에서 사용할 수 있습니다. 대신 미리 정의된 지표나 사용자 지정 지표를 기반으로 AWS CLI 또는 Application Auto Scaling API를 사용하여 대상 추적 조정 정책을 적용할 수도 있습니다.

조정 작업은 용량의 급격한 변동을 방지하기 위해 작업 중간에 휴지 기간을 두고 수행됨에 유의하세요. 선택적으로 조정 정책에 대한 휴지 기간을 구성할 수 있습니다.

오토 스케일링에 대한 자세한 내용은 다음 섹션을 참조하세요.

## 예약 기반 크기 조정
<a name="scheduled-scaling"></a>

예약된 작업을 생성하여 특정 시간에 크기 조정 작업을 수행하도록 할 수 있습니다. 한 번만 조정하거나 반복 일정에 따라 조정되는 예약된 작업을 생성할 수 있습니다. 예약된 작업이 실행된 후에도 워크로드 변경에 따라 크기 조정 정책이 동적으로 크기를 조정할지 여부에 대한 결정을 계속 내릴 수 있습니다. 예약된 조정은 AWS CLI 또는 Application Auto Scaling API에서만 관리할 수 있습니다. 자세한 내용은 [Application Auto Scaling 사용 설명서](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html)의 *예약된 크기 조정*을 참조하세요.

## 최소 및 최대 크기 조정 제한
<a name="endpoint-auto-scaling-target-capacity"></a>

오토 스케일링을 구성할 때는 조정 정책을 생성하기 전에 조정 한도를 지정해야 합니다. 최소 및 최대 크기에 대해 별도로 제한을 설정합니다.

이 최소 값은 최소 1이어야 하고, 최대 값에 지정된 값과 동일하거나 그보다 작아야 합니다.

최대 값은 지정된 최소 값과 동일하거나 그보다 커야 합니다. SageMaker AI 오토 스케일링은 이 값에 대한 제한을 적용하지 않습니다.

일반 트래픽에서 필요한 크기 조정 한도를 결정하려면 모델에 대한 예상 트래픽 속도를 이용해 오토 스케일링 구성을 테스트합니다.

변형의 트래픽이 0이 되는 경우 SageMaker AI가 자동으로 지정된 최소 인스턴스 수로 스케일 인됩니다. 이 경우 SageMaker AI가 값이 0인 지표를 생성합니다.

최소 및 최대 용량을 지정하는 세 가지 옵션이 있습니다.

1. 콘솔을 사용하여 **최소 인스턴스 수** 및 **최대 인스턴스 수** 설정을 업데이트합니다.

1. [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 명령을 실행할 때 AWS CLI 를 사용하고 `--min-capacity` 및 `--max-capacity` 옵션을 포함합니다.

1. [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html) API를 호출하고 `MinCapacity` 및 `MaxCapacity` 파라미터를 지정합니다.

**작은 정보**  
최소값을 늘려 수동으로 스케일 아웃하거나 최대값을 줄여 수동으로 스케일 인할 수 있습니다.

## 휴지 기간
<a name="endpoint-auto-scaling-target-cooldown"></a>

*휴지 기간*은 모델이 스케일 인(용량 감소) 또는 스케일 아웃(용량 증가) 중일 때 과대 크기 조정을 방지하는 데 사용됩니다. 기간이 만료될 때까지 후속 조정 활동을 늦춰 이를 수행합니다. 구체적으로, 스케일 인 요청에 대한 인스턴스 삭제를 차단하고 스케일 아웃 요청에 대한 인스턴스 생성을 제한합니다. 자세한 내용은 *Application Auto Scaling 사용 설명서*의 [휴지 기간 정의](https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown)를 참조하세요.

크기 조정 정책에서 휴지 기간을 구성할 수 있습니다.

스케일 인 또는 스케일 아웃 휴지 기간을 지정하지 않은 경우 크기 조정 정책은 각 기본값인 300초를 사용합니다.

크기 조정 구성 테스트 시 인스턴스가 너무 빠르게 추가 또는 제거되는 경우 이 값을 늘리는 것을 고려하세요. 모델에 대한 트래픽이 급증하는 경우나 하나의 변형에 대해 여러 개의 크기 조정 정책이 정의된 경우에 이러한 동작이 나타날 수 있습니다.

증가하는 트래픽을 처리하기에 충분할 정도로 빠르게 인스턴스가 추가되지 않는 경우 이 값을 줄이는 것을 고려하세요.

## 관련 리소스
<a name="auto-scaling-related-resources"></a>

오토 스케일링 구성에 대한 자세한 내용은 다음 리소스를 참조하세요.
+ *AWS CLI 명령 참조*의 [application-autoscaling](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling) 섹션
+ [Application Auto Scaling API 참조](https://docs.aws.amazon.com/autoscaling/application/APIReference/)
+ [Application Auto Scaling 사용 설명서](https://docs.aws.amazon.com/autoscaling/application/userguide/)

**참고**  
SageMaker AI는 최근 실시간 추론 엔드포인트에 구축된 새로운 추론 기능을 도입했습니다. 엔드포인트의 인스턴스 유형과 초기 인스턴스 수를 정의하는 엔드포인트 구성으로 SageMaker AI 엔드포인트를 생성합니다. 그런 다음 엔드포인트에 모델을 배포하는 데 사용할 수 있는 SageMaker AI 호스팅 객체인 추론 구성 요소를 생성합니다. 추론 구성 요소 조정에 대한 자세한 내용은 [SageMaker AI가 파운데이션 모델 배포 비용과 지연 시간을 줄이는 데 도움이 되는 새로운 추론 기능을 추가](https://aws.amazon.com/blogs/aws/amazon-sagemaker-adds-new-inference-capabilities-to-help-reduce-foundation-model-deployment-costs-and-latency/)하고 AWS 블로그에서 [ SageMaker AI의 최신 기능을 사용하여 모델 배포 비용을 평균 50% 줄이는](https://aws.amazon.com/blogs/machine-learning/reduce-model-deployment-costs-by-50-on-average-using-sagemakers-latest-features/) 것을 참조하세요.

# 오토 스케일링 사전 조건
<a name="endpoint-auto-scaling-prerequisites"></a>

오토 스케일링을 사용하려면 먼저 Amazon SageMaker AI 모델 엔드포인트를 생성해야 합니다. 동일한 엔드포인트에 대해 여러 모델 버전을 가질 수 있습니다. 각 모델을 [프로덕션(모델) 변형](model-ab-testing.md)이라고 합니다. 모델 엔드포인트 배포에 대한 자세한 정보는 [SageMaker AI 호스팅 서비스에 모델 배포](ex1-model-deployment.md#ex1-deploy-model) 섹션을 참조하세요.

모델에 대한 Auto Scaling을 활성화하려면 Application Auto Scaling API를 통해 SageMaker AI 콘솔, AWS Command Line Interface (AWS CLI) 또는 AWS SDK를 사용할 수 있습니다.
+ 모델에 대한 크기 조정을 처음 구성하는 경우 [콘솔을 사용하여 모델 오토 스케일링 구성](endpoint-auto-scaling-add-console.md)을 사용하는 것이 좋습니다.
+  AWS CLI 또는 Application Auto Scaling API를 사용할 때 흐름은 모델을 확장 가능한 대상으로 등록하고 조정 정책을 정의한 다음 적용하는 것입니다. SageMaker AI 콘솔 탐색창의 **추론**에서 **엔드포인트**를 선택합니다. 모델의 엔드포인트 이름을 찾은 다음 선택하여 변형 이름을 찾습니다. 모델에 대한 오토 스케일링을 활성화하려면 엔드포인트 이름과 변형 이름을 모두 지정해야 합니다.

오토 스케일링은 Amazon SageMaker AI, Amazon CloudWatch 및 Application Auto Scaling API의 조합을 통해 수행됩니다. 최소 필수 권한에 대한 자세한 내용은 *Application Auto Scaling 사용 설명서*의 [Application Auto Scaling ID 기반 정책 예제](https://docs.aws.amazon.com/autoscaling/application/userguide/security_iam_id-based-policy-examples.html)를 참조하세요.

`SagemakerFullAccessPolicy` IAM 정책은 오토 스케일링을 수행하는 데 필요한 모든 IAM 권한을 갖습니다. SageMaker AI IAM 권한에 대한 자세한 내용은 [SageMaker AI 실행 역할을 사용하는 방법](sagemaker-roles.md) 섹션을 참조하세요.

본인만의 권한 정책을 사용하는 경우 다음 권한을 포함시켜야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:DescribeEndpoint",
        "sagemaker:DescribeEndpointConfig",
        "sagemaker:UpdateEndpointWeightsAndCapacities"
      ],
      "Resource": "*"
    },
    {    
        "Effect": "Allow",
        "Action": [
            "application-autoscaling:*"
        ],
        "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint",
      "Condition": {
        "StringLike": { "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com"	}
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:DeleteAlarms"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 서비스 연결 역할
<a name="endpoint-auto-scaling-slr"></a>

오토 스케일링은 `AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint` 서비스 연결 역할을 사용합니다. 이 서비스 연결 역할은 정책에 대한 경보를 설명하고, 플릿의 현재 용량을 모니터링하고, 대상 리소스를 조정할 수 있는 Application Auto Scaling 권한을 부여합니다. 이 역할은 자동으로 생성됩니다. 역할 자동 생성이 성공하려면 `iam:CreateServiceLinkedRole` 작업에 대한 권한을 보유해야 합니다. 자세한 내용은 *Application Auto Scaling 사용 설명서*의 [서비스 연결 역할](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html)을 참조하세요.

# 콘솔을 사용하여 모델 오토 스케일링 구성
<a name="endpoint-auto-scaling-add-console"></a>

**모델(콘솔)의 오토 스케일링을 구성하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 탐색 창에서 **추론**을 선택하고 **엔드포인트**를 선택합니다.

1. 엔드포인트를 선택한 다음 **엔드포인트 런타임 설정**에서 변형을 선택합니다.

1. **오토 스케일링 구성**을 선택합니다.

1. **변형 오토 스케일링 구성** 페이지의 **변형 오토 스케일링**에 대해 다음을 수행합니다.

   1. **최소 인스턴스 용량**에, 스케일링 정책에서 유지하고자 하는 인스턴스의 최소 수를 입력합니다. 최소 1개 이상의 인스턴스가 필요합니다.

   1. **최대 인스턴스 용량**에, 스케일링 정책에서 유지하고자 하는 인스턴스의 최대 수를 입력합니다.

1. **기본 제공 크기 조정 정책**의 경우 다음을 수행합니다.

   1. **대상 지표**의 경우 `SageMakerVariantInvocationsPerInstance`는 지표에 대해 자동으로 선택되며 변경할 수 없습니다.

   1. **대상 값**에서 모델에 대한 분당 인스턴스별 평균 호출 수를 입력합니다. 이 값을 결정하려면 [로드 테스트.](endpoint-scaling-loadtest.md)의 지침을 따릅니다.

   1. (선택 사항) **스케일 인 휴지 기간 축소(초)** 및 **스케일 아웃 휴지 기간 확대(초)**에서 각 휴지 기간을 초 단위로 입력합니다.

   1. (선택 사항) 트래픽이 감소할 때 오토 스케일링에서 인스턴스를 삭제하지 않게 하려면 **스케일 인 비활성화**를 선택하세요.

1. **저장**을 선택합니다.

이 절차는 Application Auto Scaling을 사용하여 확장 가능한 대상으로 모델을 등록합니다. 모델을 등록할 때 Application Auto Scaling은 유효성 검사 확인을 통해 다음 사항을 확인합니다.
+ 모델의 존재 여부
+ 권한이 효율적인지 여부
+ T2와 같은 확장 가능한 성능 인스턴스를 포함하여 변형을 등록하지 않습니다.
**참고**  
SageMaker AI는 T2와 같은 버스트 가능 인스턴스에 대한 오토 스케일링을 지원하지 않습니다. 왜냐하면 증가된 워크로드에 대한 용량 증가를 이미 허용하고 있기 때문입니다. 확장 가능한 성능 인스턴스에 대한 내용은 [Amazon EC2 인스턴스 유형](https://aws.amazon.com/ec2/instance-types/)을 참조하세요.

# 모델 등록
<a name="endpoint-auto-scaling-add-policy"></a>

모델에 크기 조정 정책을 추가하기 전에 먼저 오토 크기 조정을 위해 모델을 등록하고 모델의 크기 조정 한도를 정의해야 합니다.

다음 절차에서는 AWS Command Line Interface () 또는 Application Auto Scaling API를 사용하여 오토 스케일링을 위한 모델(프로덕션 변형AWS CLI)을 등록하는 방법을 다룹니다.

**Topics**
+ [모델 등록(AWS CLI)](#endpoint-auto-scaling-add-cli)
+ [모델 등록(Application Auto Scaling API)](#endpoint-auto-scaling-add-api)

## 모델 등록(AWS CLI)
<a name="endpoint-auto-scaling-add-cli"></a>

프로덕션 변형을 등록하려면 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 명령과 다음 파라미터를 사용합니다.
+ `--service-namespace`—이 값을 `sagemaker`로 설정하세요.
+ `--resource-id` - 모델(특히 프로덕션 변형)의 리소스 식별자입니다. 이 파라미터에서 리소스 유형은 `endpoint`이고 고유 식별자는 프로덕션 변형의 이름입니다. 예를 들어 `endpoint/my-endpoint/variant/my-variant`입니다.
+ `--scalable-dimension`—이 값을 `sagemaker:variant:DesiredInstanceCount`로 설정하세요.
+ `--min-capacity`—최소 인스턴스 수입니다. 이 값은 최소 1로 설정되어야 하며 `max-capacity`에 지정된 값과 같거나 작아야 합니다.
+ `--max-capacity`—인스턴스의 최대 수입니다. 이 값은 최소 1로 설정되어야 하며 `min-capacity`에 지정된 값과 같거나 커야 합니다.

**Example**  
다음 예제는 동적으로 조정되어 1\$18개의 인스턴스를 보유할 수 있으며 `my-endpoint` 엔드포인트에서 실행되며 이름이 `my-variant`인 변수를 등록하는 방법을 보여줍니다.  

```
aws application-autoscaling register-scalable-target \
  --service-namespace sagemaker \
  --resource-id endpoint/my-endpoint/variant/my-variant \
  --scalable-dimension sagemaker:variant:DesiredInstanceCount \
  --min-capacity 1 \
  --max-capacity 8
```

## 모델 등록(Application Auto Scaling API)
<a name="endpoint-auto-scaling-add-api"></a>

Application Auto Scaling로 모델을 등록하려면, 다음 파라미터와 함께 [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html) Application Auto Scaling API 작업을 사용하세요.
+ `ServiceNamespace`—이 값을 `sagemaker`로 설정하세요.
+ `ResourceID` - 프로덕션 변형의 리소스 식별자입니다. 이 파라미터에서 리소스 유형은 `endpoint`이고 고유 식별자는 변형의 이름입니다. 예: `endpoint/my-endpoint/variant/my-variant`.
+ `ScalableDimension`—이 값을 `sagemaker:variant:DesiredInstanceCount`로 설정하세요.
+ `MinCapacity`—최소 인스턴스 수입니다. 이 값은 최소 1로 설정되어야 하며 `MaxCapacity`에 지정된 값과 같거나 작아야 합니다.
+ `MaxCapacity`—인스턴스의 최대 수입니다. 이 값은 최소 1로 설정되어야 하며 `MinCapacity`에 지정된 값과 같거나 커야 합니다.

**Example**  
다음 예제는 동적으로 조정되어 1\$18개의 인스턴스를 보유할 수 있으며 `my-endpoint` 엔드포인트에서 실행되며 이름이 `my-variant`인 변수를 등록하는 방법을 보여줍니다.  

```
POST / HTTP/1.1
Host: application-autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20230506T182145Z
User-Agent: aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "MinCapacity": 1,
    "MaxCapacity": 8
}
```

# 크기 조정 정책 정의
<a name="endpoint-auto-scaling-add-code-define"></a>

모델에 크기 조정 정책을 추가하기 전에 텍스트 파일에 JSON 블록으로 정책 구성을 저장합니다. AWS Command Line Interface (AWS CLI) 또는 Application Auto Scaling API를 호출할 때 해당 텍스트 파일을 사용합니다. 적절한 CloudWatch 지표를 선택하여 조정을 최적화할 수 있습니다. 그러나 프로덕션에서 사용자 지정 지표를 사용하기 전에 사용자 지정 지표로 오토 스케일링을 테스트해야 합니다.

**Topics**
+ [사전 정의된 지표 지정(CloudWatch 지표: InvocationsPerInstance)](#endpoint-auto-scaling-add-code-predefined)
+ [고해상도 사전 정의된 지표 지정(CloudWatch 지표: ConcurrentRequestsPerModel 및 ConcurrentRequestsPerCopy)](#endpoint-auto-scaling-add-code-high-res)
+ [사용자 지정 지표 정의(CloudWatch 지표: CPUUtilization)](#endpoint-auto-scaling-add-code-custom)
+ [사용자 지정 지표 정의(CloudWatch 지표: ExplanationsPerInstance)](#endpoint-auto-scaling-online-explainability)
+ [휴지 기간 지정](#endpoint-auto-scaling-add-code-cooldown)

이 섹션에서는 대상 추적 조정 정책에 대한 정책 구성의 예를 보여줍니다.

## 사전 정의된 지표 지정(CloudWatch 지표: InvocationsPerInstance)
<a name="endpoint-auto-scaling-add-code-predefined"></a>

**Example**  
다음은 인스턴스당 평균 호출을 70으로 유지하는 변형에 대한 대상 추적 정책 구성의 예입니다. 이 구성을 `config.json` 파일에 저장합니다.  

```
{
    "TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    }
}
```
자세한 내용은 *Application Auto Scaling API 참조*의 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)을 참조하세요.

## 고해상도 사전 정의된 지표 지정(CloudWatch 지표: ConcurrentRequestsPerModel 및 ConcurrentRequestsPerCopy)
<a name="endpoint-auto-scaling-add-code-high-res"></a>

다음과 같은 고해상도 CloudWatch 지표를 사용하면 모델이 수신하는 동시 요청의 볼륨에 대한 조정 정책을 설정할 수 있습니다.

**ConcurrentRequestsPerModel**  
모델 컨테이너에서 수신 중인 동시 요청 수입니다.

**ConcurrentRequestsPerCopy**  
추론 구성 요소가 수신 중인 동시 요청 수입니다.

이러한 지표는 컨테이너 내에 대기열에 있는 요청을 포함하여 모델 컨테이너가 처리하는 동시 요청 수를 추적합니다. 추론 응답을 토큰 스트림으로 보내는 모델의 경우, 이러한 지표는 모델이 요청에 대한 마지막 토큰을 전송할 때까지 각 요청을 추적합니다.

고해상도 지표로서 표준 CloudWatch 지표보다 더 자주 데이터를 내보냅니다. 지표와 같은 표준 `InvocationsPerInstance` 지표는 1분에 한 번씩 데이터를 내보냅니다. 그러나 이러한 고해상도 지표는 10초마다 데이터를 내보냅니다. 따라서 모델로의 동시 트래픽이 증가함에 따라 표준 지표보다 훨씬 더 빠르게 확장하여 정책이 반응합니다. 그러나 모델로의 트래픽이 감소하면 표준 지표와 동일한 속도로 정책이 확장됩니다.

다음은 모델당 동시 요청 수가 5개를 초과하는 경우 인스턴스를 추가하는 예제 대상 추적 정책 구성입니다. 이 구성을 `config.json` 파일에 저장합니다.

```
{
    "TargetValue": 5.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution"
    }
}
```

추론 구성 요소를 사용하여 여러 모델을 동일한 엔드포인트에 배포하는 경우 동등한 정책을 생성할 수 있습니다. 이 경우 `PredefinedMetricType`를 `SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution`으로 설정합니다.

자세한 내용은 *Application Auto Scaling API 참조*의 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)을 참조하세요.

## 사용자 지정 지표 정의(CloudWatch 지표: CPUUtilization)
<a name="endpoint-auto-scaling-add-code-custom"></a>

사용자 지정 지표를 사용하여 대상 추적 조정 정책을 생성하려면 지표의 이름, 네임스페이스, 단위, 통계 및 0개 이상의 차원을 지정합니다. 차원은 차원 이름과 차원 값으로 구성됩니다. 용량에 비례하여 변경되는 모든 프로덕션 변형 지표를 사용할 수 있습니다.

**Example**  
다음 예제 구성은 사용자 지정 지표가 있는 대상 추적 크기 조정 정책을 보여줍니다. 정책은 모든 인스턴스에서 평균 CPU 사용률 50%를 기준으로 변형을 크기 조정합니다. 이 구성을 `config.json` 파일에 저장합니다.  

```
{
    "TargetValue": 50.0,
    "CustomizedMetricSpecification":
    {
        "MetricName": "CPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "VariantName","Value": "my-variant"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```
자세한 내용은 *Application Auto Scaling API 참조*의 [CustomizedMetricSpecification](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html)을 참조하세요.

## 사용자 지정 지표 정의(CloudWatch 지표: ExplanationsPerInstance)
<a name="endpoint-auto-scaling-online-explainability"></a>

엔드포인트에 온라인 설명 가능성이 활성화되면, 엔드포인트는 하나의 변형에 대해 인스턴스당 분당 설명되는 수의 평균 레코드를 출력하는 `ExplanationsPerInstance` 지표를 생성합니다. 레코드를 설명하는 데 사용되는 리소스 사용률은 레코드 예측의 리소스 사용률과 많이 다를 수 있습니다. 온라인 설명 가능성이 활성화된 엔드포인트의 대상 추적 스케일링에는 이 지표를 사용하는 것이 좋습니다.

확장 가능한 대상에 대해 여러 대상 추적 정책을 생성할 수 있습니다. (`ExplanationsPerInstance` 정책 외에) [사전 정의된 지표 지정(CloudWatch 지표: InvocationsPerInstance)](#endpoint-auto-scaling-add-code-predefined) 섹션의 `InvocationsPerInstance` 정책을 추가하는 것을 고려해 보세요. `EnableExplanations` 파라미터에 설정된 임계값 때문에 대부분의 간접 호출에서 설명이 반환되지 않는 경우 엔드포인트는 `InvocationsPerInstance` 정책을 선택할 수 있습니다. 설명이 많은 경우 엔드포인트는 `ExplanationsPerInstance` 정책을 사용할 수 있습니다.

**Example**  
다음 예제 구성은 사용자 지정 지표가 있는 대상 추적 크기 조정 정책을 보여줍니다. 이 정책은 각 인스턴스에 `ExplanationsPerInstance` 지표가 20이 되도록 변형 인스턴스의 수를 조정합니다. 이 구성을 `config.json` 파일에 저장합니다.  

```
{
    "TargetValue": 20.0,
    "CustomizedMetricSpecification":
    {
        "MetricName": "ExplanationsPerInstance",
        "Namespace": "AWS/SageMaker",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "VariantName","Value": "my-variant"}
        ],
        "Statistic": "Sum"
    }
}
```

자세한 내용은 *Application Auto Scaling API 참조*의 [CustomizedMetricSpecification](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html)을 참조하세요.

## 휴지 기간 지정
<a name="endpoint-auto-scaling-add-code-cooldown"></a>

`ScaleOutCooldown` 및 `ScaleInCooldown` 파라미터를 지정하여 대상 추적 조정 정책에서 휴지 기간을 선택적으로 정의할 수 있습니다.

**Example**  
다음은 인스턴스당 평균 호출을 70으로 유지하는 변형에 대한 대상 추적 정책 구성의 예입니다. 정책 구성은 10분(600초)의 스케일 인 휴지 기간과 5분(300초)의 스케일 아웃 휴지 기간을 제공합니다. 이 구성을 `config.json` 파일에 저장합니다.  

```
{
    "TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```
자세한 내용은 *Application Auto Scaling API 참조*의 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)을 참조하세요.

# 스케일링 정책 적용
<a name="endpoint-auto-scaling-add-code-apply"></a>

모델을 등록하고 스케일링 정책을 정의한 이후 등록된 모델에 스케일링 정책을 적용합니다. 이 섹션에서는 AWS Command Line Interface (AWS CLI) 또는 Application Auto Scaling API를 사용하여 조정 정책을 적용하는 방법을 보여줍니다.

**Topics**
+ [대상 추적 크기 조정 정책 적용(AWS CLI)](#endpoint-auto-scaling-add-code-apply-cli)
+ [스케일링 정책 적용(Application Auto Scaling API)](#endpoint-auto-scaling-add-code-apply-api)

## 대상 추적 크기 조정 정책 적용(AWS CLI)
<a name="endpoint-auto-scaling-add-code-apply-cli"></a>

모델에 조정 정책을 적용하려면 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) AWS CLI 명령을 다음 파라미터와 함께 사용합니다.
+ `--policy-name` - 스케일링 정책의 이름입니다.
+ `--policy-type` - 이 값을 `TargetTrackingScaling`로 설정하세요.
+ `--resource-id` - 변형의 리소스 식별자입니다. 이 파라미터에서 리소스 유형은 `endpoint`이고 고유 식별자는 변형의 이름입니다. 예를 들어 `endpoint/my-endpoint/variant/my-variant`입니다.
+ `--service-namespace` - 이 값을 `sagemaker`로 설정하세요.
+ `--scalable-dimension` - 이 값을 `sagemaker:variant:DesiredInstanceCount`로 설정하세요.
+ `--target-tracking-scaling-policy-configuration`—모델에 사용할 대상 추적 스케일링 정책 구성.

**Example**  
다음 예제는 `my-endpoint` 엔드포인트에서 실행되며 이름이 `my-variant`인 변수에 `my-scaling-policy` 대상 추적 크기 조정 정책을 적용하는 방법을 보여줍니다. `--target-tracking-scaling-policy-configuration` 옵션에서 이전에 생성한 `config.json` 파일을 지정합니다.  

```
aws application-autoscaling put-scaling-policy \
  --policy-name my-scaling-policy \
  --policy-type TargetTrackingScaling \
  --resource-id endpoint/my-endpoint/variant/my-variant \
  --service-namespace sagemaker \
  --scalable-dimension sagemaker:variant:DesiredInstanceCount \
  --target-tracking-scaling-policy-configuration file://config.json
```

## 스케일링 정책 적용(Application Auto Scaling API)
<a name="endpoint-auto-scaling-add-code-apply-api"></a>

[PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) Application Auto Scaling API를 사용하여 변형에 스케일링 정책을 적용하려면, 다음 파라미터와 함께 Application Auto Scaling API 작업을 사용하세요.
+ `PolicyName` - 스케일링 정책의 이름입니다.
+ `ServiceNamespace` - 이 값을 `sagemaker`로 설정하세요.
+ `ResourceID` - 변형의 리소스 식별자입니다. 이 파라미터에서 리소스 유형은 `endpoint`이고 고유 식별자는 변형의 이름입니다. 예를 들어 `endpoint/my-endpoint/variant/my-variant`입니다.
+ `ScalableDimension` - 이 값을 `sagemaker:variant:DesiredInstanceCount`로 설정하세요.
+ `PolicyType` - 이 값을 `TargetTrackingScaling`로 설정하세요.
+ `TargetTrackingScalingPolicyConfiguration` - 변형에 사용할 대상 추적 스케일링 정책 구성.

**Example**  
다음 예제는 `my-endpoint` 엔드포인트에서 실행되며 이름이 `my-variant`인 변수에 `my-scaling-policy` 대상 추적 크기 조정 정책을 적용하는 방법을 보여줍니다. 정책 구성은 인스턴스당 평균 호출을 70으로 유지합니다.  

```
POST / HTTP/1.1
Host: application-autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.
X-Amz-Date: 20230506T182145Z
User-Agent: aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "my-scaling-policy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 70.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
        }
    }
}
```

# 조정 정책 편집 지침
<a name="endpoint-auto-scaling-edit"></a>

크기 조정 정책을 생성한 후 이름을 제외한 모든 설정을 편집할 수 있습니다.

 를 사용하여 대상 추적 조정 정책을 편집하려면에 사용한 것과 동일한 절차를 AWS Management Console사용합니다[콘솔을 사용하여 모델 오토 스케일링 구성](endpoint-auto-scaling-add-console.md).

 AWS CLI 또는 Application Auto Scaling API를 사용하여 새 조정 정책을 생성하는 것과 동일한 방식으로 조정 정책을 편집할 수 있습니다. 자세한 내용은 [스케일링 정책 적용](endpoint-auto-scaling-add-code-apply.md) 단원을 참조하십시오.

# 조정 정책 일시 해제
<a name="endpoint-auto-scaling-suspend-scaling-activities"></a>

오토 스케일링을 구성한 후 조정 정책(동적 조정)으로 인한 간섭 없이 문제를 조사해야 하는 경우 다음 옵션이 있습니다.
+ [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) CLI 명령 또는 [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html) API 작업을 호출하여 `DynamicScalingInSuspended` 및 `DynamicScalingOutSuspended` 모두에 부울 값을 지정하여 스케일링 활동을 일시 중지했다가 다시 시작합니다.  
**Example**  

  다음 예제에서는 `my-endpoint` 엔드포인트에서 실행되는 `my-variant`이라는 변형에 대한 조정 정책을 일시 중지하는 방법을 보여줍니다.

  ```
  aws application-autoscaling register-scalable-target \
    --service-namespace sagemaker \
    --resource-id endpoint/my-endpoint/variant/my-variant \
    --scalable-dimension sagemaker:variant:DesiredInstanceCount \
    --suspended-state '{"DynamicScalingInSuspended":true,"DynamicScalingOutSuspended":true}'
  ```
+ 정책의 스케일 인 부분을 비활성화하여 특정 대상 추적 스케일링 정책이 변형에서 스케일 인되는 것을 방지합니다. 이 방법을 사용하면 스케일 인 활동을 비활성화하면 조정 정책에서 필요에 따라 인스턴스를 생성할 수 있지만 삭제할 수는 없습니다.

  [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) CLI 명령 또는 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) API 작업을 사용하여 정책을 편집하고 `DisableScaleIn`에 대한 부울 값을 지정하여 스케일 인 활동을 일시적으로 비활성화한 다음 활성화합니다.  
**Example**  

  다음은 스케일 아웃은 수행하지만 스케일 인은 수행하지 않는 크기 조정 정책에 대한 대상 추적 구성의 예제입니다.

  ```
  {
      "TargetValue": 70.0,
      "PredefinedMetricSpecification":
      {
          "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
      },
      "DisableScaleIn": true
  }
  ```

# 스케일링 정책 삭제
<a name="endpoint-auto-scaling-delete"></a>

더 이상 크기 조정 정책이 필요하지 않으면 언제든지 삭제할 수 있습니다.

**Topics**
+ [모든 조정 정책을 삭제하고 모델 등록 취소(콘솔)](#endpoint-auto-scaling-delete-console)
+ [조정 정책 삭제(AWS CLI 또는 Application Auto Scaling API)](#endpoint-auto-scaling-delete-code)

## 모든 조정 정책을 삭제하고 모델 등록 취소(콘솔)
<a name="endpoint-auto-scaling-delete-console"></a>

**모든 조정 정책을 삭제하고 변형을 확장 가능한 대상으로 등록 취소하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 탐색 창에서 **엔드포인트**를 선택합니다.

1. 엔드포인트를 선택한 다음 **엔드포인트 런타임 설정**에서 변형을 선택합니다.

1. **오토 스케일링 구성**을 선택합니다.

1. **오토 스케일링 등록 취소**를 선택합니다.

## 조정 정책 삭제(AWS CLI 또는 Application Auto Scaling API)
<a name="endpoint-auto-scaling-delete-code"></a>

 AWS CLI 또는 Application Auto Scaling API를 사용하여 변형에서 조정 정책을 삭제할 수 있습니다.

### 스케일링 정책 삭제(AWS CLI)
<a name="endpoint-auto-scaling-delete-code-cli"></a>

변형으로부터 스케일링 정책을 삭제하려면 다음 파라미터와 함께 [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) 명령을 사용하세요.
+ `--policy-name` - 스케일링 정책의 이름입니다.
+ `--resource-id` - 변형의 리소스 식별자입니다. 이 파라미터에서 리소스 유형은 `endpoint`이고 고유 식별자는 변형의 이름입니다. 예를 들어 `endpoint/my-endpoint/variant/my-variant`입니다.
+ `--service-namespace` - 이 값을 `sagemaker`로 설정하세요.
+ `--scalable-dimension` - 이 값을 `sagemaker:variant:DesiredInstanceCount`로 설정하세요.

**Example**  
다음 예제에서는 `my-endpoint` 엔드포인트에서 실행되며 이름이 `my-variant`인 변형에 `my-scaling-policy` 대상 추적 크기 조정 정책을 삭제하는 방법을 보여줍니다.  

```
aws application-autoscaling delete-scaling-policy \
  --policy-name my-scaling-policy \
  --resource-id endpoint/my-endpoint/variant/my-variant \
  --service-namespace sagemaker \
  --scalable-dimension sagemaker:variant:DesiredInstanceCount
```

### 스케일링 정책 삭제(Application Auto Scaling API)
<a name="endpoint-auto-scaling-delete-code-api"></a>

변형에서 스케일링 정책을 삭제하려면 다음 파라미터와 함께 [DeleteScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeleteScalingPolicy.html) Application Auto Scaling API 작업을 사용합니다.
+ `PolicyName` - 스케일링 정책의 이름입니다.
+ `ServiceNamespace` - 이 값을 `sagemaker`로 설정하세요.
+ `ResourceID` - 변형의 리소스 식별자입니다. 이 파라미터에서 리소스 유형은 `endpoint`이고 고유 식별자는 변형의 이름입니다. 예를 들어 `endpoint/my-endpoint/variant/my-variant`입니다.
+ `ScalableDimension`—이 값을 `sagemaker:variant:DesiredInstanceCount`로 설정하세요.

**Example**  
다음 예제에서는 `my-endpoint` 엔드포인트에서 실행되며 이름이 `my-variant`인 변형에 `my-scaling-policy` 대상 추적 크기 조정 정책을 삭제하는 방법을 보여줍니다.  

```
POST / HTTP/1.1
Host: application-autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20230506T182145Z
User-Agent: aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
    "PolicyName": "my-scaling-policy",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount"
}
```

# 크기 조정 활동을 설명하여 조정 활동의 상태 확인
<a name="endpoint-scaling-query-history"></a>

크기 조정 활동을 설명하여 오토 스케일링된 엔드포인트의 조정 활동 상태를 확인할 수 있습니다. Application Auto Scaling은 이전 6주 동안의 지정된 네임스페이스의 조정 활동에 대한 설명 정보를 제공합니다. 자세한 내용을 알아보려면 *Application Auto Scaling 사용 설명서*의 [Application Auto Scaling의 크기 조정 활동](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scaling-activities.html)을 참조하세요.

조정 활동의 상태를 확인하려면 [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html) 명령을 사용합니다. 콘솔을 사용하여 크기 조정 활동의 상태를 확인할 수 없습니다.

**Topics**
+ [조정 활동 설명(AWS CLI)](#endpoint-how-to)
+ [인스턴스 할당량에서 차단된 크기 조정 활동 식별(AWS CLI)](#endpoint-identify-blocked-autoscaling)

## 조정 활동 설명(AWS CLI)
<a name="endpoint-how-to"></a>

Application Auto Scaling에 등록된 모든 SageMaker AI 리소스에 대한 규모 조정 활동을 설명하려면 [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html) 명령을 사용하여 `--service-namespace` 옵션에 `sagemaker`를 지정합니다.

```
aws application-autoscaling describe-scaling-activities \
  --service-namespace sagemaker
```

특정 리소스에 대한 조정 활동을 설명하려면 `--resource-id` 옵션을 포함합니다.

```
aws application-autoscaling describe-scaling-activities \
  --service-namespace sagemaker \
  --resource-id endpoint/my-endpoint/variant/my-variant
```

다음 예제는 이 명령을 실행할 때 생성된 출력을 보여줍니다.

```
{
    "ActivityId": "activity-id",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "Description": "string",
    "Cause": "string",
    "StartTime": timestamp,
    "EndTime": timestamp,
    "StatusCode": "string",
    "StatusMessage": "string"
}
```

## 인스턴스 할당량에서 차단된 크기 조정 활동 식별(AWS CLI)
<a name="endpoint-identify-blocked-autoscaling"></a>

스케일 아웃할 경우 계정 수준의 인스턴스 할당량에 도달할 수 있습니다. [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html) 명령을 사용하여 인스턴스 할당량에 도달했는지 확인할 수 있습니다. 할당량을 초과하면 오토 스케일링이 차단됩니다.

인스턴스 할당량에 도달했는지 확인하려면 [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html) 명령을 사용하고 `--resource-id` 옵션의 리소스 ID를 지정합니다.

```
aws application-autoscaling describe-scaling-activities \
    --service-namespace sagemaker \
    --resource-id endpoint/my-endpoint/variant/my-variant
```

반환 구문 내에서 [StatusCode](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_ScalingActivity.html#autoscaling-Type-ScalingActivity-StatusCode) 및 [StatusMessage](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_ScalingActivity.html#autoscaling-Type-ScalingActivity-StatusMessage) 키와 관련 값을 확인합니다. `StatusCode`는 `Failed`를 반환됩니다. `StatusMessage` 안에 계정 수준 서비스 할당량에 도달했다는 메시지가 나타납니다. 다음은 표시될 수 있는 메시지의 예입니다.

```
{
    "ActivityId": "activity-id",
    "ServiceNamespace": "sagemaker",
    "ResourceId": "endpoint/my-endpoint/variant/my-variant",
    "ScalableDimension": "sagemaker:variant:DesiredInstanceCount",
    "Description": "string",
    "Cause": "minimum capacity was set to 110",
    "StartTime": timestamp,
    "EndTime": timestamp,
    "StatusCode": "Failed",
    "StatusMessage": "Failed to set desired instance count to 110. Reason: The 
    account-level service limit 'ml.xx.xxxxxx for endpoint usage' is 1000 
    Instances, with current utilization of 997 Instances and a request delta 
    of 20 Instances. Please contact AWS support to request an increase for this 
    limit. (Service: AmazonSageMaker; Status Code: 400; 
    Error Code: ResourceLimitExceeded; Request ID: request-id)."
}
```

# 엔드포인트의 인스턴스를 0개로 조정
<a name="endpoint-auto-scaling-zero-instances"></a>

엔드포인트에 대한 오토 스케일링을 설정할 때 스케일 인 프로세스를 허용하여 서비스 중인 인스턴스 수를 0개로 줄일 수 있습니다. 이렇게 하면 엔드포인트가 추론 요청을 처리하지 않아 활성 인스턴스가 필요하지 않은 기간 동안 비용을 절감할 수 있습니다.

그러나 인스턴스를 0개로 스케일 인한 후에는 엔드포인트가 최소 하나의 인스턴스를 프로비저닝할 때까지 들어오는 추론 요청에 응답할 수 없습니다. 프로비저닝 프로세스를 자동화하려면 Application Auto Scaling을 사용하여 단계 조정 정책을 생성합니다. 그런 다음 Amazon CloudWatch 경보에 정책을 할당합니다.

단계 조정 정책과 경보를 설정하면 엔드포인트는 응답할 수 없는 추론 요청을 수신한 직후 인스턴스를 자동으로 프로비저닝합니다. 프로비저닝 프로세스는 몇 분 정도 걸립니다. 이 시간 동안 엔드포인트를 간접적으로 호출하려고 하면 오류가 발생합니다.

다음 절차에서는 인스턴스를 0개로 스케일 인하거나 0개에서 스케일 아웃하도록 엔드포인트에 대한 오토 스케일링을 설정하는 방법을 설명합니다. 이 절차에서는 AWS CLI와 함께 명령을 사용합니다.

**시작하기 전 준비 사항**

엔드포인트가 인스턴스를 0개로 스케일 인하거나 0개에서 스케일 아웃하려면 먼저 다음 요구 사항을 충족해야 합니다.
+ 엔드포인트가 서비스 중입니다.
+ 엔드포인트가 하나 이상의 추론 구성 요소를 호스팅합니다. 엔드포인트가 추론 구성 요소를 호스팅하는 경우에만 0개의 인스턴스로 또는 0개의 인스턴스에서 조정할 수 있습니다.

  SageMaker AI 엔드포인트에서 추론 구성 요소를 호스팅하는 방법에 대한 자세한 내용은 [실시간 추론을 위한 모델 배포](realtime-endpoints-deploy-models.md) 섹션을 참조하세요.
+ 엔드포인트 구성에서 프로덕션 변형 `ManagedInstanceScaling` 객체의 경우 `MinInstanceCount` 파라미터를 `0`으로 설정했습니다.

  이 파라미터에 대한 참조 정보는 [ProductionVariantManagedInstanceScaling](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantManagedInstanceScaling.html)을 참조하세요.

**엔드포인트가 인스턴스를 0개로 스케일 인하려면(AWS CLI)**

엔드포인트가 호스팅하는 각 추론 구성 요소에 대해 다음을 수행합니다.

1. 추론 구성 요소를 확장 가능 대상으로 등록합니다. 등록할 때 다음 명령과 같이 최소 용량을 `0`으로 설정합니다.

   ```
   aws application-autoscaling register-scalable-target \
     --service-namespace sagemaker \
     --resource-id inference-component/inference-component-name \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --min-capacity 0 \
     --max-capacity n
   ```

   이 예시에서는 *inference-component-name*을 추론 구성 요소의 이름으로 바꿉니다. *n*을 스케일 아웃 시 프로비저닝할 최대 추론 구성 요소 사본 수로 바꿉니다.

   이 명령과 이 명령의 각 파라미터에 대한 자세한 내용은 *AWS CLI 명령 참조*에서 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)을 참조하세요.

1. 다음 명령과 같이 추론 구성 요소에 대상 추적 정책을 적용합니다.

   ```
   aws application-autoscaling put-scaling-policy \
     --policy-name my-scaling-policy \
     --policy-type TargetTrackingScaling \
     --resource-id inference-component/inference-component-name \
     --service-namespace sagemaker \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --target-tracking-scaling-policy-configuration file://config.json
   ```

   이 예시에서는 *inference-component-name*을 추론 구성 요소의 이름으로 바꿉니다.

   이 예시에서 `config.json` 파일에는 다음과 같은 대상 추적 정책 구성이 포함되어 있습니다.

   ```
   {
     "PredefinedMetricSpecification": {
         "PredefinedMetricType": "SageMakerInferenceComponentInvocationsPerCopy"
     },
     "TargetValue": 1,
     "ScaleInCooldown": 300,
     "ScaleOutCooldown": 300
   }
   ```

   추적 정책 구성의 더 많은 예는 [크기 조정 정책 정의](endpoint-auto-scaling-add-code-define.md) 섹션을 참조하세요.

   이 명령과 이 명령의 각 파라미터에 대한 자세한 내용은 *AWS CLI 명령 참조*에서 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)를 참조하세요.

**엔드포인트가 인스턴스를 0개에서 스케일 아웃하도록 하려면(AWS CLI)**

엔드포인트가 호스팅하는 각 추론 구성 요소에 대해 다음을 수행합니다.

1. 다음 명령과 같이 추론 구성 요소에 단계 조정 정책을 적용합니다.

   ```
   aws application-autoscaling put-scaling-policy \
     --policy-name my-scaling-policy \
     --policy-type StepScaling \
     --resource-id inference-component/inference-component-name \
     --service-namespace sagemaker \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --step-scaling-policy-configuration file://config.json
   ```

   이 예시에서는 *my-scaling-policy*를 정책의 고유한 이름으로 바꿉니다. *inference-component-name*을 추론 구성 요소의 이름으로 바꿉니다.

   이 예시에서 `config.json` 파일에는 다음과 같은 단계 조정 정책 구성이 포함되어 있습니다.

   ```
   {
       "AdjustmentType": "ChangeInCapacity",
       "MetricAggregationType": "Maximum",
       "Cooldown": 60,
       "StepAdjustments":
         [
            {
              "MetricIntervalLowerBound": 0,
              "ScalingAdjustment": 1
            }
         ]
   }
   ```

   이 단계 조정 정책이 트리거되면 SageMaker AI는 추론 구성 요소 사본을 지원하는 데 필요한 인스턴스를 프로비저닝합니다.

   단계 조정 정책을 생성한 후 Amazon 리소스 이름(ARN)을 기록해 둡니다. 다음 단계에서 CloudWatch 경보에 대한 ARN이 필요합니다.

   단계 조정 정책에 대한 자세한 내용은 *Application Auto Scaling 사용 설명서*의 [단계 조정 정책](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html)을 참조하세요.

1. 다음 예시와 같이 CloudWatch 경보를 생성하고 여기에 단계 조정 정책을 할당합니다.

   ```
   aws cloudwatch put-metric-alarm \
   --alarm-actions step-scaling-policy-arn \
   --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \
   --alarm-name ic-step-scaling-alarm \
   --comparison-operator GreaterThanThreshold  \
   --datapoints-to-alarm 1 \
   --dimensions "Name=InferenceComponentName,Value=inference-component-name" \
   --evaluation-periods 1 \
   --metric-name NoCapacityInvocationFailures \
   --namespace AWS/SageMaker \
   --period 60 \
   --statistic Sum \
   --threshold 1
   ```

   이 예시에서는 *step-scaling-policy-arn*을 단계 조정 정책의 ARN으로 바꿉니다. *ic-step-scaling-alarm*을 원하는 이름으로 바꿉니다. *inference-component-name*을 추론 구성 요소의 이름으로 바꿉니다.

   이 예시는 `--metric-name` 파라미터를 `NoCapacityInvocationFailures`로 설정합니다. SageMaker AI는 엔드포인트가 추론 요청을 수신했지만 엔드포인트에 요청을 처리할 활성 인스턴스가 없는 경우 이 지표를 내보냅니다. 해당 이벤트가 발생하면 경보는 이전 단계에서 단계 조정 정책을 시작합니다.

   이 명령과 이 명령의 각 파라미터에 대한 자세한 내용은 *AWS CLI 명령 참조*에서 [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)을 참조하세요.

# 오토 스케일링 구성 로드 테스트
<a name="endpoint-scaling-loadtest"></a>

로드 테스트를 수행하여 원하는 방식으로 작동하는 크기 조정 구성을 선택합니다.

다음 로드 테스트 지침에서는 사전 정의된 대상 지표인 `SageMakerVariantInvocationsPerInstance`를 사용하는 크기 조정 정책을 사용한다고 가정합니다.

**Topics**
+ [성능 특성 판단](#endpoint-scaling-loadtest-variant)
+ [목표 하중 계산](#endpoint-scaling-loadtest-calc)

## 성능 특성 판단
<a name="endpoint-scaling-loadtest-variant"></a>

로드 테스트를 수행하여 모델의 프로덕션 변형이 처리할 수 있는 `InvocationsPerInstance` 피크와 동시성 증가에 따른 요청 지연 시간을 확인합니다.

이 값은 선택한 인스턴스 유형, 모델의 클라이언트가 일반적으로 전송하는 페이로드, 모델 보유한 모든 외부 종속성의 성능에 따라 다릅니다.

**모델의 프로덕션 변형이 처리할 수 있는 초당 요청(RPS) 피크와 요청 지연 시간을 확인하려면**

1. 단일 인스턴스를 사용하여 모델에서 엔드포인트를 설정합니다. 엔드포인트 설정 방법에 대한 자세한 정보는 [SageMaker AI 호스팅 서비스에 모델 배포](ex1-model-deployment.md#ex1-deploy-model) 섹션을 참조하세요.

1. 로드 테스트 도구를 사용하여 증가하는 병렬 요청을 생성하고, 로드 테스트 도구의 출력에서 RPS 및 모델 지연 시간을 모니터링합니다.
**참고**  
RPS 대신 분당 요청을 모니터링할 수도 있습니다. 이러한 경우 아래 표시된 `SageMakerVariantInvocationsPerInstance` 계산 등식에 60을 곱하지 마세요.

   모델 지연 시간이 증가하거나 트랜잭션 성공 비율이 감소하는 경우, 모델이 처리할 수 있는 피크 RPS가 이 값이 됩니다.

## 목표 하중 계산
<a name="endpoint-scaling-loadtest-calc"></a>

변형의 성능 특성을 확인한 이후 인스턴스에 전송되도록 허용해야 하는 최대 RPS를 결정할 수 있습니다. 조정에 사용되는 임계 값은 이 최대 값보다 작아야 합니다. 로드 테스트와 함께 다음 수식을 사용하여 크기 조정 구성의 `SageMakerVariantInvocationsPerInstance` 대상 지표에 대한 올바른 값을 결정합니다.

```
SageMakerVariantInvocationsPerInstance = (MAX_RPS * SAFETY_FACTOR) * 60
```

`MAX_RPS`는 이전에 결정했던 최대 RPS이고, `SAFETY_FACTOR`는 클라이언트가 최대 RPS를 초과하지 않도록 하는 안전 요인입니다. 60을 곱하여 RPS를 분당 간접 호출로 변환하고 SageMaker AI에서 오토 스케일링을 구현하는 데 사용하는 분당 CloudWatch 지표와 일치시킵니다(초당 요청 대신 분당 요청으로 측정한 경우에는 이 작업을 수행할 필요가 없음).

**참고**  
SageMaker AI에서는 `SAFETY_FACTOR`를 0.5로 하여 테스트를 시작하는 것을 권장합니다. 엔드포인트에서 트래픽이 증가 및 감소해도 모델이 예상한 대로 작동하는지 확인하도록 크기 조정 구성을 테스트하세요.

# CloudFormation 를 사용하여 조정 정책 생성
<a name="endpoint-scaling-cloudformation"></a>

다음 예제는 CloudFormation을 사용하여 엔드포인트에 모델 오토 스케일을 구성을 생성하는 방법을 보여줍니다.

```
  Endpoint:
    Type: "AWS::SageMaker::Endpoint"
    Properties:
      EndpointName: yourEndpointName
      EndpointConfigName: yourEndpointConfigName

  ScalingTarget:
    Type: "AWS::ApplicationAutoScaling::ScalableTarget"
    Properties:
      MaxCapacity: 10
      MinCapacity: 2
      ResourceId: endpoint/my-endpoint/variant/my-variant
      RoleARN: arn
      ScalableDimension: sagemaker:variant:DesiredInstanceCount
      ServiceNamespace: sagemaker

  ScalingPolicy:
    Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
    Properties:
      PolicyName: my-scaling-policy
      PolicyType: TargetTrackingScaling
      ScalingTargetId:
        Ref: ScalingTarget
      TargetTrackingScalingPolicyConfiguration:
        TargetValue: 70.0
        ScaleInCooldown: 600
        ScaleOutCooldown: 30
        PredefinedMetricSpecification:
          PredefinedMetricType: SageMakerVariantInvocationsPerInstance
```

자세한 내용을 알아보려면 *Application Auto Scaling 사용 설명서*에서 [AWS CloudFormation으로 Application Auto Scaling 리소스 생성하기](https://docs.aws.amazon.com/autoscaling/application/userguide/creating-resources-with-cloudformation.html)를 참조하세요.

# 오토 스케일링을 사용하는 엔드포인트 업데이트
<a name="endpoint-scaling-update"></a>

엔드포인트를 업데이트할 때 Application Auto Scaling은 엔드포인트의 어떤 모델이 오토 스케일링 대상인지 확인합니다. 업데이트로 인해 오토 스케일링 대상인 모델의 인스턴스 유형을 변경하면 업데이트는 실패합니다.

에는 모델을 업데이트하기 전에 오토 스케일링에서 모델을 등록 취소해야 한다는 경고가 AWS Management Console표시됩니다. [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API를 호출하여 엔드포인트를 업데이트하려는 경우 호출은 실패합니다. 엔드포인트를 업데이트하기 전에 [DeregisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html) Application Auto Scaling API 작업을 호출하여 이 엔드포인트에 대해 구성된 모든 크기 조정 정책을 삭제한 다음 크기 조정 가능 대상으로서 변형을 등록 취소합니다. 엔드포인트를 업데이트한 이후 업데이트된 변형을 크기 조정 가능한 대상으로 등록하고 크기 조정 정책을 첨부할 수 있습니다.

한 가지 예외가 있습니다. 오토 스케일링에 대해 구성된 변형의 모델을 변경하는 경우, Amazon SageMaker AI 오토 스케일링은 이 업데이트를 허용합니다. 이는 모델 변경이 일반적으로 크기 조정 작업을 변경하는 데 충분한 성능에 영향을 미치지 않기 때문입니다. 오토 스케일링에 대해 구성된 변형의 모델을 업데이트하는 경우 모델 변경이 성능과 크기 조정 작업에 큰 영향을 미치지 않도록 해야 합니다.

오토 스케일링이 적용된 SageMaker AI 엔드포인트를 업데이트할 경우 다음 단계를 완료하세요.

**오토 스케일링이 적용된 엔드포인트를 업데이트하려면**

1. [DeregisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html)을 호출하여 엔드포인트를 확장 가능 대상에서 등록 취소합니다.

1. 업데이트 작업이 진행되는 동안(또는 이전 단계에서 오토 스케일링을 해제한 경우)에는 오트 스케일링이 차단되므로 업데이트 중에 엔드포인트에 대한 인스턴스 수를 늘리기 위한 추가 예방 조치를 취할 수 있습니다. 이렇게 하려면 [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)를 호출하여 엔드포인트에서 호스팅되는 프로덕션 변형에 대한 인스턴스 수를 업데이트하세요.

1. 응답의 `EndpointStatus` 필드 값이 `InService`일 때까지 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)를 반복하여 호출합니다.

1. [DescribeEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)를 호출하여 현재 엔드포인트 구성의 값을 얻습니다.

1. [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)를 호출하여 새로운 엔드포인트 구성을 생성합니다. 기존 인스턴스 수 또는 가중치를 유지하려는 프로덕션 변형의 경우 이전 단계의 [DescribeEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html) 호출에 대한 응답과 동일한 변형 이름을 사용합니다. 다른 모든 값에는 이전 단계에서 [DescribeEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)를 호출할 때 응답으로 받은 값을 사용합니다.

1. [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html)를 호출하여 엔드포인트를 업데이트합니다. 이전 단계에서 생성한 엔드포인트 구성을 `EndpointConfig` 필드로 지정합니다. 인스턴스 수 또는 가중치 같은 변형 속성을 유지하려면 `RetainAllVariantProperties` 파라미터 값을 `True`로 설정합니다. 이는 같은 이름의 프로덕션 변형이 새로운 `EndpointConfig`가 있는 `InitialInstanceCount` 필드의 값에 관계없이 `DescribeEndpoint` 호출에 대한 응답에서 가장 최근의 `DesiredInstanceCount`로 업데이트되도록 지정합니다.

1. (선택 사항) [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html) 및 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)을 호출하여 오토 스케일링 다시 활성화.

**참고**  
1단계와 7단계는 다음과 같은 변경 사항으로 엔드포인트를 업데이트하는 경우에만 필요합니다.  
오토 스케일링이 구성된 프로덕션 변형에 대한 인스턴스 유형 변경
오토 스케일링이 구성된 프로덕션 변형 제거

# 오토 스케일링에 대해 구성된 엔드포인트 삭제
<a name="endpoint-delete-with-scaling"></a>

엔드포인트를 삭제하는 경우 Application Auto Scaling은 엔드포인트의 어떤 모델이 오토 스케일링 대상인지 확인하세요. 오토 스케일링 대상이 있고 사용자에게 모델을 등록 취소할 권한이 있는 경우, Application Auto Scaling은 알림 없이 스케일링 가능 대상으로서 이러한 모델의 등록을 취소합니다. [DeregisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html) 작업에 대한 권한을 제공하지 않는 사용자 지정 권한 정책을 사용하는 경우 엔드포인트를 삭제하기 전에 이 작업에 대한 액세스를 요청해야 합니다.

**참고**  
또 다른 사용자가 엔드포인트에서 변형에 대한 오토 스케일링을 구성한 경우, IAM 사용자에게 엔드포인트를 삭제할 수 있는 권한을 갖지 못할 수 있습니다.