ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.