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

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

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

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

MLeap기계 학습 파이프라인용 직렬화 형식 및 실행 엔진인 는 Spark, scikit-learn 및 파이프라인 TensorFlow 훈련 및 MLeap 번들이라는 직렬화 파이프라인으로 내보내기를 지원합니다. 배치 모드 스코어링을 위해 번들을 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 Container Registry(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 예제 GitHub 리포지토리 에서 이 노트북과 추가 SageMaker 예제를 찾아보세요.