기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모델 생성
다음 예에서는 AWS SDK for Python (Boto3)을 사용하여 모델을 생성하는 방법을 보여 줍니다. 처음 몇 줄은 다음을 정의합니다.
sagemaker_client
: AWS 서비스에 대한 요청을 쉽게 보내고 받을 수 있는 하위 수준 SageMaker 클라이언트 객체입니다.sagemaker_role
: Amazon 리소스 이름() 역할을 SageMaker IAM 가진 문자열 변수입니다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에 저장된 사전 훈련된 모델의 위치를 지정합니다. 이 예제에서는 라는 사전 훈련된 XGBoost 모델을 사용합니다demo-xgboost-model.tar.gz
. 전체 Amazon S3URI는 문자열 변수 에 저장됩니다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')
를 SageMaker 사용하여 Amazon에서 모델을 생성합니다CreateModel
. 다음을 지정합니다.
ModelName
: 모델 이름(이 예제에서는model_name
이라는 문자열 변수로 저장됨).ExecutionRoleArn
: ML 컴퓨팅 인스턴스에 배포하거나 배치 변환 작업을 위해 모델 아티팩트 및 Docker 이미지에 액세스하기 위해 Amazon이 수임할 수 있는 IAM 역할의 Amazon SageMaker 리소스 이름(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 파라미터 목록은 참조 가이드의 CreateModel
설명을 SageMaker API 참조하세요.
SageMaker 제공된 컨테이너를 사용하는 경우 이 단계에서 환경 변수를 설정하여 모델 서버 제한 시간 및 페이로드 크기를 기본값에서 프레임워크 지원 최대값으로 늘릴 수 있습니다. 이러한 변수를 명시적으로 설정하지 않으면 비동기 추론이 지원하는 최대 제한 시간 및 페이로드 크기를 활용하지 못할 수 있습니다. 다음 예제에서는 를 기반으로 PyTorch 추론 컨테이너의 환경 변수를 설정하는 방법을 보여줍니다 TorchServe.
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' 'TS_MAX_RESPONSE_SIZE': '100000000' 'TS_DEFAULT_RESPONSE_TIMEOUT': '1000' |
PyTorch 1.4( 기준MMS) |
'MMS_MAX_REQUEST_SIZE': '1000000000' 'MMS_MAX_RESPONSE_SIZE': '1000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT': '900' |
HuggingFace 추론 컨테이너( 기준MMS) |
'MMS_MAX_REQUEST_SIZE': '2000000000' 'MMS_MAX_RESPONSE_SIZE': '2000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT': '900' |