How to Deploy Machine Learning Models on AWS SageMaker
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

머신러닝 모델을 AWS SageMaker에 배포하는 방법

카테고리

데이터 과학/AI

서브카테고리

머신러닝

대상자

- 대상자: 머신러닝 엔지니어, 데이터 과학자, ML 모델 배포에 관심 있는 개발자

- 난이도: 중급 (SageMaker SDK, AWS 인프라 설정, 모델 배포 경험 필요)

핵심 요약

  • AWS SageMaker를 사용한 모델 배포 과정: .pkl 파일을 .tar.gz로 압축하여 S3에 업로드 → SageMaker Studio에서 inference.py 스크립트 작성 → 모델 배포 및 엔드포인트 생성
  • 핵심 코드/구성 요소: SKLearnModel, model_fn, input_fn, predict_fn, output_fn 함수, invoke_endpoint() API 사용
  • 프론트엔드 통합: AWS Lambda + API Gateway를 통해 SageMaker 엔드포인트와 연결하여 실시간 예측 제공

섹션별 세부 요약

1. 모델 준비 및 S3 설정

- .pkl 모델 파일을 tar.gz로 압축하여 S3 버킷에 업로드

- 예시 코드: joblib.dump(model, 'model.pkl')tarfile.open('model.tar.gz', 'w:gz') 사용

- S3 버킷 생성 방법: AWS Management Console에서 "Create bucket" → 고유한 이름 지정

2. SageMaker 환경 설정

- SageMaker Studio를 통해 JupyterLab 워크스페이스 생성

- IAM 역할 설정: SageMaker가 S3에 접근할 수 있도록 arn:aws:iam::account_id:role/service-role/AmazonSageMaker-ExecutionRole 지정

3. SageMaker Python SDK 설치 및 설정

- !pip install sagemaker 명령어로 SDK 설치

- sagemaker.Session() 사용하여 세션 생성 및 IAM 역할 연결

4. `inference.py` 스크립트 작성

- 모델 로드: joblib.load(f"{model_dir}/model.pkl")

- 입력 전처리: JSON 데이터를 DataFrame으로 변환 (예: input_df = pd.DataFrame([input_data]))

- 예측 및 출력: model.predict(input_data) → 결과를 JSON 형식으로 반환 (json.dumps(result))

5. 모델 배포 및 엔드포인트 생성

- SKLearnModel 클래스 사용: model_uri = 's3://bucket_name/model.tar.gz'

- model.deploy() 호출: instance_type='ml.m5.large'instance_count=1 설정

- 배포 완료 후 SageMaker Studio에서 엔드포인트 URL 확인

6. 모델 테스트 및 프론트엔드 통합

- 테스트 코드: boto3.client('sagemaker-runtime') 사용 → invoke_endpoint() 호출

- AWS Lambda 연동: Python 런타임 사용, lambda_handler(event, context) 함수 정의

- API Gateway 연결: Lambda와 SageMaker 엔드포인트를 통해 프론트엔드에 실시간 예측 제공

결론

  • 핵심 팁: inference.py 스크립트는 모델 예측의 핵심이며, SKLearnModelinvoke_endpoint() API를 사용해 배포 효율성 극대화. Lambda와 API Gateway를 통해 프론트엔드와의 통합을 완성해야 실시간 예측이 가능하다.