모델 생성 - Amazon SageMaker AI

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

모델 생성

다음 예에서는 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')

를 사용하여 Amazon SageMaker AI에서 모델을 생성합니다CreateModel. 다음을 지정합니다.

  • 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 참조 안내서의 CreateModel 설명을 참조하세요.

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'

'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'