

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

# 할당량 관리
<a name="quota-management"></a>

AWS Batch 는 작업에 필요한 리소스와 연결된 서비스 환경(SE)에서 사용 가능한 용량을 기반으로 작업을 예약하여 컴퓨팅 리소스의 활용도를 높입니다. 또한 관리자는 할당량 관리를 통해 팀 또는 프로젝트가 더 세분화된 리소스 할당을 통해 사용할 수 있는 리소스 수를 제어할 수 있습니다.

할당량 관리를 통해 관리자는 컴퓨팅 **할당량(용량 제한) 및 유휴 컴퓨팅을 위한 리소스 공유 전략을 포함하는 리소스**와 같은 관련 할당량 공유를 정의하여 팀과 프로젝트 간에 공유 컴퓨팅 리소스를 효율적으로 할당할 수 있습니다. AWS Batch **** 각 할당량 공유는 연결된 작업 대기열 내에 중첩된 가상 대기열로 작동합니다. 작업 대기열에 대한 작업을 예약할 때 AWS Batch 는 연결된 모든 할당량 공유를 반복합니다.

관리자는 할당량 공유 간에 리소스 공유를 자신 있게 활성화할 수 있습니다. **선점**은 모든 할당량 공유가 필요할 때 다른 사람에게 임대한 리소스를 회수할 수 있도록 허용하기 때문입니다. 할당량 공유 내에서 우선 순위가 높은 작업에 대해 실행 중인 작업을 선점할지 아니면 실행 중인 작업을 완료할지 선택할 수 있습니다. 작업 우선 순위는 제출 시 설정하고 나중에 업데이트할 수 있습니다. 선점 결정이 내려지면 업데이트된 우선 순위가 고려됩니다. 용량 사용률은 대기열, 할당량 공유 및 작업 수준 세부 수준에서 모니터링할 수 있습니다.

할당량 관리는 `SAGEMAKER_TRAINING` 서비스 환경에 연결된 작업 대기열에서만 지원됩니다.

**Topics**
+ [할당량 공유](quota-shares.md)
+ [선점](preemption.md)
+ [할당량 관리 리소스 생성](create-quota-management-resources.md)
+ [할당량 공유 생성](create-quota-shares.md)
+ [할당량 공유에 작업 제출](submit-job-quota-share.md)

# 할당량 공유
<a name="quota-shares"></a>

**할당량 공유**는 작업 대기열 아래에 중첩되는 가상 대기열입니다. 최대 20개의를 모든 작업 대기열에 연결할 수 있습니다. 할당량 공유를 사용하면 **용량 제한을** 사용하여 팀 또는 프로젝트에 컴퓨팅 할당량을 할당할 수 있습니다. 할당량 공유는 하나 이상의 용량 제한을 제공해야 하며 최대 5개의 용량 제한을 지원합니다. 각 용량 제한은 지원되는 SageMaker 훈련 작업 인스턴스 유형에 대한 인스턴스 제한으로 표시되어야 합니다.

## 할당량 공유 리소스 공유 전략
<a name="quota-share-resource-sharing"></a>

할당량 공유에는 명시적 리소스 공유 구성도 있습니다.
+ 할당량 공유의 유휴 컴퓨팅을 해당 작업에 대해서만 예약해야 하는 경우를 선택합니다`RESERVE`.
+ 할당량 공유의 유휴 컴퓨팅을 다른 할당량 공유에 임대할 수 있는 경우를 선택합니다`LEND`.
+ 할당량 공유의 유휴 컴퓨팅을 다른 할당량 공유에 임대할 수 있고 할당량 공유의 작업이 유휴 컴퓨팅을 임대하도록 허용해야 하는 경우 구성된 임대 한도`LEND_AND_BORROW`로를 선택합니다.

## 선점으로 용량 복원
<a name="capacity-limit-restoration"></a>

AWS Batch 는 **교차 공유 선점 작업을** 수행하여 작업이 도착할 때 빌린 용량을 할당량 공유로 복원합니다. 선점할 작업을 선택할 때는 작업이 빌리는 인스턴스의 수와 유형, 작업의 상대적 우선순위 및 작업 기간을 AWS Batch 고려하고 사용자 지정 휴리스틱을 적용합니다.

할당량 공유의 용량 제한을 낮추는 관리자는 해당 할당량 공유에서 이미 소비`RESERVE`한 용량이 감소된 용량 제한을 초과하는 경우 리소스 공유 전략으로 `LEND` 또는를 선택했더라도 해당 할당량 내 , `SCHEDULED` `STARTING`또는 `RUNNING` 작업을 선점할 수 있습니다.

# 선점
<a name="preemption"></a>

할당량 관리는 **선점을** 통합하는 유일한 AWS Batch 예약 알고리즘으로,는 `SCHEDULED`, `STARTING`또는 `RUNNING` 작업을 AWS Batch 중지하여 `RUNNABLE` 작업 용량을 생성합니다.

## 교차 공유 선점
<a name="cross-share-preemption"></a>

할당량 관리는 **교차 공유 선점을** 사용하여 작업이 도착할 때 빌린 용량을 할당량 공유로 복원합니다.

할당량 공유의 용량 제한을 낮추는 관리자는 해당 할당량 공유가 소비하는 용량이 이제 구성된 용량 제한을 초과하는 경우 해당 할당량 내의 , `SCHEDULED` `STARTING`또는 `RUNNING` 작업을 선점 대상으로 지정할 수도 있습니다.

## 공유 중 선점
<a name="in-share-preemption"></a>

할당량 공유는 **공유 중 선점** 사항을 활성화하도록 구성할 수 있습니다. 이렇게 하면 우선 순위가 높은 `RUNNABLE` 작업이 `SCHEDULED`, `STARTING`또는에 입력된 동일한 할당량 공유 내에서 우선 순위가 낮은 작업의 선점을 트리거할 수 있습니다`RUNNING`.

## 선점 선택 알고리즘
<a name="preemption-selection-algorithm"></a>

선점할 작업을 선택할 때 작업이 빌리는 인스턴스의 수와 유형, 작업의 상대적 우선순위 및 작업 기간을 AWS Batch 고려하고 사용자 지정 휴리스틱을 적용합니다. [UpdateServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateServiceJob.html) API 호출을 사용하여 제출 후 작업`schedulingPriority`의를 업데이트할 수 있습니다. 이는 `RUNNING` 작업의 우선순위를 낮추거나(선점 가능성 증가) 공유 선점 기능이 활성화된 할당량 공유에서 `RUNNABLE` 작업의 우선순위를 높여 작업이 이미 실행 중인 작업을 선점할 수 있도록 하는 데 유용할 수 있습니다.

## 선점 재시도
<a name="preemption-retries"></a>

기본값은 선점된 작업을 제한 `RUNNABLE` 없이 다시 대기열에 추가하기 위한 것입니다. 작업 경험의 선점 횟수를 제한하려면 작업 제출 `preemptionRetriesBeforeTermination` 시를 설정합니다. `preemptionRetriesBeforeTermination`가 0으로 설정되면 작업은 첫 번째 선점 `FAILED` 시 로 이동합니다.

최근 선점 시도의 슬라이딩 윈도우는 작업에 저장되며 [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)을 통해 볼 수 있습니다.

# 할당량 관리 리소스 생성
<a name="create-quota-management-resources"></a>

할당량 관리는 연결된 예약 정책, 서비스 환경 및 작업 대기열을 생성할 때 특정 설정이 필요합니다.

## 사전 조건
<a name="quota-management-resources-prerequisites"></a>

할당량 관리 리소스를 생성하기 전에 다음을 수행해야 합니다.
+ **IAM 권한** - 작업 대기열, 예약 정책 및 서비스 환경을 생성하고 관리할 AWS Batch 수 있는 권한입니다. 자세한 내용은 [AWS Batch IAM 정책, 역할 및 권한](IAM_policies.md) 단원을 참조하십시오.

------
#### [ Configure quota management resources (AWS Batch console) ]

 AWS Batch 콘솔은 할당량 관리에 필요한 모든 리소스를 생성하기 위한 통합 워크플로를 제공합니다. 할당량 관리 작업 대기열 생성 워크플로는 할당량 관리 지원 예약 정책 및 서비스 환경도 생성합니다.

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 탐색 창에서 **작업 대기열을** 선택한 다음 **생성을** 선택합니다.

1. **오케스트레이션 유형**에서 **SageMaker 훈련**을 선택합니다.

1. **작업 대기열 구성**에서 다음을 수행합니다.

   1. **이름**에 작업 대기열의 이름을 입력합니다.

   1. **Priority**에 0에서 1000 사이의 값을 입력합니다. 우선 순위가 높은 작업 대기열에는 서비스 환경에 대한 기본 설정이 지정됩니다.

1. **예약의** 경우:

   1. **예약 알고리즘**에서 **할당량 관리를** 선택합니다.

   1. **예약 정책 ARN의** 경우:
      + 할당량 관리를 지정하는 예약 정책이 이미 있는 경우 드롭다운에서 선택합니다.
      + 그렇지 않으면 **예약 정책 생성을** 선택합니다.

        1. 사이드바가 열리고 할당량 관리 예약 정책을 구성합니다.

        1. 예약 정책의 **이름을** 입력합니다.

        1. **생성(Create)**을 선택합니다. 이제 **예약 정책 ARN** 필드가 채워집니다.

1. **서비스 환경** 구성의 경우 **연결된 서비스 환경에서** 다음을 수행합니다.
**참고**  
할당량 관리가 활성화된 서비스 환경은 단일 할당량 관리가 활성화된 작업 대기열에만 연결할 수 있습니다.

   1. 할당량 관리와 호환되고 아직 할당량 관리가 활성화된 작업 대기열에 연결되지 않은 서비스 환경이 이미 생성된 경우 드롭다운에서 선택합니다.

   1. 그렇지 않으면 **서비스 환경 생성을** 선택합니다. 사이드바가 열리고 서비스 환경을 구성합니다.

      1. 서비스 환경의 **이름을** 입력합니다.

      1. 하나 이상의 용량 제한(및 최대 5개)을 제공합니다. 각 용량 제한에 대해 드롭다운에서 **인스턴스 유형**과 **최대 인스턴스 수**를 선택합니다.

1. (선택 사항) **작업 상태 제한**의 경우:

   1. **구성 오류**에서 둘 중 하나를 선택하고 **최대 실행 가능 시간(초)을** `SERVICE_ENVIRONMENT_MAX_RESOURCE` 입력합니다.

   1. **용량**에서 `INSUFFICIENT_INSTANCE_CAPACITY`를 선택하고 **최대 실행 가능 시간(초)**을 입력합니다.

1. **작업 대기열 생성을** 선택합니다.

------
#### [ Configure quota management resources (AWS CLI) ]

 AWS CLI를 통해 할당량 관리를 구성하려면 예약 정책, 서비스 환경 및 작업 대기열을 생성합니다. 예약 정책과 서비스 환경 모두 할당량 관리와 호환되어야 하며 작업 대기열을 생성하기 전에 생성되어야 합니다.

**예약 정책 생성**

`create-scheduling-policy` 명령을 사용하여 할당량 관리 호환 예약 정책을 생성합니다. 생성 중에 할당량 공유 정책을 제공합니다.

```
aws batch create-scheduling-policy \
  --name my-qm-sagemaker-scheduling-policy \
  --quota-share-policy idleResourceAssignmentStrategy="FIFO"
```

예약 정책이 성공적으로 생성되었는지 확인합니다.

```
aws batch describe-scheduling-policies \
  --arns arn-for-my-qm-sagemaker-scheduling-policy
```

**서비스 환경 생성**

`create-service-environment` 명령을 사용하여 할당량 관리가 활성화된 서비스 환경을 생성합니다. 용량 제한이 `ml.g6.xlarge` 또는와 같이 SageMaker 훈련 작업에서 허용하는 인스턴스 유형을 사용하는지 확인합니다`ml.p4d.24xlarge`.

```
aws batch create-service-environment \
  --service-environment-name my-qm-sagemaker-service-env \
  --service-environment-type SAGEMAKER_TRAINING \
  --capacity-limits capacityUnit=instance_type,maxCapacity=instance_count
```

서비스 환경이 성공적으로 생성되었는지 확인합니다.

```
aws batch describe-service-environments \
  --service-environments my-qm-sagemaker-service-env
```

**작업 대기열 생성**

`create-job-queue` 명령을 사용하여 할당량 관리가 활성화된 작업 대기열을 생성합니다. 단, 다음 기준을 만족해야 합니다.
+ 현재 다른 작업 대기열에 연결되지 않은 단일 `SAGEMAKER_TRAINING` 서비스 환경을 제공해야 합니다.
+ 서비스 환경은 `ml.m6i.xlarge`가 아닌와 같은 인스턴스 유형 측면에서 용량 제한을 표시해야 합니다`NUM_INSTANCES`.
+ 가 포함된 예약 정책을 연결해야 합니다`quotaSharePolicy`.
+ `jobQueueType`이 `SAGEMAKER_TRAINING`이어야 합니다.

```
aws batch create-job-queue \
  --job-queue-name my-qm-sagemaker-jq \
  --job-queue-type SAGEMAKER_TRAINING \
  --priority 1 \
  --service-environment-order order=1,serviceEnvironment=my-qm-sagemaker-service-env \
  --scheduling-policy-arn arn-for-my-qm-sagemaker-scheduling-policy
```

작업 대기열이 성공적으로 생성되었는지 확인합니다.

```
aws batch describe-job-queues \
  --job-queues my-qm-sagemaker-jq
```

다음을 확인하세요.
+ `state`는 `ENABLED`입니다.
+ `status`는 `VALID`입니다.
+ `statusReason`은 `JobQueue Healthy`입니다.

------

# 할당량 공유 생성
<a name="create-quota-shares"></a>

할당량은 스케줄러가 예약할 때 반복하는 연결된 작업 대기열 내의 가상 대기열로 함수를 AWS Batch 공유합니다. 이를 통해 관리자는 리소스 공유 전략에 대한 명시적 구성을 ` capacity limits `사용하여를 통해 팀 또는 프로젝트에 컴퓨팅 할당량을 할당할 수 있습니다.

## 사전 조건
<a name="create-quota-shares-prerequisites"></a>

할당량 공유를 생성하기 전에 다음을 확인해야 합니다.
+ **할당량 관리 예약 정책, 서비스 환경 및 작업 대기열** - 할당량 관리 예약 정책, 서비스 환경 및 할당량 관리가 활성화된 작업 대기열입니다. 자세한 내용은 [할당량 관리 리소스 생성](create-quota-management-resources.md) 단원을 참조하십시오.
+ **IAM 권한** - 할당량 공유를 생성하고 관리할 AWS Batch 수 있는 권한입니다. 자세한 내용은 [AWS Batch IAM 정책, 역할 및 권한](IAM_policies.md) 단원을 참조하십시오.

------
#### [ Configure quota shares (AWS Batch console) ]

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 탐색 창의 **작업 대기열을** 선택하고 목록에서 할당량 관리가 활성화된 작업 대기열을 선택합니다. 작업 대기열 이름 링크를 선택합니다.

1. **할당량 공유** 섹션에서 **할당량 공유 생성을** 선택합니다.

1. 할당량 공유의 **이름을** 입력합니다.

1. **용량 제한**에서 **용량 제한 추가**를 선택합니다. 용량 제한을 하나 이상 지정해야 합니다.

   1. 드롭다운에서 **인스턴스 유형을** 선택하고이 할당량 공유가 할당한 **최대 인스턴스**를 설정합니다.

   1. (선택 사항) **용량 제한 추가**를 선택하고 반복하여 최대 5개의 용량 제한을 연결합니다.

1. **용량 공유**에서이 할당량 공유가 동일한 작업 대기열의 다른 할당량 공유와 용량을 공유하는 방법을 선택합니다.
   + 할당량 공유가 유휴 컴퓨팅을 대여하거나 빌려서는 안 되는 경우 **예약을** 선택합니다.
   + 할당량 공유가 유휴 컴퓨팅을 다른 할당량 공유에 부여할 수 있는 경우 **대출**을 선택합니다.
   + 할당량 공유가 유휴 컴퓨팅을 대여 및 대여할 수 있는 경우 **대출 및** 대여를 선택하고, 작업이 도착하면 교차 공유 선점을 통해 임대 컴퓨팅을 회수합니다.

1. (선택 사항) **공유 중 선점**에서 공유 중 선점 활성화 또는 비활성화 여부를 선택합니다. 공유 중 선점 기능을 활성화하면 우선 순위가 높은 작업이 이미 `SCHEDULED`, `STARTING`또는 `RUNNING` 상태인 우선 순위가 낮은 작업을 선점할 수 있습니다. 공유 중 선점을 비활성화하면 우선 순위가 높은 작업이 용량이 사용 가능해질 때까지 대기합니다.

1. **할당량 공유 생성을** 선택합니다.

------
#### [ Configure quota shares (AWS CLI) ]

`create-quota-share` 명령을 사용하여 할당량 공유를 생성합니다. 리소스 공유 전략과 공유 내 선점 활성화 여부를 선택해야 합니다.

**대출 및 대여 예제**

다음 예제에서는 유휴 용량을 대여하고 대여할 수 있는 할당량 공유를 생성하며, 대여 한도는 구성된 용량 한도의 100%입니다. 또한 공유 중 선점도 활성화하므로 우선 순위가 높은 작업은 SageMaker AI 내에서 예약된 우선 순위가 낮은 작업이 완료될 때까지 기다리지 않습니다.

```
aws batch create-quota-share \
  --quota-share-name lend_and_borrow_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=5,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=LEND_AND_BORROW,borrowLimit=100 \
  --preemption-configuration inSharePreemption=ENABLED
```

**대출 전용 예제**

할당량 공유는 유휴 용량만 대여하고 직접 빌리지 않도록 구성할 수 있습니다. 다음 예제는 공유 내 선점 비활성화`LEND`가 있는 페어입니다.

```
aws batch create-quota-share \
  --quota-share-name lend_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=8,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=LEND \
  --preemption-configuration inSharePreemption=DISABLED
```

**예약 예제**

유휴 용량을 예약하도록 할당량 공유를 구성할 수도 있습니다. 할당량 공유에 유휴 용량이 있는 경우 새로 제출된 작업은 더 빨리 시작될 수 있지만 할당량 공유에 작업이 없는 경우 전체 대기열 사용률이 낮아집니다.

```
aws batch create-quota-share \
  --quota-share-name reserved_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=2,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=RESERVE \
  --preemption-configuration inSharePreemption=DISABLED
```

------

# 할당량 공유에 작업 제출
<a name="submit-job-quota-share"></a>

할당량 관리 작업 대기열에서는 모든 작업이 작업 제출 시 할당량 공유를 지정해야 합니다. 할당량 공유에 작업을 제출하려면 [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)`quotaShareName`에서를 지정합니다. 선택적으로를 제공하여 작업 시도가에 들어가기 전에 선점 시도 횟수를 제한할 `preemptionConfiguration` 수 있습니다`FAILED`. 작업 경험의 선점 횟수를 제한하려면 작업 제출 시 [ServiceJobPreemptionConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_ServiceJobPreemptionConfiguration.html) `preemptionRetriesBeforeTermination` 내에서를 설정합니다.

## 를 사용하여 작업 제출 AWS CLI
<a name="submit-job-quota-share-cli"></a>

다음 예제에서는 **submit-service-job** 명령을 사용하여 할당량 공유에 작업을 제출합니다.

```
aws batch submit-service-job \
    --job-name "my-sagemaker-training-job" \
    --job-queue "my-sagemaker-job-queue" \
    --service-job-type "SAGEMAKER_TRAINING" \
    --quota-share-name "my_quota_share" \
    --timeout-config '{"attemptDurationSeconds":3600}' \
    --scheduling-priority 5 \
    --service-request-payload '{\"TrainingJobName\": \"sagemaker-training-job-example\", \"AlgorithmSpecification\": {\"TrainingImage\": \"123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.8.0-cpu-py3\", \"TrainingInputMode\": \"File\", \"ContainerEntrypoint\":  [\"sleep\", \"1\"]}, \"RoleArn\":\"arn:aws:iam::123456789012:role/SageMakerExecutionRole\", \"OutputDataConfig\": {\"S3OutputPath\": \"s3://example-bucket/model-output/\"}, \"ResourceConfig\": {\"InstanceType\": \"ml.m5.large\", \"InstanceCount\": 1, \"VolumeSizeInGB\": 1}}'"
```