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

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

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

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

기계 학습 파이프라인용 직렬화 형식 및 실행 엔진인 MLeap은 Spark, scikit-learn을 지원하고, 파이프라인을 교육하고 TensorFlow 이를 MLeap Bundle이라는 직렬화된 파이프라인으로 내보내는 기능을 지원합니다. 이러한 번들은 배치 모드 채점을 위해 Spark로, 실시간 API 서비스 강화를 위해 MLeap 런타임으로 다시 역직렬화할 수 있습니다.

파이프라인의 컨테이너는 (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 레지스트리 (Amazon ECR) 정책이 필요합니다. Amazon ECR 리포지토리는 이미지를 가져올 SageMaker 권한을 부여해야 합니다. 자세한 정보는 추론 파이프라인에 대한 Amazon ECR 권한 문제 해결을 참조하세요.

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

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

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 리포지토리에서 이 노트북과 더 많은 예제를 찾을 수 있습니다.