추론 파이프라인을 사용하여 실시간으로 예측 실행하기 - 아마존 SageMaker

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

추론 파이프라인을 사용하여 실시간으로 예측 실행하기

추론 파이프라인에서 훈련된 모델을 사용하여 외부 전처리를 수행하지 않고도 실시간 예측을 직접 수행할 수 있습니다. 파이프라인을 구성할 때 SageMaker Amazon에서 이미 사용 가능한 내장 기능 변환기를 사용하도록 선택할 수 있습니다. 또는 scikit-learn 또는 Spark 코드 몇 줄만 사용하여 자체 변환 로직을 구현할 수도 있습니다.

MLeap기계 학습 파이프라인용 직렬화 형식 및 실행 엔진으로, Spark, scikit-learn을 지원하고 파이프라인을 교육하고 이를 Bundle이라는 직렬화된 파이프라인으로 내보내는 데 TensorFlow 사용할 수 있습니다. MLeap Bundles를 Spark로 역직렬화하여 배치 모드 점수를 매기거나 런타임으로 다시 역직렬화하여 실시간 서비스를 지원할 수 있습니다. MLeap API

파이프라인의 컨테이너는 (8080 대신) SAGEMAKER_BIND_TO_PORT 환경 변수에 지정된 포트에서 수신 대기합니다. 추론 파이프라인에서 실행하는 경우 는 이 환경 변수를 컨테이너에 SageMaker 자동으로 제공합니다. 이 환경 변수가 없으면 컨테이너의 수신 포트는 기본적으로 8080 포트 사용으로 설정됩니다. 다음 명령을 사용하면 컨테이너가 이 요구 사항을 준수함을 나타내는 레이블을 Dockerfile에 추가할 수 있습니다.

LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true

컨테이너가 두 번째 포트에서 수신해야 하는 경우에는 SAGEMAKER_SAFE_PORT_RANGE 환경 변수가 지정한 범위 내에서 포트를 선택합니다. 값을 형식의 "XXXX-YYYY" 포함 범위로 지정합니다. 여기서 XXXXYYYY 는 여러 자리 정수입니다. SageMaker 멀티컨테이너 파이프라인에서 컨테이너를 실행할 때 이 값을 자동으로 제공합니다.

참고

SageMaker 내장 알고리즘이 포함된 파이프라인에서 사용자 지정 Docker 이미지를 사용하려면 Amazon Elastic 컨테이너 레지스트리 (AmazonECR) 정책이 필요합니다. Amazon ECR 리포지토리는 이미지를 가져올 SageMaker 권한을 부여해야 합니다. 자세한 내용은 추론 파이프라인에 대한 Amazon ECR 권한 문제 해결 단원을 참조하십시오.

추론 파이프라인 엔드포인트 생성 및 배포

다음 코드는 SparkML로 실시간 추론 파이프라인 모델을 만들고 배포하고 XGBoost 를 사용하여 모델을 직렬로 생성합니다. SageMaker SDK

from sagemaker.model import Model from sagemaker.pipeline_model import PipelineModel from sagemaker.sparkml.model import SparkMLModel sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz') sparkml_model = SparkMLModel(model_data=sparkml_data) xgb_model = Model(model_data=xgb_model.model_data, image=training_image) model_name = 'serial-inference-' + timestamp_prefix endpoint_name = 'serial-inference-ep-' + timestamp_prefix sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model]) sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

추론 파이프라인 엔드포인트에서 실시간 추론 요청

다음 예제는 추론 엔드포인트를 호출하고 요청 페이로드를 형식으로 전달하여 실시간 예측을 수행하는 방법을 보여줍니다. JSON

import sagemaker from sagemaker.predictor import json_serializer, json_deserializer, Predictor payload = { "input": [ { "name": "Pclass", "type": "float", "val": "1.0" }, { "name": "Embarked", "type": "string", "val": "Q" }, { "name": "Age", "type": "double", "val": "48.0" }, { "name": "Fare", "type": "double", "val": "100.67" }, { "name": "SibSp", "type": "double", "val": "1.0" }, { "name": "Sex", "type": "string", "val": "male" } ], "output": { "name": "features", "type": "double", "struct": "vector" } } predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer, content_type='text/csv', accept='application/json' print(predictor.predict(payload))

predictor.predict(payload)에서 얻은 응답은 모델의 추론 결과입니다.

실시간 추론 파이프라인 예제

엔드포인트를 배포하고, 추론 요청을 실행한 다음, 응답을 역직렬화하는 방법을 보여주는 SKLearn 예측자를 사용하여 이 예제 노트북을 실행할 수 있습니다. Amazon SageMaker 예제 GitHub 리포지토리에서 이 노트북과 더 많은 예제를 찾을 수 있습니다.