5단계: Amazon EC2에 모델 배포 - 아마존 SageMaker

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

5단계: Amazon EC2에 모델 배포

예측을 위해서는 Amazon을 사용하여 Amazon EC2에 모델을 배포하십시오. SageMaker

모델을 호스팅 서비스에 배포하십시오. SageMaker

Amazon을 사용하여 Amazon EC2를 통해 모델을 호스팅하려면 추정기의 deploy xgb_model 메서드를 훈련 작업 생성 및 실행 호출하여 학습한 모델을 배포하십시오. SageMaker 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 호스팅 서비스 엔드포인트를 구성하고, 모델을 호스팅할 엔드포인트를 시작합니다. 자세한 내용은 Amazon SageMaker Python SDK의 SageMaker 일반 추정기의 배포 클래스 메서드를 참조하십시오. deploy 메서드에 의해 생성된 엔드포인트의 이름을 검색하려면 다음 코드를 실행하세요.

xgb_predictor.endpoint_name

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

작은 정보

Amazon EC2 인스턴스 또는 엣지 디바이스에 배포하기 위해 모델을 컴파일하고 최적화하는 방법에 대해 자세히 알아보려면 Neo로 모델 컴파일 및 배포를 참조하세요.

(선택 사항) SageMaker Predictor를 사용하여 호스팅된 엔드포인트를 재사용하십시오.

엔드포인트에 모델을 배포한 후에는 엔드포인트를 페어링하여 새 SageMaker 예측자를 설정하고 다른 노트북에서 지속적으로 실시간 예측을 수행할 수 있습니다. 다음 예제 코드는 SageMaker Predictor 클래스를 사용하여 동일한 엔드포인트를 사용하여 새 예측자 객체를 설정하는 방법을 보여줍니다. 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의 SageMaker 예측자 클래스를 참조하십시오.

(선택 사항) 배치 변환으로 예측하기

프로덕션 환경에서 엔드포인트를 호스팅하는 대신 일회 일괄 추론 작업을 실행하여 배치 변환을 사용하여 테스트 데이터 세트에 대한 예측을 수행할 수 있습니다. SageMaker 모델 학습이 완료되면 Transformer 클래스를 기반으로 하는 transformer 객체로 추정기를 확장할 수 있습니다. SageMaker 배치 변환기는 지정된 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')
  2. 배치 변환 작업에 대한 입력 및 출력의 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)
  3. 배치 변환 작업을 실행할 instance_countinstance_type매개변수, 예측 데이터를 저장할 output_path등 최소 파라미터 수를 지정하는 변환기 객체를 다음과 같이 생성합니다.

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. 다음과 같이 transformer객체의 transform()메서드를 실행하여 배치 변환 작업을 시작합니다.

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. 일괄 변환 작업이 완료되면 batch_output 경로에 저장된 test.csv.out 예측 데이터를 SageMaker 생성합니다. 이 데이터는 다음 형식이어야 합니다. s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction 다음을 AWS CLI 실행하여 일괄 변환 작업의 출력 데이터를 다운로드합니다.

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

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