모델 생성 - Amazon SageMaker

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

모델 생성

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