

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

# 엔드포인트의 인스턴스를 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)을 참조하세요.