Amazon SageMaker를 사용한 S3 데이터를 활용한 첫 ML 모델 훈련
카테고리
데이터 과학/AI
서브카테고리
머신러닝
대상자
AI 및 머신러닝 개발자, 연구자, 학생
- 중간~고급 수준: AWS 환경 설정, SageMaker SDK 사용, 모델 훈련 및 배포 기술 필요
핵심 요약
- Amazon SageMaker를 사용하여 S3 버킷에 저장된 데이터로 ML 모델을 훈련하는 단계적 가이드 제공
- S3 URI(
s3://my-ml-bucket/datasets/my-data.csv
) 설정과 IAM 역할 권한 부여가 필수적인 인프라 구성 요소 - XGBoost 알고리즘을 활용한 모델 훈련 및 배포 과정에서
sagemaker.estimator.Estimator
및TrainingInput
클래스 사용 - AWS 리소스 정리(
predictor.delete_endpoint()
)를 통한 비용 최소화 전략 강조
섹션별 세부 요약
1. 사전 준비 조건
- AWS 계정과 S3 버킷 생성, IAM 역할 설정
- S3 URI 예시:
s3://my-ml-bucket/datasets/my-data.csv
- IAM 역할 정책 예시:
```json
{"Effect":"Allow","Action":["s3:GetObject","s3:PutObject"],"Resource":"arn:aws:s3:::my-ml-bucket/*"}
```
2. SageMaker 환경 설정
- Notebook 인스턴스 생성 후 Jupyter Notebook 실행
- SageMaker SDK를 사용한 S3 데이터 로드:
```python
import pandas as pd
df = pd.read_csv('s3://my-ml-bucket/datasets/my-data.csv')
```
3. 데이터 전처리 및 분할
- train_test_split을 사용한 데이터 분할:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
```
- CSV 파일로 변환 후 S3에 업로드:
```python
train_data.to_csv('train.csv', index=False)
session.upload_data('train.csv', bucket=bucket, key_prefix='train')
```
4. XGBoost 알고리즘을 통한 모델 훈련
- SageMaker XGBoost 컨테이너 호출:
```python
xgboost_container = sagemaker.image_uris.retrieve("xgboost", session.boto_region_name)
```
- Estimator 설정 및 Hyperparameter 조정:
```python
xgb.set_hyperparameters(objective='binary:logistic', num_round=100)
xgb.fit({'train': TrainingInput(f's3://{bucket}/train/train.csv', content_type='csv')})
```
5. 모델 배포 및 정리
- Endpoints 생성 후 예측 수행:
```python
predictor = xgb.deploy(initial_instance_count=1, instance_type='ml.m5.large')
result = predictor.predict(X_test.to_numpy())
```
- 리소스 정리:
```python
predictor.delete_endpoint()
```
결론
- IAM 역할 권한과 S3 URI 설정을 철저히 확인하여 인프라 구성 오류 방지
- SageMaker의 XGBoost 알고리즘을 활용한 모델 훈련 시
Estimator
및TrainingInput
클래스 사용 권장 - 리소스 정리(
delete_endpoint()
)를 통해 비용 절감 및 프로덕션 환경 최적화 - S3와 SageMaker 통합은 ML 모델 훈련의 확장성과 효율성을 극대화하는 핵심 전략