머신러닝 모델을 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
스크립트는 모델 예측의 핵심이며,SKLearnModel
과invoke_endpoint()
API를 사용해 배포 효율성 극대화. Lambda와 API Gateway를 통해 프론트엔드와의 통합을 완성해야 실시간 예측이 가능하다.