

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

# Amazon SageMaker AI 작업 사용
<a name="kubernetes-sagemaker-jobs"></a>

이 섹션은 [Kubernetes용 SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s)의 오리지널 버전을 기반으로 합니다.

**중요**  
[Kubernetes용 SageMaker Operators ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)오리지널 버전의 개발 및 기술 지원을 중단합니다.  
현재 `v1.2.2`버전 이하의 [Kubernetes용 SageMaker Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)를 사용하고 있다면 [Amazon SageMaker용 ACK 서비스 컨트롤러](https://github.com/aws-controllers-k8s/sagemaker-controller)로 리소스를 마이그레이션하는 것이 좋습니다. ACK 서비스 컨트롤러는 [Kubernetes용AWS 컨트롤러(ACK)](https://aws-controllers-k8s.github.io/community/)를 기반으로 하는 차세대 Kubernetes용 SageMaker Operators입니다.  
마이그레이션 단계에 대한 자세한 내용은 [리소스를 최신 연산자로 마이그레이션](kubernetes-sagemaker-operators-migrate.md)섹션을 참조하세요.  
Kubernetes용 SageMaker Operators 오리지널 버전의 지원 종료에 대한 자주 묻는 질문에 대한 답변은 [Kubernetes용 SageMaker AI Operators 오리지널 버전 지원 종료 발표](kubernetes-sagemaker-operators-eos-announcement.md)섹션을 참조하세요.

Kubernetes용 Operators를 사용하여 Amazon SageMaker AI 작업을 실행하려면 YAML 파일을 적용하거나 제공된 헬름 차트를 사용할 수 있습니다.

다음 튜토리얼의 모든 샘플 연산자 작업은 공개 MNIST 데이터세트에서 가져온 샘플 데이터를 사용합니다. 이 샘플을 실행하려면 Amazon S3 버킷으로 데이터세트를 다운로드합니다. [MNIST 데이터세트 다운로드](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html)에서 데이터세트를 찾을 수 있습니다.

**Topics**
+ [훈련 작업 연산자](#trainingjob-operator)
+ [하이퍼파라미터 조정 작업 연산자](#hyperparametertuningjobs-operator)
+ [배치 변환 작업 연산자](#batchtransformjobs-operator)
+ [호스팅 배포 연산자](#hosting-deployment-operator)
+ [처리 작업 연산자](#kubernetes-processing-job-operator)
+ [호스팅 오토 스케일링 정책(HAP) 연산자](#kubernetes-hap-operator)

## 훈련 작업 연산자
<a name="trainingjob-operator"></a>

훈련 작업 운영자는 지정된 훈련 작업 사양을 SageMaker AI에서 실행하여 SageMaker AI에 맞게 조정합니다. SageMaker AI 훈련 작업에 대한 자세한 내용은 SageMaker [CreateTrainingJob API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html)에서 확인할 수 있습니다.

**Topics**
+ [YAML 파일을 사용하여 훈련 작업 생성](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Helm 차트를 사용하여 훈련 작업 생성](#create-a-trainingjob-using-a-helm-chart)
+ [훈련 작업 나열](#list-training-jobs)
+ [훈련 작업 설명](#describe-a-training-job)
+ [훈련 작업 로그 보기](#view-logs-from-training-jobs)
+ [훈련 작업 삭제](#delete-training-jobs)

### YAML 파일을 사용하여 훈련 작업 생성
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

1. 다음 명령을 사용하여 훈련용 샘플 YAML 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
   ```

1. `xgboost-mnist-trainingjob.yaml` 파일을 편집하여 `<sagemaker-execution-role>`이 포함된 `roleArn` 파라미터 및 `outputPath`를 SageMaker AI 실행 역할에 쓰기 권한이 있는 Amazon S3 버킷으로 대체합니다. SageMaker AI가 사용자를 대신하여 Amazon S3, Amazon CloudWatch 및 기타 서비스에 액세스할 수 있으려면 `roleArn`에 권한이 있어야 합니다. SageMaker AI ExecutionRole 생성에 대한 자세한 내용은 [SageMaker AI Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)을 참조하세요. 다음 명령을 사용하여 YAML 파일을 적용합니다.

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Helm 차트를 사용하여 훈련 작업 생성
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Helm 차트를 사용하여 훈련 작업을 실행할 수 있습니다.

1. 다음 명령을 사용하여 GitHub 리포지토리를 복제하여 소스를 가져옵니다.

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` 폴더로 이동한 다음 `values.yaml`파일을 편집하여 `rolearn`및 `outputpath`등의 값을 계정에 해당하는 값으로 대체합니다. SageMaker AI가 사용자를 대신하여 Amazon S3, Amazon CloudWatch 및 기타 서비스에 액세스할 수 있으려면 RoleARN에 권한이 있어야 합니다. SageMaker AI ExecutionRole 생성에 대한 자세한 내용은 [SageMaker AI Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)을 참조하세요.

#### 훈련 작업 생성
<a name="create-the-training-job"></a>

`values.yaml`에서 역할 및 Amazon S3 버킷이 적절한 값으로 대체되었으면 다음 명령을 사용하여 훈련 작업을 생성할 수 있습니다.

```
helm install . --generate-name
```

출력은 다음과 같아야 합니다.

```
NAME: chart-12345678
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-trainingjob.
```

#### 훈련 Helm 차트 확인
<a name="verify-your-training-helm-chart"></a>

Helm 차트가 성공적으로 생성되었는지 확인하려면 다음을 실행합니다.

```
helm ls
```

출력은 다음과 같아야 합니다.

```
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
chart-12345678        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-12345678    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install`은 `TrainingJob`Kubernetes 리소스를 생성합니다. 운영자는 SageMaker AI에서 실제 훈련 작업을 시작하고 SageMaker AI의 작업 상태를 반영하도록 `TrainingJob` Kubernetes 리소스를 업데이트합니다. 작업 기간 동안 사용한 SageMaker AI 리소스에 대해 요금이 부과됩니다. 작업이 완료되거나 중지된 후에는 요금이 발생하지 않습니다.

**참고**: SageMaker AI에서는 실행 중인 훈련 작업을 업데이트할 수 없습니다. 파라미터를 편집하고 구성 파일을 다시 적용할 수는 없습니다. 메타데이터 이름을 변경하거나 기존 작업을 삭제하고 새 작업을 생성하세요. Kubeflow의 TFJob과 같은 기존 훈련 작업자와 마찬가지로 `update`는 지원되지 않습니다.

### 훈련 작업 나열
<a name="list-training-jobs"></a>

다음 명령을 사용하여 Kubernetes 연산자를 사용하여 생성된 모든 작업을 나열합니다.

```
kubectl get TrainingJob
```

모든 작업을 나열하는 출력은 다음과 같아야 합니다.

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

훈련 작업은 작업이 완료되거나 실패한 후에도 계속 나열됩니다. 다음 [훈련 작업 삭제](#delete-training-jobs)단계에 따라 목록에서 `TrainingJob`작업을 제거할 수 있습니다. 완료 또는 중지된 작업에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다.

#### 훈련 작업 상태 값
<a name="training-job-status-values"></a>

`STATUS` 필드는 다음 값 중 하나일 수 있습니다.
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

이러한 상태는 SageMaker AI 공식 [API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus)에서 직접 가져온 것입니다.

공식 SageMaker AI 상태 외에도 `STATUS`는 `SynchronizingK8sJobWithSageMaker`가 될 수도 있습니다. 이는 연산자가 아직 작업을 처리하지 않았음을 의미합니다.

#### 보조 상태 값
<a name="secondary-status-values"></a>

보조 상태는 SageMaker AI 공식 [API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus)에서 직접 가져온 것입니다. 여기에는 작업 상태에 대한 보다 세부적인 정보가 포함되어 있습니다.

### 훈련 작업 설명
<a name="describe-a-training-job"></a>

`describe` `kubectl`명령을 사용하여 훈련 작업에 대한 자세한 내용을 확인할 수 있습니다. 이는 일반적으로 문제를 디버깅하거나 훈련 작업의 파라미터를 확인하는 데 사용됩니다. 훈련 작업에 대한 정보를 얻으려면 다음 명령을 사용합니다.

```
kubectl describe trainingjob xgboost-mnist-from-for-s3
```

훈련 작업에 대한 출력은 다음과 같아야 합니다.

```
Name:         xgboost-mnist-from-for-s3
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  sagemaker.aws.amazon.com/v1
Kind:         TrainingJob
Metadata:
  Creation Timestamp:  2019-11-20T23:42:35Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  23119
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3
  UID:               6d7uiui-0bef-11ea-b94e-0ed467example
Spec:
  Algorithm Specification:
    Training Image:       8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
    Training Input Mode:  File
  Hyper Parameters:
    Name:   eta
    Value:  0.2
    Name:   gamma
    Value:  4
    Name:   max_depth
    Value:  5
    Name:   min_child_weight
    Value:  6
    Name:   num_class
    Value:  10
    Name:   num_round
    Value:  10
    Name:   objective
    Value:  multi:softmax
    Name:   silent
    Value:  0
  Input Data Config:
    Channel Name:      train
    Compression Type:  None
    Content Type:      text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
    Channel Name:                    validation
    Compression Type:                None
    Content Type:                    text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
  Output Data Config:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/
  Region:             us-east-2
  Resource Config:
    Instance Count:     1
    Instance Type:      ml.m4.xlarge
    Volume Size In GB:  5
  Role Arn:             arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole
  Stopping Condition:
    Max Runtime In Seconds:  86400
  Training Job Name:         xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example
Status:
  Cloud Watch Log URL:           https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix
  Last Check Time:               2019-11-20T23:44:29Z
  Sage Maker Training Job Name:  xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample
  Secondary Status:              Downloading
  Training Job Status:           InProgress
Events:                          <none>
```

### 훈련 작업 로그 보기
<a name="view-logs-from-training-jobs"></a>

다음 명령을 사용하여 `kmeans-mnist`훈련 작업의 로그를 확인합니다.

```
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
```

출력은 다음과 비슷한 형태가 됩니다. 인스턴스의 로그는 시간순으로 정렬됩니다.

```
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting"
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training.
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ','
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
```

### 훈련 작업 삭제
<a name="delete-training-jobs"></a>

Amazon SageMaker AI에서 훈련 작업을 중지하려면 다음 명령을 사용합니다.

```
kubectl delete trainingjob xgboost-mnist-from-for-s3
```

이 명령은 Kubernetes에서 SageMaker 훈련 작업을 제거합니다. 이 명령은 다음 출력을 반환합니다.

```
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
```

SageMaker AI에서 작업이 아직 진행 중인 경우 작업이 중지됩니다. 작업이 중지되거나 완료된 후에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다.

**참고**: SageMaker AI는 훈련 작업을 삭제하지 않습니다. 중지된 작업은 SageMaker AI 콘솔에 계속 표시됩니다. `delete` 명령이 SageMaker AI에서 리소스를 정리하는 데 약 2분이 걸립니다.

## 하이퍼파라미터 조정 작업 연산자
<a name="hyperparametertuningjobs-operator"></a>

하이퍼파라미터 조정 작업 운영자는 SageMaker AI에서 실행하여 지정된 하이퍼파라미터 조정 작업 사양을 SageMaker AI와 조정합니다. SageMaker AI 하이퍼파라미터 조정 작업에 대한 자세한 내용은 SageMaker AI [CreateHyperParameterTuningJob API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html)에서 확인할 수 있습니다.

**Topics**
+ [YAML 파일을 사용하여 하이퍼파라미터 조정 작업 생성](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Helm 차트를 사용하여 하이퍼파라미터 조정 작업 생성](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [하이퍼파라미터 조정 작업 나열](#list-hyperparameter-tuning-jobs)
+ [하이퍼파라미터 조정 작업 설명](#describe-a-hyperparameter-tuning-job)
+ [하이퍼파라미터 조정 작업 로그 보기](#view-logs-from-hyperparametertuning-jobs)
+ [하이퍼파라미터 조정 작업 삭제](#delete-hyperparametertuning-jobs)

### YAML 파일을 사용하여 하이퍼파라미터 조정 작업 생성
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

1. 다음 명령을 사용하여 하이퍼파라미터 조정 작업을 위한 샘플 YAML 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
   ```

1. `xgboost-mnist-hpo.yaml` 파일을 편집하여 `roleArn`파라미터를 `sagemaker-execution-role`으로 대체합니다. 하이퍼파라미터 조정 작업이 성공하려면 `s3InputPath`및 `s3OutputPath`를 계정에 해당하는 값으로 변경해야 합니다. 다음 명령을 사용하여 업데이트 YAML 파일을 적용합니다.

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Helm 차트를 사용하여 하이퍼파라미터 조정 작업 생성
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

Helm 차트를 사용하여 하이퍼파라미터 조정 작업을 실행할 수 있습니다.

1. 다음 명령을 사용하여 GitHub 리포지토리를 복제하여 소스를 가져옵니다.

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/` 폴더로 이동합니다.

1. `values.yaml` 파일을 편집하여 `roleArn`파라미터를 `sagemaker-execution-role`으로 대체합니다. 하이퍼파라미터 조정 작업이 성공하려면 `s3InputPath`및 `s3OutputPath`를 계정에 해당하는 값으로 변경해야 합니다.

#### 하이퍼파라미터 조정 작업 생성
<a name="create-the-hpo-job"></a>

`values.yaml`에서 역할 및 Amazon S3 경로가 적절한 값으로 대체되었으면 다음 명령을 사용하여 하이퍼파라미터 조정 작업을 생성할 수 있습니다.

```
helm install . --generate-name
```

출력은 다음과 비슷한 형태가 됩니다.

```
NAME: chart-1574292948
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
```

#### 차트 설치 확인
<a name="verify-chart-installation"></a>

Helm 차트가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행합니다.

```
helm ls
```

출력은 다음과 같아야 합니다.

```
NAME                    NAMESPACE       REVISION        UPDATED
chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0                               STATUS          CHART                           APP VERSION
chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install`은 `HyperParameterTuningJob`Kubernetes 리소스를 생성합니다. 운영자는 SageMaker AI에서 실제 하이퍼파라미터 최적화 작업을 시작하고 SageMaker AI의 작업 상태를 반영하도록 `HyperParameterTuningJob` Kubernetes 리소스를 업데이트합니다. 작업 기간 동안 사용한 SageMaker AI 리소스에 대해 요금이 부과됩니다. 작업이 완료되거나 중지된 후에는 요금이 발생하지 않습니다.

**참고**: SageMaker AI에서는 실행 중인 하이퍼파라미터 조정 작업을 업데이트할 수 없습니다. 파라미터를 편집하고 구성 파일을 다시 적용할 수는 없습니다. 메타데이터 이름을 변경하거나 기존 작업을 삭제하고 새 작업을 생성해야 합니다. Kubeflow의 `TFJob`과 같은 기존 훈련 작업자와 마찬가지로 `update`는 지원되지 않습니다.

### 하이퍼파라미터 조정 작업 나열
<a name="list-hyperparameter-tuning-jobs"></a>

다음 명령을 사용하여 Kubernetes 연산자를 사용하여 생성된 모든 작업을 나열합니다.

```
kubectl get hyperparametertuningjob
```

출력은 다음과 같아야 합니다.

```
NAME         STATUS      CREATION-TIME          COMPLETED   INPROGRESS   ERRORS   STOPPED   BEST-TRAINING-JOB                               SAGEMAKER-JOB-NAME
xgboost-mnist-hpo   Completed   2019-10-17T01:15:52Z   10          0            0        0         xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123   xgboostha92f5e3cf07b11e9bf6c123
```

하이퍼파라미터 조정 작업은 작업이 완료되거나 실패한 후에도 계속 나열됩니다. 다음 [하이퍼파라미터 조정 작업 삭제](#delete-hyperparametertuning-jobs)단계에 따라 목록에서 `hyperparametertuningjob`을 제거할 수 있습니다. 완료 또는 중지된 작업에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다.

#### 하이퍼파라미터 조정 작업 상태 값
<a name="hyperparameter-tuning-job-status-values"></a>

`STATUS` 필드는 다음 값 중 하나일 수 있습니다.
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

이러한 상태는 SageMaker AI 공식 [API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus)에서 직접 가져온 것입니다.

공식 SageMaker AI 상태 외에도 `STATUS`는 `SynchronizingK8sJobWithSageMaker`가 될 수도 있습니다. 이는 연산자가 아직 작업을 처리하지 않았음을 의미합니다.

#### 상태 카운터
<a name="status-counters"></a>

출력에는 `COMPLETED`, `INPROGRESS`등의 여러 카운터가 있습니다. 이는 각각 완료한 훈련 작업과 진행 중인 훈련 작업 수를 나타냅니다. 결정 방법에 대한 자세한 내용은 SageMaker API 설명서의 [훈련 작업 상태 카운터](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)를 참조하세요.

#### 최우수 훈련 작업
<a name="best-training-job"></a>

이 열에는 선택한 지표를 가장 잘 최적화한 `TrainingJob`의 이름이 포함됩니다.

조정된 하이퍼파라미터의 요약을 보려면 다음을 실행합니다.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

`TrainingJob`에 대한 자세한 정보를 보려면 다음을 실행합니다.

```
kubectl describe trainingjobs <job name>
```

#### 생성된 훈련 작업
<a name="spawned-training-jobs"></a>

다음 명령을 실행하여 `HyperparameterTuningJob`에서 시작된 Kubernetes의 훈련 작업 10개를 모두 추적할 수도 있습니다.

```
kubectl get trainingjobs
```

### 하이퍼파라미터 조정 작업 설명
<a name="describe-a-hyperparameter-tuning-job"></a>

`describe` `kubectl`명령을 사용하여 디버깅 세부 정보를 얻을 수 있습니다.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Kubernetes용 SageMaker AI Operator는 조정 작업에 대한 정보 외에도 하이퍼파라미터 조정 작업에서 찾은 [최우수 훈련 작업](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job)을 다음과 같이 `describe` 출력에 표시합니다.

```
Name:         xgboost-mnist-hpo
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HyperparameterTuningJob
Metadata:
  Creation Timestamp:  2019-10-17T01:15:52Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  8167
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo
  UID:               a92f5e3c-f07b-11e9-bf6c-06d6f303uidu
Spec:
  Hyper Parameter Tuning Job Config:
    Hyper Parameter Tuning Job Objective:
      Metric Name:  validation:error
      Type:         Minimize
    Parameter Ranges:
      Integer Parameter Ranges:
        Max Value:     20
        Min Value:     10
        Name:          num_round
        Scaling Type:  Linear
    Resource Limits:
      Max Number Of Training Jobs:     10
      Max Parallel Training Jobs:      10
    Strategy:                          Bayesian
    Training Job Early Stopping Type:  Off
  Hyper Parameter Tuning Job Name:     xgboostha92f5e3cf07b11e9bf6c06d6
  Region:                              us-east-2
  Training Job Definition:
    Algorithm Specification:
      Training Image:       12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
      Training Input Mode:  File
    Input Data Config:
      Channel Name:  train
      Content Type:  text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
      Channel Name:                validation
      Content Type:                text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
    Output Data Config:
      s3OutputPath:  https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost
    Resource Config:
      Instance Count:     1
      Instance Type:      ml.m4.xlarge
      Volume Size In GB:  5
    Role Arn:             arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Static Hyper Parameters:
      Name:   base_score
      Value:  0.5
      Name:   booster
      Value:  gbtree
      Name:   csv_weights
      Value:  0
      Name:   dsplit
      Value:  row
      Name:   grow_policy
      Value:  depthwise
      Name:   lambda_bias
      Value:  0.0
      Name:   max_bin
      Value:  256
      Name:   max_leaves
      Value:  0
      Name:   normalize_type
      Value:  tree
      Name:   objective
      Value:  reg:linear
      Name:   one_drop
      Value:  0
      Name:   prob_buffer_row
      Value:  1.0
      Name:   process_type
      Value:  default
      Name:   rate_drop
      Value:  0.0
      Name:   refresh_leaf
      Value:  1
      Name:   sample_type
      Value:  uniform
      Name:   scale_pos_weight
      Value:  1.0
      Name:   silent
      Value:  0
      Name:   sketch_eps
      Value:  0.03
      Name:   skip_drop
      Value:  0.0
      Name:   tree_method
      Value:  auto
      Name:   tweedie_variance_power
      Value:  1.5
    Stopping Condition:
      Max Runtime In Seconds:  86400
Status:
  Best Training Job:
    Creation Time:  2019-10-17T01:16:14Z
    Final Hyper Parameter Tuning Job Objective Metric:
      Metric Name:        validation:error
      Value:
    Objective Status:     Succeeded
    Training End Time:    2019-10-17T01:20:24Z
    Training Job Arn:     arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample
    Training Job Name:    xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059
    Training Job Status:  Completed
    Training Start Time:  2019-10-17T01:18:35Z
    Tuned Hyper Parameters:
      Name:                                    num_round
      Value:                                   18
  Hyper Parameter Tuning Job Status:           Completed
  Last Check Time:                             2019-10-17T01:21:01Z
  Sage Maker Hyper Parameter Tuning Job Name:  xgboostha92f5e3cf07b11e9bf6c06d6
  Training Job Status Counters:
    Completed:            10
    In Progress:          0
    Non Retryable Error:  0
    Retryable Error:      0
    Stopped:              0
    Total Error:          0
Events:                   <none>
```

### 하이퍼파라미터 조정 작업 로그 보기
<a name="view-logs-from-hyperparametertuning-jobs"></a>

하이퍼파라미터 조정 작업에는 로그가 없지만 해당 작업에서 시작한 모든 훈련 작업에는 로그가 있습니다. 이러한 로그는 마치 일반 훈련 작업과 마찬가지로 액세스할 수 있습니다. 자세한 내용은 [훈련 작업 로그 보기](#view-logs-from-training-jobs)섹션을 참조하세요.

### 하이퍼파라미터 조정 작업 삭제
<a name="delete-hyperparametertuning-jobs"></a>

SageMaker AI에서 하이퍼파라미터 작업을 중단하려면 다음 명령을 사용합니다.

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

이 명령은 Kubernetes 클러스터에서 하이퍼파라미터 조정 작업 및 관련 훈련 작업을 제거하고 SageMaker AI에서 중지합니다. 중지 또는 완료된 작업에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다. SageMaker AI는 하이퍼파라미터 조정 작업을 삭제하지 않습니다. 중지된 작업은 SageMaker AI 콘솔에 계속 표시됩니다.

출력은 다음과 같아야 합니다.

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

**참고**: 삭제 명령이 SageMaker AI에서 리소스를 정리하는 데 약 2분이 걸립니다.

## 배치 변환 작업 연산자
<a name="batchtransformjobs-operator"></a>

배치 변환 작업 운영자는 지정된 배치 변환 작업 사양을 SageMaker AI에서 실행하여 SageMaker AI에 맞게 조정합니다. SageMaker AI 배치 변환 작업에 대한 자세한 내용은 SageMaker AI [CreateTransformJob API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html)에서 확인할 수 있습니다.

**Topics**
+ [YAML 파일을 사용하여 배치 변환 작업 생성](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Helm 차트를 사용하여 배치 변환 작업 생성](#create-a-batchtransformjob-using-a-helm-chart)
+ [배치 변환 작업 나열](#list-batch-transform-jobs)
+ [배치 변환 작업 설명](#describe-a-batch-transform-job)
+ [배치 변환 작업 로그 보기](#view-logs-from-batch-transform-jobs)
+ [배치 변환 작업 삭제](#delete-a-batch-transform-job)

### YAML 파일을 사용하여 배치 변환 작업 생성
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

1. 다음 명령을 사용하여 배치 변환 작업용 샘플 YAML 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
   ```

1. `xgboost-mnist-batchtransform.yaml` 파일을 편집하여 필요한 파라미터를 변환함으로써 입력 데이터가 포함된 `inputdataconfig` 및 `s3OutputPath`를 SageMaker AI 실행 역할에 쓰기 권한이 있는 Amazon S3 버킷으로 대체합니다.

1. 다음 명령을 사용하여 YAML 파일을 적용합니다.

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Helm 차트를 사용하여 배치 변환 작업 생성
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

Helm 차트를 사용하여 배치 변환 작업을 실행할 수 있습니다.

#### Helm 설치 관리자 디렉터리 가져오기
<a name="get-the-helm-installer-directory"></a>

다음 명령을 사용하여 GitHub 리포지토리를 복제하여 소스를 가져옵니다.

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Helm 차트 구성
<a name="configure-the-helm-chart"></a>

`amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/` 폴더로 이동합니다.

`values.yaml` 파일을 편집하여 입력 데이터가 포함된 `inputdataconfig` 및 outputPath를 SageMaker AI 실행 역할에 쓰기 권한이 있는 S3 버킷으로 대체합니다.

#### 배치 변환 작업 생성
<a name="create-a-batch-transform-job"></a>

1. 다음 명령을 사용하여 배치 변환 작업을 생성합니다.

   ```
   helm install . --generate-name
   ```

   출력은 다음과 같아야 합니다.

   ```
   NAME: chart-1574292948
   LAST DEPLOYED: Wed Nov 20 23:35:49 2019
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   NOTES:
   Thanks for installing the sagemaker-k8s-batch-transform-job.
   ```

1. Helm 차트가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행합니다.

   ```
   helm ls
   NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-batchtransformjob-0.1.0
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0
   chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
   rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

   이 명령은 `BatchTransformJob`Kubernetes 리소스를 생성합니다. 운영자는 SageMaker AI에서 실제 변환 작업을 시작하고 SageMaker AI의 작업 상태를 반영하도록 `BatchTransformJob` Kubernetes 리소스를 업데이트합니다. 작업 기간 동안 사용한 SageMaker AI 리소스에 대해 요금이 부과됩니다. 작업이 완료되거나 중지된 후에는 요금이 발생하지 않습니다.

**참고**: SageMaker AI에서는 실행 중인 배치 변환 작업을 업데이트할 수 없습니다. 파라미터를 편집하고 구성 파일을 다시 적용할 수는 없습니다. 메타데이터 이름을 변경하거나 기존 작업을 삭제하고 새 작업을 생성해야 합니다. Kubeflow의 `TFJob`과 같은 기존 훈련 작업자와 마찬가지로 `update`는 지원되지 않습니다.

### 배치 변환 작업 나열
<a name="list-batch-transform-jobs"></a>

다음 명령을 사용하여 Kubernetes 연산자를 사용하여 생성된 모든 작업을 나열합니다.

```
kubectl get batchtransformjob
```

출력은 다음과 같아야 합니다.

```
NAME                                STATUS      CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-batch-transform       Completed   2019-11-18T03:44:00Z   xgboost-mnist-a88fb19809b511eaac440aa8axgboost
```

배치 변환 작업은 작업이 완료되거나 실패한 후에도 계속 나열됩니다. 다음 [배치 변환 작업 삭제](#delete-a-batch-transform-job)단계에 따라 목록에서 `hyperparametertuningjob`을 제거할 수 있습니다. 완료 또는 중지된 작업에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다.

#### 배치 변환 상태 값
<a name="batch-transform-status-values"></a>

`STATUS` 필드는 다음 값 중 하나일 수 있습니다.
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

이러한 상태는 SageMaker AI 공식 [API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus)에서 직접 가져온 것입니다.

공식 SageMaker AI 상태 외에도 `STATUS`는 `SynchronizingK8sJobWithSageMaker`가 될 수도 있습니다. 이는 연산자가 아직 작업을 처리하지 않았음을 의미합니다.

### 배치 변환 작업 설명
<a name="describe-a-batch-transform-job"></a>

`describe` `kubectl`명령을 사용하여 디버깅 세부 정보를 얻을 수 있습니다.

```
kubectl describe batchtransformjob xgboost-mnist-batch-transform
```

출력은 다음과 같아야 합니다.

```
Name:         xgboost-mnist-batch-transform
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         BatchTransformJob
Metadata:
  Creation Timestamp:  2019-11-18T03:44:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21990924
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist
  UID:               a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM
Spec:
  Model Name:  TrainingJob-20190814SMJOb-IKEB
  Region:      us-east-1
  Transform Input:
    Content Type:  text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Type:  S3Prefix
        S 3 Uri:        s3://amzn-s3-demo-bucket/mnist_kmeans_example/input
  Transform Job Name:   xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB
  Transform Output:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/mnist_kmeans_example/output
  Transform Resources:
    Instance Count:  1
    Instance Type:   ml.m4.xlarge
Status:
  Last Check Time:                2019-11-19T22:50:40Z
  Sage Maker Transform Job Name:  xgboost-mnist-a88fb19809b511eaac440aaSMJOB
  Transform Job Status:           Completed
Events:                           <none>
```

### 배치 변환 작업 로그 보기
<a name="view-logs-from-batch-transform-jobs"></a>

다음 명령을 사용하여 `xgboost-mnist`배치 변환 작업의 로그를 확인합니다.

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### 배치 변환 작업 삭제
<a name="delete-a-batch-transform-job"></a>

SageMaker AI에서 배치 변환 작업을 중지하려면 다음 명령을 사용합니다.

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

출력은 다음과 같아야 합니다.

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

이 명령은 Kubernetes 클러스터에서 배치 변환 작업을 제거하고 SageMaker AI에서 중지합니다. 중지 또는 완료된 작업에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다. 삭제 명령이 SageMaker AI에서 리소스를 정리하는 데 약 2분이 걸립니다.

**참고**: SageMaker AI는 배치 변환 작업을 삭제하지 않습니다. 중지된 작업은 SageMaker AI 콘솔에 계속 표시됩니다.

## 호스팅 배포 연산자
<a name="hosting-deployment-operator"></a>

호스팅 배포 연산자는 실시간 추론을 위해 기존 엔드포인트 업데이트뿐 아니라 엔드포인트 생성 및 삭제를 지원합니다. 호스팅 배포 운영자는 SageMaker AI에서 모델, 엔드포인트 구성 및 엔드포인트를 생성하여 지정된 호스팅 배포 작업 사양을 SageMaker AI에 맞게 조정합니다. SageMaker AI 추론에 대한 자세한 내용은 SageMaker AI [CreateEndpoint API 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)에서 확인할 수 있습니다.

**Topics**
+ [호스팅 배포 리소스 구성](#configure-a-hostingdeployment-resource)
+ [호스팅 배포 생성](#create-a-hostingdeployment)
+ [호스팅 배포 나열](#list-hostingdeployments)
+ [호스팅 배포 설명](#describe-a-hostingdeployment)
+ [API 엔드포인트 호출](#invoking-the-endpoint)
+ [호스팅 배포 업데이트](#update-hostingdeployment)
+ [호스팅 배포 삭제](#delete-the-hostingdeployment)

### 호스팅 배포 리소스 구성
<a name="configure-a-hostingdeployment-resource"></a>

다음 명령을 사용하여 호스팅 배포 작업용 샘플 YAML 파일을 다운로드합니다.

```
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
```

`xgboost-mnist-hostingdeployment.yaml` 파일에는 필요에 따라 편집할 수 있는 다음과 같은 구성 요소가 있습니다.
+ 프로덕션 변형.** 프로덕션 변형은 단일 모델을 제공하는 인스턴스 세트입니다. SageMaker AI는 설정된 가중치에 따라 모든 프로덕션 변형 간에 로드 밸런싱합니다.
+ 모델.** 모델은 모델을 제공하는 데 필요한 컨테이너 및 실행 역할 ARN입니다. 컨테이너가 하나 이상 필요합니다.
+ 컨테이너.** 컨테이너는 데이터세트와 제공 이미지를 지정합니다. SageMaker AI에서 제공하는 알고리즘 대신 사용자 지정 알고리즘을 사용하는 경우 추론 코드는 SageMaker AI 요구 사항을 충족해야 합니다. 자세한 내용을 알아보려면 [Using Your Own Algorithms with SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html)를 참조하세요.

### 호스팅 배포 생성
<a name="create-a-hostingdeployment"></a>

호스팅 배포를 생성하려면 다음 명령어로 `kubectl`을 사용하여 `hosting.yaml`파일을 적용합니다.

```
kubectl apply -f hosting.yaml
```

SageMaker AI는 지정된 구성으로 엔드포인트를 생성합니다. 엔드포인트 수명 동안 사용한 SageMaker AI 리소스에 대해 요금이 부과됩니다. 엔드포인트가 삭제되면 요금이 발생하지 않습니다.

생성 프로세스에는 10분 정도 걸립니다.

### 호스팅 배포 나열
<a name="list-hostingdeployments"></a>

호스팅 배포가 생성되었는지 확인하려면 다음 명령을 사용합니다.

```
kubectl get hostingdeployments
```

출력은 다음과 같아야 합니다.

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### 호스팅 배포 상태 값
<a name="hostingdeployment-status-values"></a>

상태 필드는 여러 값 중 하나일 수 있습니다.
+ `SynchronizingK8sJobWithSageMaker`: 연산자가 엔드포인트 생성을 준비 중입니다.
+ `ReconcilingEndpoint`: 연산자가 엔드포인트 리소스를 생성, 업데이트 또는 삭제하고 있습니다. 호스팅 배포가 이 상태로 유지되는 경우 `kubectl describe`를 사용하여 `Additional`필드에서 이유를 확인합니다.
+ `OutOfService`: 엔드포인트는 수신 요청을 받아들이는 데 사용할 수 없습니다.
+ `Creating`: [엔드포인트 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)이 실행 중입니다.
+ `Updating`: [엔드포인트 업데이트 [또는 ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)엔드포인트 가중치 및 용량 업데이트](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)가 실행 중입니다.
+ `SystemUpdating`: 엔드포인트는 유지 관리 중이며 완료될 때까지 업데이트, 삭제 또는 조정할 수 없습니다. 이 유지 관리 작업은 VPC 구성, AWS KMS 암호화, 모델, 인스턴스 유형 또는 인스턴스 수와 같은 고객 지정 값을 변경하지 않습니다.
+ `RollingBack`: 엔드포인트가 변형 가중치를 확대 또는 축소하거나 변경하지 못하고 이전 구성으로 롤백하는 중입니다. 롤백이 완료되면 엔드포인트는 `InService`상태로 돌아갑니다. 이 전환 상태는 오토 스케일링이 켜져 있고 [엔드포인트 가중치 및 용량 업데이트](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html) 호출의 일환으로 변형 가중치 또는 용량이 변경되는 엔드포인트 또는 [엔드포인트 가중치 및 용량 업데이트](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html) 작업이 명시적으로 호출되는 경우에만 적용됩니다.
+ `InService`: 엔드포인트는 수신 요청을 처리하는 데 사용할 수 있습니다.
+ `Deleting`: [엔드포인트 삭제](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)가 실행 중입니다.
+ `Failed`: 엔드포인트를 생성, 업데이트 또는 재조정할 수 없습니다. [엔드포인트 설명: 실패 이유](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason)를 사용하여 실패에 내용을 확인합니다. [엔드포인트 삭제](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)는 실패한 엔드포인트에서 수행할 수 있는 유일한 작업입니다.

### 호스팅 배포 설명
<a name="describe-a-hostingdeployment"></a>

`describe` `kubectl`명령을 사용하여 디버깅 세부 정보를 얻을 수 있습니다.

```
kubectl describe hostingdeployment
```

출력은 다음과 같아야 합니다.

```
Name:         host-xgboost
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..."
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HostingDeployment
Metadata:
  Creation Timestamp:  2019-11-22T19:40:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        1
  Resource Version:  4258134
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost
  UID:               def0e83e-0d5f-11ea-aa45-0a3507uiduid
Spec:
  Containers:
    Container Hostname:  xgboost
    Image:               123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
    Model Data URL:      s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
  Models:
    Containers:
      xgboost
    Execution Role Arn:  arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Name:                xgboost-model
    Primary Container:   xgboost
  Production Variants:
    Initial Instance Count:  1
    Instance Type:           ml.c5.large
    Model Name:              xgboost-model
    Variant Name:            all-traffic
  Region:                    us-east-2
Status:
  Creation Time:         2019-11-22T19:40:04Z
  Endpoint Arn:          arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample
  Endpoint Config Name:  host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample
  Endpoint Name:         host-xgboost-def0e83e0d5f11eaaa450a350733ba06
  Endpoint Status:       Creating
  Endpoint URL:          https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations
  Last Check Time:       2019-11-22T19:43:57Z
  Last Modified Time:    2019-11-22T19:40:04Z
  Model Names:
    Name:   xgboost-model
    Value:  xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample
Events:     <none>
```

상태 필드는 다음 필드를 사용하여 자세한 정보를 제공합니다.
+ `Additional`: 호스팅 배포 상태에 대한 추가 정보입니다. 이 필드는 선택 사항이며 오류가 발생한 경우에만 입력됩니다.
+ `Creation Time`: SageMaker AI에서 엔드포인트를 생성한 시점입니다.
+ `Endpoint ARN`: SageMaker AI 엔드포인트 ARN입니다.
+ `Endpoint Config Name`: 엔드포인트 구성의 SageMaker AI 이름입니다.
+ `Endpoint Name`: 엔드포인트의 SageMaker AI 이름입니다.
+ `Endpoint Status`: 엔드포인트의 상태입니다.
+ `Endpoint URL`: 엔드포인트에 액세스하는 데 사용할 수 있는 HTTPS URL입니다. 자세한 내용은 [Deploy a Model on SageMaker AI Hosting Services](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)를 참조하세요.
+ `FailureReason`: 생성, 업데이트 또는 삭제 명령이 실패할 경우 원인을 표시합니다.
+ `Last Check Time`: 연산자가 엔드포인트의 상태를 마지막으로 확인한 시간입니다.
+ `Last Modified Time`: 엔드포인트를 마지막으로 수정한 시간입니다.
+ `Model Names`: HostingDeployment 모델 이름을 SageMaker AI 모델 이름에 연결하는 키-값 페어입니다.

### API 엔드포인트 호출
<a name="invoking-the-endpoint"></a>

엔드포인트 상태가 이면 인증 및 URL 요청 서명을 수행하는 AWS CLI를 사용하거나 cURL과 같은 HTTP 클라이언트를 사용하는 두 가지 방법으로 엔드포인트를 호출`InService`할 수 있습니다. 자체 클라이언트를 사용하는 경우 v AWS 4 URL 서명 및 인증을 직접 수행해야 합니다.

 AWS CLI를 사용하여 엔드포인트를 호출하려면 다음 명령을 실행합니다. 리전 및 엔드포인트 이름을 엔드포인트의 리전 및 SageMaker AI 엔드포인트 이름으로 바꿔야 합니다. 이 정보는 `kubectl describe`의 출력에서 얻을 수 있습니다.

```
# Invoke the endpoint with mock input data.
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name <endpoint name> \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
```

예를 들어 리전이 `us-east-2`이고 엔드포인트 구성 이름이 `host-xgboost-f56b6b280d7511ea824b129926example`인 경우 다음 명령으로 엔드포인트를 호출합니다.

```
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
4.95847082138
```

여기 `4.95847082138`은 모의 데이터에 대한 모델의 예측입니다.

### 호스팅 배포 업데이트
<a name="update-hostingdeployment"></a>

1. 호스팅 배포가 `InService`상태가 되면 업데이트할 수 있습니다. 호스팅 배포가 서비스되려면 약 10분 정도 걸릴 수 있습니다. 다음 명령을 사용하여 `InService`상태인지 확인합니다.

   ```
   kubectl get hostingdeployments
   ```

1. 호스팅 배포는 `InService`상태가 되기 전에 업데이트될 수 있습니다. 운영자는 업데이트를 적용하기 전에 SageMaker AI 엔드포인트가 `InService`가 될 때까지 기다립니다.

   업데이트를 적용하려면 `hosting.yaml`파일을 수정합니다. 예를 들어 다음과 같이 `initialInstanceCount`필드를 1에서 2로 변경합니다.

   ```
   apiVersion: sagemaker.aws.amazon.com/v1
   kind: HostingDeployment
   metadata:
     name: host-xgboost
   spec:
       region: us-east-2
       productionVariants:
           - variantName: all-traffic
             modelName: xgboost-model
             initialInstanceCount: 2
             instanceType: ml.c5.large
       models:
           - name: xgboost-model
             executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
             primaryContainer: xgboost
             containers:
               - xgboost
       containers:
           - containerHostname: xgboost
             modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. 파일을 저장한 다음 다음과 같이 `kubectl`을 사용하여 업데이트를 적용합니다. 그러면 `InService`상태에서 `ReconcilingEndpoint`상태로 변한 뒤 `Updating`상태로 변하는 것을 확인할 수 있습니다.

   ```
   $ kubectl apply -f hosting.yaml
   hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured
   
   $ kubectl get hostingdeployments
   NAME           STATUS                SAGEMAKER-ENDPOINT-NAME
   host-xgboost   ReconcilingEndpoint   host-xgboost-def0e83e0d5f11eaaa450a350abcdef
   
   $ kubectl get hostingdeployments
   NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
   host-xgboost   Updating   host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
   ```

SageMaker AI는 모델과 함께 새 인스턴스 세트를 배포하고, 새 인스턴스를 사용하도록 트래픽을 전환하고, 이전 인스턴스를 비웁니다. 이 프로세스가 시작되면 바로 `Updating`상태가 됩니다. 업데이트가 완료되면 엔드포인트는 `InService`가 됩니다. 이 프로세스에는 10분 정도 걸립니다.

### 호스팅 배포 삭제
<a name="delete-the-hostingdeployment"></a>

1. 다음 명령으로 `kubectl`을 사용하여 호스팅 배포를 삭제합니다.

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

   출력은 다음과 같아야 합니다.

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. 호스팅 배포가 삭제되었는지 확인하려면 다음 명령을 사용합니다.

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

삭제된 엔드포인트에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다.

## 처리 작업 연산자
<a name="kubernetes-processing-job-operator"></a>

처리 작업 연산자는 Amazon SageMaker 처리 작업을 시작하는 데 사용됩니다. SageMaker Processing 작업에 대한 자세한 내용은 [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)을 참조하세요.

**Topics**
+ [YAML 파일을 사용하여 처리 작업 생성](#kubernetes-processing-job-yaml)
+ [처리 작업 나열](#kubernetes-processing-job-list)
+ [처리 작업 설명](#kubernetes-processing-job-description)
+ [처리 작업 삭제](#kubernetes-processing-job-delete)

### YAML 파일을 사용하여 처리 작업 생성
<a name="kubernetes-processing-job-yaml"></a>

다음 단계에 따라 YAML 파일을 사용하여 Amazon SageMaker 처리 작업을 생성합니다.

1. `kmeans_preprocessing.py` 사전 처리 스크립트를 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. Amazon Simple Storage Service(S3) 버킷 중 하나에서 `mnist_kmeans_example/processing_code`폴더를 생성하고 스크립트를 폴더에 업로드합니다.

1. `kmeans-mnist-processingjob.yaml` 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. YAML 파일을 편집하여 `sagemaker-execution-role`을 지정하고 `amzn-s3-demo-bucket`의 모든 인스턴스를 S3 버킷으로 대체합니다.

   ```
   ...
   metadata:
     name: kmeans-mnist-processing
   ...
     roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role>
     ...
     processingOutputConfig:
       outputs:
         ...
             s3Output:
               s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/
     ...
     processingInputs:
       ...
           s3Input:
             s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
   ```

   SageMaker AI가 사용자를 대신하여 S3 버킷, Amazon CloudWatch 및 기타 서비스에 액세스할 수 있으려면 `sagemaker-execution-role`에 권한이 있어야 합니다. 실행 역할 생성에 대한 자세한 내용은 [SageMaker AI Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)을 참조하세요.

1. 다음 명령 중 하나를 사용하여 YAML 파일을 적용합니다.

   클러스터 범위 설치의 경우:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

   네임스페이스 범위 설치의 경우:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>
   ```

### 처리 작업 나열
<a name="kubernetes-processing-job-list"></a>

다음 명령 중 하나로 처리 작업 연산자를 사용하여 생성된 모든 작업을 나열합니다. `SAGEMAKER-JOB-NAME `은 YAML 파일의 `metadata`섹션에서 가져옵니다.

클러스터 범위 설치의 경우:

```
kubectl get ProcessingJob kmeans-mnist-processing
```

네임스페이스 범위 설치의 경우:

```
kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing
```

출력은 다음과 비슷한 형태가 됩니다.

```
NAME                    STATUS     CREATION-TIME        SAGEMAKER-JOB-NAME
kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
```

출력에는 상태와 상관없이 모든 작업이 나열됩니다. 목록에서 작업을 제거하려면 [처리 작업 삭제](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete)를 참조하세요.

**처리 상태 처리**
+ `SynchronizingK8sJobWithSageMaker` – 작업이 먼저 클러스터에 제출됩니다. 연산자가 요청을 받았으며 처리 작업을 생성할 준비를 하고 있습니다.
+ `Reconciling` – 연산자가 다른 오류와 함께 일시적 오류를 초기화하거나 복구 중입니다. 처리 작업이 이 상태로 유지되는 경우 `kubectl``describe`명령을 사용하여 `Additional`필드에서 이유를 확인합니다.
+ `InProgress | Completed | Failed | Stopping | Stopped` – SageMaker Processing 작업 상태입니다. 자세한 내용은 [처리 작업 설명](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus)을 참조하세요.
+ `Error` – 연산자는 조정을 통해 복구할 수 없습니다.

완료, 중지 또는 실패한 작업에는 SageMaker AI 리소스에 대한 추가 요금이 부과되지 않습니다.

### 처리 작업 설명
<a name="kubernetes-processing-job-description"></a>

다음 명령 중 하나를 사용하여 처리 작업에 대한 자세한 내용을 볼 수 있습니다. 이러한 명령은 일반적으로 문제를 디버깅하거나 처리 작업의 파라미터를 확인하는 데 사용됩니다.

클러스터 범위 설치의 경우:

```
kubectl describe processingjob kmeans-mnist-processing
```

네임스페이스 범위 설치의 경우:

```
kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>
```

처리 작업의 출력은 다음과 비슷한 형태가 됩니다.

```
$ kubectl describe ProcessingJob kmeans-mnist-processing
Name:         kmeans-mnist-processing
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         ProcessingJob
Metadata:
  Creation Timestamp:  2020-09-22T21:13:25Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21746658
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing
  UID:               7410ed52-fd18-11ea-b19a-165ae9f9e385
Spec:
  App Specification:
    Container Entrypoint:
      python
      /opt/ml/processing/code/kmeans_preprocessing.py
    Image Uri:  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04
  Environment:
    Name:   MYVAR
    Value:  my_value
    Name:   MYVAR2
    Value:  my_value2
  Network Config:
  Processing Inputs:
    Input Name:  mnist_tar
    s3Input:
      Local Path:   /opt/ml/processing/input
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz
    Input Name:     source_code
    s3Input:
      Local Path:   /opt/ml/processing/code
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
  Processing Output Config:
    Outputs:
      Output Name:  train_data
      s3Output:
        Local Path:    /opt/ml/processing/output_train/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     test_data
      s3Output:
        Local Path:    /opt/ml/processing/output_test/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     valid_data
      s3Output:
        Local Path:    /opt/ml/processing/output_valid/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
  Processing Resources:
    Cluster Config:
      Instance Count:     1
      Instance Type:      ml.m5.xlarge
      Volume Size In GB:  20
  Region:                 us-west-2
  Role Arn:               arn:aws:iam::<acct-id>:role/m-sagemaker-role
  Stopping Condition:
    Max Runtime In Seconds:  1800
  Tags:
    Key:    tagKey
    Value:  tagValue
Status:
  Cloud Watch Log URL:             https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix
  Last Check Time:                 2020-09-22T21:14:29Z
  Processing Job Status:           InProgress
  Sage Maker Processing Job Name:  kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
Events:                            <none>
```

### 처리 작업 삭제
<a name="kubernetes-processing-job-delete"></a>

처리 작업을 삭제하면 SageMaker Processing 작업이 Kubernetes에서 제거되지만 SageMaker AI에서는 작업이 삭제되지 않습니다. SageMaker AI의 작업 상태가 `InProgress`인 경우 작업이 중지됩니다. 중지된 처리 작업에는 SageMaker AI 리소스에 대한 요금이 부과되지 않습니다. 다음 명령 중 하나를 사용하여 처리 작업을 삭제합니다.

클러스터 범위 설치의 경우:

```
kubectl delete processingjob kmeans-mnist-processing
```

네임스페이스 범위 설치의 경우:

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

처리 작업의 출력은 다음과 비슷한 형태가 됩니다.

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**참고**  
SageMaker AI는 처리 작업을 삭제하지 않습니다. 중지된 작업은 SageMaker AI 콘솔에 계속 표시됩니다. `delete` 명령이 SageMaker AI에서 리소스를 정리하는 데 몇 분 정도 걸립니다.

## 호스팅 오토 스케일링 정책(HAP) 연산자
<a name="kubernetes-hap-operator"></a>

호스팅 오토 스케일링 정책(HAP) 연산자는 리소스 ID 목록을 입력으로 받아 각 리소스에 동일한 정책을 적용합니다. 각 리소스 ID는 엔드포인트 이름과 변형 이름의 조합입니다. HAP 연산자는 두 단계를 수행합니다.리소스 ID를 등록한 다음 각 리소스 ID에 조정 정책을 적용합니다. `Delete`는 두 작업을 모두 취소합니다. HAP를 기존 SageMaker AI 엔드포인트에 적용하거나 [HostingDeployment 운영자](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment)를 사용하여 새 SageMaker AI 엔드포인트를 생성할 수 있습니다. [Application Autoscaling Policy 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html)에서 SageMaker AI 오토 스케일링에 대한 자세한 내용을 읽을 수 있습니다.

**참고**  
`kubectl` 명령에서 `hostingautoscalingpolicy`대신 짧은 형식인 `hap`을 사용할 수 있습니다.

**Topics**
+ [YAML 파일을 사용하여 호스팅 오토 스케일링 정책 생성](#kubernetes-hap-job-yaml)
+ [호스팅 오토 스케일링 정책 나열](#kubernetes-hap-list)
+ [호스팅 오토 스케일링 정책 설명](#kubernetes-hap-describe)
+ [호스팅 오토 스케일링 정책 업데이트](#kubernetes-hap-update)
+ [호스팅 오토 스케일링 정책 삭제](#kubernetes-hap-delete)
+ [호스팅 오토 스케일링 정책이 있는 엔드포인트 업데이트 또는 삭제](#kubernetes-hap-update-delete-endpoint)

### YAML 파일을 사용하여 호스팅 오토 스케일링 정책 생성
<a name="kubernetes-hap-job-yaml"></a>

YAML 파일을 사용하여 사전 정의된 지표 또는 사용자 지정 지표를 하나 또는 여러 SageMaker AI 엔드포인트에 적용하는 HostingAutoscalingPolicy(HAP)를 만들 수 있습니다.

Amazon SageMaker AI는 변형에 오토 스케일링을 적용하려면 특정 값이 필요합니다. 이러한 값이 YAML 사양에 지정되지 않은 경우 HAP 연산자는 다음 기본값을 적용합니다.

```
# Do not change
Namespace                    = "sagemaker"
# Do not change
ScalableDimension            = "sagemaker:variant:DesiredInstanceCount"
# Only one supported
PolicyType                   = "TargetTrackingScaling"
# This is the default policy name but can be changed to apply a custom policy
DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
```

다음 샘플을 사용하여 하나 이상의 엔드포인트에 사전 정의된 지표 또는 사용자 지정 지표를 적용하는 HAP를 만들 수 있습니다.

#### 샘플 1: 사전 정의된 지표를 단일 엔드포인트 변형에 적용
<a name="kubernetes-hap-predefined-metric"></a>

1. 다음 명령을 사용하여 사전 정의된 지표용 샘플 YAML 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. YAML 파일을 편집하여 `endpointName`, `variantName`및 `Region`을 지정합니다.

1. 다음 명령 중 하나를 사용하여 사전 정의된 지표를 단일 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 적용합니다.

   클러스터 범위 설치의 경우:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   네임스페이스 범위 설치의 경우:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### 샘플 2: 사용자 지정 지표를 단일 엔드포인트 변형에 적용
<a name="kubernetes-hap-custom-metric"></a>

1. 다음 명령을 사용하여 사용자 지정 지표용 샘플 YAML 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. YAML 파일을 편집하여 `endpointName`, `variantName`및 `Region`을 지정합니다.

1. 다음 명령 중 하나를 사용하여 사용자 지정 지표를 권장되는 `SageMakerVariantInvocationsPerInstance`대신 단일 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 적용합니다.
**참고**  
Amazon SageMaker AI는 YAML 사양의 유효성을 검사하지 않습니다.

   클러스터 범위 설치의 경우:

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

   네임스페이스 범위 설치의 경우:

   ```
   kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>
   ```

#### 샘플 3: 스케일링 정책을 여러 엔드포인트 및 변형에 적용
<a name="kubernetes-hap-scaling-policy"></a>

HAP 연산자를 사용하여 여러 리소스 ID에 동일한 스케일링 정책을 적용할 수 있습니다. 각 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 대해 별도의 `scaling_policy`요청이 생성됩니다.

1. 다음 명령을 사용하여 사전 정의된 지표용 샘플 YAML 파일을 다운로드합니다.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. YAML 파일을 편집하여 `Region`및 여러 `endpointName`및 `variantName`값을 지정합니다.

1. 다음 명령 중 하나를 사용하여 사전 정의된 지표를 여러 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 적용합니다.

   클러스터 범위 설치의 경우:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   네임스페이스 범위 설치의 경우:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### 여러 엔드포인트 및 변형에 대한 호스팅 오토 스케일링 정책 고려 사항
<a name="kubernetes-hap-scaling-considerations"></a>

여러 리소스 ID 사용 시 다음 사항을 고려하세요.
+ 여러 리소스 ID에 단일 정책을 적용하는 경우 리소스 ID당 정책 ARN이 하나씩 생성됩니다. 5개의 엔드포인트에는 5개의 정책 ARN이 있습니다. 정책에서 `describe`명령을 실행하면 응답이 하나의 작업으로 표시되며 단일 작업 상태만 포함됩니다.
+ 사용자 지정 지표를 여러 리소스 ID에 적용하는 경우 모든 리소스 ID(변형) 값에 동일한 차원 또는 값이 사용됩니다. 예를 들어 인스턴스 1-5에 고객 지표를 적용하고 엔드포인트 변형 차원이 변형 1에 매핑된 경우, 변형 1이 지표를 초과하면 모 든 엔드포인트가 확대 또는 축소됩니다.
+ HAP 연산자는 리소스 ID 목록 업데이트를 지원합니다. 리소스 ID를 사양에 수정, 추가 또는 삭제하면 오토 스케일링 정책이 이전 변형 목록에서 제거되고 새로 지정된 리소스 ID 조합에 적용됩니다. [https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe) 명령을 사용하여 정책이 현재 적용되는 리소스 ID를 나열합니다.

### 호스팅 오토 스케일링 정책 나열
<a name="kubernetes-hap-list"></a>

다음 명령 중 하나로 HAP 연산자를 사용하여 생성된 모든 호스팅 오토 스케일링 정책(HAP)을 나열합니다.

클러스터 범위 설치의 경우:

```
kubectl get hap
```

네임스페이스 범위 설치의 경우:

```
kubectl get hap -n <NAMESPACE>
```

출력은 다음과 비슷한 형태가 됩니다.

```
NAME             STATUS   CREATION-TIME
hap-predefined   Created  2021-07-13T21:32:21Z
```

다음 명령을 사용하여 호스팅 오토 스케일링 정책(HAP)의 상태를 확인합니다.

```
kubectl get hap <job-name>
```

다음 값 중 하나가 반환됩니다.
+ `Reconciling` – 특정 유형의 오류에는 상태가 `Error`대신 `Reconciling`상태로 표시됩니다. 서버 측 오류와 `Creating`또는 `Updating`상태의 엔드포인트를 예로 들 수 있습니다. 세부 정보는 상태 또는 연산자 로그의 `Additional`필드를 확인하세요.
+ `Created`
+ `Error`

**정책을 적용한 오토 스케일링 엔드포인트를 보려면**

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

1. 왼쪽 패널에서 **추론**을 확장합니다.

1. **엔드포인트**를 선택합니다.

1. 관심 엔드포인트의 이름을 선택합니다.

1. **엔드포인트 구성 설정** 섹션으로 스크롤합니다.

### 호스팅 오토 스케일링 정책 설명
<a name="kubernetes-hap-describe"></a>

다음 명령을 사용하여 호스팅 오토 스케일링 정책(HAP)에 대한 자세한 내용을 확인할 수 있습니다. 이러한 명령은 일반적으로 문제를 디버깅하거나 HAP의 리소스 ID(엔드포인트 이름 및 변형 이름 조합)를 확인하는 데 사용됩니다.

```
kubectl describe hap <job-name>
```

### 호스팅 오토 스케일링 정책 업데이트
<a name="kubernetes-hap-update"></a>

호스팅 오토 스케일링 정책(HAP) 연산자가 업데이트를 지원합니다. YAML 사양을 편집하여 값을 변경한 다음 정책을 다시 적용할 수 있습니다. HAP 연산자는 기존 정책을 삭제하고 새 정책을 적용합니다.

### 호스팅 오토 스케일링 정책 삭제
<a name="kubernetes-hap-delete"></a>

다음 명령 중 하나를 사용하여 호스팅 오토 스케일링 정책(HAP)을 삭제합니다.

클러스터 범위 설치의 경우:

```
kubectl delete hap hap-predefined
```

네임스페이스 범위 설치의 경우:

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

이 명령은 스케일링 정책을 삭제하고 Kubernetes에서 스케일링 대상을 등록 취소합니다. 이 명령은 다음 출력을 반환합니다.

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### 호스팅 오토 스케일링 정책이 있는 엔드포인트 업데이트 또는 삭제
<a name="kubernetes-hap-update-delete-endpoint"></a>

호스팅 오토 스케일링 정책(HAP)이 있는 엔드포인트를 업데이트하려면 `kubectl``delete`명령을 사용하여 HAP를 제거하고 엔드포인트를 업데이트한 다음 HAP를 다시 적용합니다.

HAP가 있는 엔드포인트를 삭제하려면 엔드포인트를 삭제하기 전에 `kubectl``delete`명령을 사용하여 HAP를 제거합니다.