

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

# Amazon EC2에 모델 배포
<a name="ex1-model-deployment"></a>

예측을 위해서는 Amazon SageMaker AI를 사용하여 모델을 Amazon EC2에 배포하세요.

**Topics**
+ [SageMaker AI 호스팅 서비스에 모델 배포](#ex1-deploy-model)
+ [(선택 사항) SageMaker AI 예측기를 사용하여 호스팅된 엔드포인트 재사용](#ex1-deploy-model-sdk-use-endpoint)
+ [(선택 사항) 배치 변환으로 예측하기](#ex1-batch-transform)

## SageMaker AI 호스팅 서비스에 모델 배포
<a name="ex1-deploy-model"></a>

Amazon SageMaker AI를 사용하여 Amazon EC2를 통해 모델을 호스팅하려면 `xgb_model` 예측기의 `deploy` 메서드를 직접적으로 호출하여 [훈련 작업 생성 및 실행](ex1-train-model.md#ex1-train-model-sdk)에서 훈련한 모델을 배포하세요. `deploy` 메서드를 호출할 때 엔드포인트 호스트에 사용할 EC2 ML 인스턴스의 수와 유형을 지정해야 합니다.

```
import sagemaker
from sagemaker.serializers import CSVSerializer
xgb_predictor=xgb_model.deploy(
    initial_instance_count=1,
    instance_type='ml.t2.medium',
    serializer=CSVSerializer()
)
```
+ `initial_instance_count` (int) – 모델을 배포할 인스턴스 수입니다.
+ `instance_type` (str) – 배포된 모델을 작동할 인스턴스 유형입니다.
+ `serializer` (int) – 다양한 형식(NumPy 배열, 목록, 파일 또는 버퍼)의 입력 데이터를 CSV 형식의 문자열로 직렬화합니다. XGBoost 알고리즘이 CSV 형식의 입력 파일을 허용하기 때문에 이를 사용합니다.

`deploy` 메서드는 배포 가능한 모델을 생성하고 SageMaker AI 호스팅 서비스 엔드포인트를 구성한 다음 엔드포인트를 실행하여 모델을 호스팅합니다. 자세한 내용은 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)에서 [SageMaker AI generic Estimator's deploy class method](https://sagemaker.readthedocs.io/en/stable/estimators.html#sagemaker.estimator.Estimator.deploy)를 참조하세요. `deploy` 메서드에 의해 생성된 엔드포인트의 이름을 검색하려면 다음 코드를 실행하세요.

```
xgb_predictor.endpoint_name
```

그러면 `xgb_predictor`이라는 엔드포인트 이름이 반환되어야 합니다. 엔드포인트 이름의 형식은 `"sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"`입니다. 이 엔드포인트는 ML 인스턴스에서 활성 상태로 유지되며 나중에 종료하지 않는 한 언제든지 즉시 예측을 수행할 수 있습니다. 이 엔드포인트 이름을 복사하고 저장하여 SageMaker Studio 또는 SageMaker AI 노트북 인스턴스의 다른 곳에서 재사용 및 실시간 예측을 수행할 수 있습니다.

**작은 정보**  
Amazon EC2 인스턴스 또는 엣지 디바이스에 배포하기 위해 모델을 컴파일하고 최적화하는 방법에 대해 자세히 알아보려면 [Neo로 모델 컴파일 및 배포](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html)를 참조하세요.

## (선택 사항) SageMaker AI 예측기를 사용하여 호스팅된 엔드포인트 재사용
<a name="ex1-deploy-model-sdk-use-endpoint"></a>

모델을 엔드포인트에 배포한 후 엔드포인트를 페어링하여 새 SageMaker AI 예측기를 설정하고 다른 노트북에서 지속적으로 실시간 예측을 수행할 수 있습니다. 다음 예시 코드는 SageMaker AI 예측기 클래스를 사용하여 동일한 엔드포인트를 사용하여 새 예측기 객체를 설정하는 방법을 보여줍니다. `xgb_predictor`에 사용한 엔드포인트 이름을 다시 사용하세요.

```
import sagemaker
xgb_predictor_reuse=sagemaker.predictor.Predictor(
    endpoint_name="sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS",
    sagemaker_session=sagemaker.Session(),
    serializer=sagemaker.serializers.CSVSerializer()
)
```

`xgb_predictor_reuse` 예측자는 원본 `xgb_predictor`과 정확히 동일하게 동작합니다. 자세한 내용은 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)의 [SageMaker AI Predictor](https://sagemaker.readthedocs.io/en/stable/predictors.html#sagemaker.predictor.RealTimePredictor)를 참조하세요.

## (선택 사항) 배치 변환으로 예측하기
<a name="ex1-batch-transform"></a>

프로덕션 환경에서 엔드포인트를 호스팅하는 대신 SageMaker AI 배치 변환을 사용하여 테스트 데이터세트를 예측하는 일회성 배치 추론 작업을 실행할 수 있습니다. 모델 훈련이 완료된 후 예측기를 [SageMaker AI Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html) 클래스를 기반으로 하는 `transformer` 객체로 확장할 수 있습니다. 배치 변환기는 지정된 S3 버킷에서 입력 데이터를 읽고 예측을 수행합니다.

**배치 변환 작업을 생성하려면**

1. 다음 코드를 실행하여 테스트 데이터세트의 특성 열을 CSV 파일로 변환하고 S3 버킷에 업로드합니다.

   ```
   X_test.to_csv('test.csv', index=False, header=False)
   
   boto3.Session().resource('s3').Bucket(bucket).Object(
   os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
   ```

1. 배치 변환 작업에 대한 입력 및 출력의 S3 버킷 URI를 다음과 같이 지정합니다.

   ```
   # The location of the test dataset
   batch_input = 's3://{}/{}/test'.format(bucket, prefix)
   
   # The location to store the results of the batch transform job
   batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
   ```

1. 배치 변환 작업을 실행할 `instance_count`및 `instance_type`매개변수, 예측 데이터를 저장할 `output_path`등 최소 파라미터 수를 지정하는 변환기 객체를 다음과 같이 생성합니다.

   ```
   transformer = xgb_model.transformer(
       instance_count=1, 
       instance_type='ml.m4.xlarge', 
       output_path=batch_output
   )
   ```

1. 다음과 같이 `transformer`객체의 `transform()`메서드를 실행하여 배치 변환 작업을 시작합니다.

   ```
   transformer.transform(
       data=batch_input, 
       data_type='S3Prefix',
       content_type='text/csv', 
       split_type='Line'
   )
   transformer.wait()
   ```

1. 배치 변환 작업이 완료되면 SageMaker AI는 `batch_output` 경로에 저장된 `test.csv.out` 예측 데이터를 생성하며, 이 데이터는 `s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction` 형식이어야 합니다. 다음을 실행 AWS CLI 하여 배치 변환 작업의 출력 데이터를 다운로드합니다.

   ```
   ! aws s3 cp {batch_output} ./ --recursive
   ```

   이렇게 하면 현재 작업 디렉터리 아래에 `test.csv.out` 파일이 생성됩니다. XGBoost 훈련 작업의 로지스틱 회귀 분석을 기반으로 예측된 부동 값을 확인할 수 있습니다.