-
SageMaker 사이클 및 SDK 2.x 사용법MLOps/AWS 2024. 2. 29. 17:33
AWS summit - 해당 영상을 참조함
SageMaker
- 데이터: S3
- 알고리즘: ECR에 이미지(컨테이너?) 로 패키징 되어있음
🟡Training Request
- Sagemaker 관리 영역으로 데이터, 트레이닝 알고리즘 가져옴 → 파라미터 세팅 → 모델 아티팩트 생성
- 모델 아티팩트는 외부 스토리지로 export
🟡Inference
- 모델 아티팩트, 추론을 위한 라이브러리와 실행 환경이 담긴 컨테이너 필요
- (EX) 24시간 API 요청을 처리하는 프로세싱을 처리한다면 → EndPoint 형태로 실행
- (EX) 배치 작업으로 추론 후 배치 작업 결과를 파일로 쓴다면 → 추론 작업 후 리소스를 반납하는 형태로 구성
📌위의 구조를 코딩으로 해결한다면?
SDK
- boto 3 sdk와 Sagemaker sdk가 있음
📌 Sagemaker SDK Document: sagemaker.readdocs.io
SageMaker SDK 5가지 핵심 클래스
1. Session
- Sagemaker에 연결하기 위해 object 생성
- 버켓에 접근, 권한, 디폴트 버켓에 파일을 업로드 등
import sagemaker sess = sagemaker.Session() bucket = sess.default_bucket() prefix = 'train_data' role = sagemaker.get_execution_role() inputs = sess.upload_data(path='data, bucket = bucket, key_prefix=prefix)
2. Estimator
- 학습에 필요한 설정 정의
from sagemaker.estimator import Estimator #xgboost를 사용하도록 객체 선언 container = image_uris.retrieve('xgboost',boto3.Sesson().region_name,'1.2-1') #도커 컨테이너의 이미지 위치를 가져옴 -> ECR에서 관리되고 있는 위치가 리턴됨 xgb = Estimator(container, role, instance_count = 1, instance_type = 'ml.m4.large', output_path = 's3://{}/{}/output'.format(bucket,prefix)) #Sagemaker에서 학습 실행시 학습 작업마다 컴퓨팅 환경 정의 가능 #병렬 트레이닝시 여러 인스턴스 필요 xgb.set_hyperparameters(max_depth=5, eta=0.2, gamma=4, min_child_weight=6, subsample=0.8, objective='binary:logistic', num_round=100) xgb.fit({'train':s3_input_train,'validation':s3_input_validation}) #트레이닝 데이터 패싱
3. Framework(Tensorflow) : 딥러닝 프레임워크 사용시
from sagemaker.tensorflow import TensorFlow estimator = TensorFlow(entry_point='mnist.py', role=role, instance_count=2, instance_type='ml.p3.2xlarge', framework_version='1.15.2', py_version='py3') #사용자가 정의한 딥러닝 아키텍처를 사용, 환경은 SageMaker가 제공 estimator_fit({'training':inputs}) #데이터 위치
4. Framework(PyTorch) : 딥러닝 프레임워크 사용시
- 거의 비슷
from sagemaker.pythorch import PyTorch estimator = PyTorch(entry_point='mnist.py', role=role, instance_count=2, instance_type='ml.p3.2xlarge', framework_version='1.4.0', hyperparameters={'epoches':6,'backend='gloo'}) #사용자가 정의한 딥러닝 아키텍처를 사용, 환경은 SageMaker가 제공 estimator_fit({'training':inputs}) #데이터 위치
4. Model (추론 관련)
- 트레이닝이 외부에서 된 모델을 가지고 와서 SageMaker에서 추론만 시행할시
from sagemaker.tensorflow import TensorFlowModel #학습이 완료된 모델 아티팩트 #(트레이닝이 외부에서 된 모델을 가지고 와서 SageMaker에서 추론만 시행할시) model = TensorFlowModel(model_data='s3://mybucket/model.tar.gz',role='MyRole') #배포 시 인스턴스 타입과 개수를 다시 지정 predictor = model.deploy(initial_instance_count=1, instance_type='ml.c5,xlarge') #--> Returns predictor object
5. Predictor
- 추론 작업을 위해 사용하는 객체
- serialize: 추론 데이터의 직렬화
from sagemaker.serializers import CSVSerializer xgb_predictor = xgb.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge') #--> Returns predictor object xgb_predictor.serializer = CSVSerializer() predictions = xgb_predictor.predict(inf_data).decode('utf-8') #predict(추론 데이터)-> 예측 결과 리턴
'MLOps > AWS' 카테고리의 다른 글
[Sagemaker] Introduction (0) 2024.05.19 SageMaker를 활용한 빅데이터 처리 및 훈련, 배포, 추론 수행 (2) 2024.02.27 ECR (0) 2024.02.27 AWS CLI 사용 & 파이썬 SDK boto 설치 (0) 2024.02.27