

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

# 모델 생성
<a name="async-inference-create-endpoint-create-model"></a>

다음 예에서는 AWS SDK for Python (Boto3)을 사용하여 모델을 생성하는 방법을 보여 줍니다. 처음 몇 줄은 다음을 정의합니다.
+ `sagemaker_client`: AWS 서비스에 대한 요청을 쉽게 보내고 받을 수 있는 하위 수준 SageMaker AI 클라이언트 객체입니다.
+ `sagemaker_role`: SageMaker AI IAM 역할의 Amazon 리소스 이름(ARN)이 있는 문자열 변수입니다.
+ `aws_region`: AWS 리전 이름을 가진 문자열 변수입니다.

```
import boto3

# Specify your AWS Region
aws_region={{'<aws_region>'}}

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Role to give SageMaker permission to access AWS services.
sagemaker_role= "arn:aws:iam::{{<account>:role/*}}"
```

다음으로 Amazon S3에 저장된 사전 훈련된 모델의 위치를 지정합니다. 이 예에서는 `demo-xgboost-model.tar.gz`라는 사전 학습된 XGBoost 모델을 사용합니다. 전체 Amazon S3 URI는 문자열 변수 `model_url`에 저장됩니다.

```
#Create a variable w/ the model S3 URI
s3_bucket = {{'<your-bucket-name>'}} # Provide the name of your S3 bucket
bucket_prefix='saved_models'
model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz"

#Specify S3 bucket w/ model
model_url = f"s3://{s3_bucket}/{model_s3_key}"
```

기본 컨테이너를 지정합니다. 기본 컨테이너의 경우 추론 코드, 아티팩트(이전 훈련에서 얻은), 예측을 위해 모델을 배포할 때 추론 코드가 사용하는 사용자 지정 환경 맵을 포함하는 도커 이미지를 지정합니다.

 이 예에서는 XGBoost 내장 알고리즘 컨테이너 이미지를 지정합니다.

```
from sagemaker import image_uris

# Specify an AWS container image. 
container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')
```

`CreateModel`로 Amazon SageMaker AI 모델을 만듭니다. 다음을 지정합니다.
+ `ModelName`: 모델 이름(이 예제에서는 `model_name`이라는 문자열 변수로 저장됨).
+ `ExecutionRoleArn`: Amazon SageMaker AI에서 ML 컴퓨팅 인스턴스 또는 배치 변환 작업에 대한 배포의 모델 아티팩트 및 Docker 이미지에 액세스하기 위해 수임할 수 있는 IAM 역할의 Amazon 리소스 이름(ARN)입니다.
+ `PrimaryContainer`: 모델이 예측을 위해 배포될 때 추론 코드에서 사용하는 추론 코드, 연결된 아티팩트 및 사용자 지정 환경 맵을 포함하는 기본 도커 이미지의 위치입니다.

```
model_name = {{'<The_name_of_the_model>'}}

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
    })
```

API 파라미터의 전체 목록은 SageMaker API 참조 안내서의 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) 설명을 참조하세요.

SageMaker AI에서 제공하는 컨테이너를 사용하는 경우 이 단계에서 환경 변수를 설정하여 모델 서버 제한 시간 및 페이로드 크기를 기본값에서 프레임워크 지원 최대값으로 늘릴 수 있습니다. 이러한 변수를 명시적으로 설정하지 않으면 비동기 추론이 지원하는 최대 제한 시간 및 페이로드 크기를 활용하지 못할 수 있습니다. 다음 예제는 TorchServe를 기반으로 PyTorch 추론 컨테이너의 환경 변수를 설정하는 방법을 보여줍니다.

```
model_name = {{'<The_name_of_the_model>'}}

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
        'Environment': {
            'TS_MAX_REQUEST_SIZE': '100000000',
            'TS_MAX_RESPONSE_SIZE': '100000000',
            'TS_DEFAULT_RESPONSE_TIMEOUT': '1000'
        },
    })
```

엔드포인트 생성을 완료한 후에는 `inference.py` 스크립트에서 환경 변수를 출력하여 환경 변수를 올바르게 설정했는지 테스트해야 합니다. 다음 표에는 기본값을 변경하도록 설정할 수 있는 여러 프레임워크의 환경 변수가 나열되어 있습니다.


| 프레임워크 | 환경 변수 | 
| --- | --- | 
| PyTorch 1.8(TorchServe 기반) | 'TS\_MAX\_REQUEST\_SIZE': '100000000'<br />'TS\_MAX\_RESPONSE\_SIZE': '100000000'<br />'TS\_DEFAULT\_RESPONSE\_TIMEOUT': '1000' | 
| PyTorch 1.4(MMS 기반) | 'MMS\_MAX\_REQUEST\_SIZE': '1000000000'<br />'MMS\_MAX\_RESPONSE\_SIZE': '1000000000'<br />'MMS\_DEFAULT\_RESPONSE\_TIMEOUT': '900' | 
| HuggingFace 추론 컨테이너(MMS 기반) | 'MMS\_MAX\_REQUEST\_SIZE': '2000000000'<br />'MMS\_MAX\_RESPONSE\_SIZE': '2000000000'<br />'MMS\_DEFAULT\_RESPONSE\_TIMEOUT': '900' | 