

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

# 추론 파이프라인을 사용하여 실시간으로 예측 실행하기
<a name="inference-pipeline-real-time"></a>

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

기계 학습 파이프라인을 위한 직렬화 형식 지정 및 실행 엔진인 [MLeap](https://combust.github.io/mleap-docs/)은, 파이프라인을 훈련하고 훈련된 파이프라인을 MLeap 번들이라는 직렬화된 파이프라인으로 내보내기 위해 Spark, Scikit-learn 및 TensorFlow를 지원합니다. 이러한 번들은 배치 모드 채점을 위해 Spark로, 실시간 API 서비스 강화를 위해 MLeap 런타임으로 다시 역직렬화할 수 있습니다.

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

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

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

**참고**  
[SageMaker AI 기본 제공 알고리즘](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html)이 포함된 파이프라인에서 사용자 지정 Docker 이미지를 사용하려면 [Amazon Elastic Container Registry(Amazon ECR) 정책](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)이 필요합니다. Amazon ECR 리포지토리가 SageMaker AI에 이미지를 풀링할 수 있는 권한을 부여해야 합니다. 자세한 내용은 [추론 파이프라인에 대한 Amazon ECR 권한 문제 해결](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions) 단원을 참조하십시오.

## 추론 파이프라인 엔드포인트 생성 및 배포
<a name="inference-pipeline-real-time-sdk"></a>

다음 코드는 SageMaker AI SDK를 사용하여 연속으로 SparkML 및 XGBoost 모델을 가지고 실시간 추론 파이프라인 모델을 만들고 배포합니다.

```
from sagemaker.serve import ModelBuilder

sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix

model_builder = ModelBuilder(
    s3_model_data_url=sparkml_data,
    role_arn=role,
    instance_type='ml.c4.xlarge',
    pipeline_models=[sparkml_data, xgb_model.s3_model_data_url],
)
endpoint = model_builder.build().deploy(
    initial_instance_count=1,
    instance_type='ml.c4.xlarge',
    endpoint_name=endpoint_name
)
```

## 추론 파이프라인 엔드포인트에서 실시간 추론 요청
<a name="inference-pipeline-endpoint-request"></a>

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

```
import json
from sagemaker.core.resources import Endpoint

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"
        }
    }

endpoint = Endpoint(endpoint_name=endpoint_name)

response = endpoint.invoke(body=json.dumps(payload), content_type='application/json', accept='application/json')
print(response)
```

얻는 응답은 모델의 추론 결과입니다.

## 실시간 추론 파이프라인 예제
<a name="inference-pipeline-example"></a>

엔드포인트를 배포하고 추론 요청을 실행한 다음 응답을 역직렬화하는 방법을 보여주는 [SKLearn 예측기를 사용하여 노트북 예제](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb)를 실행할 수 있습니다. [Amazon SageMaker 예제 GitHub 리포지토리](https://github.com/awslabs/amazon-sagemaker-examples)에서 이 노트북과 더 많은 예제를 찾을 수 있습니다.