MLOps/AWS

[Sagemaker] Introduction

입짧은달님 2024. 5. 19. 21:26

https://www.udemy.com/course/aws-sagemaker-complete-course-pytorch-tensorflow/?couponCode=LEADERSALE24B

 

업무상 AWS Sagemaker를 쓸 일이 있어서, Udemy에서 강의를 구매했다.

간단하게 공부하며 정리할 예정이다.

 

내 리스닝 실력 부족 + 선생님의 인도계 억양 콤보로 챗지피티와 함께 학습을 진행하였다,,,😂


배울것: 

- 세이지메이커의 ML 사이클

- DS와 엔지니어에게 필요한, ML를 더 쉽게 적용할 수 있는 방법

- 학습 테크닉(중요): 

1. own docker container를 온프레미스에서 세이지메이커로 가져오기 

2. 내가 만든 알고리즘을 로컬에서 세이지메이커로 가져오기

3. pre-built된 알고리즘 

- Sagemaker 파이프라인 개발

- 학습 스케줄링(주피터 노트북)

 

Sagemaker란?

  • Service used to built to handle ML workflow
  • 개발: 주피터 노트북 개발 환경 제공
  • 학습: 학습 인프라 관리 (데이터 분석, 라벨링, 분산 학습, 자동 튜닝, 훈련 모니터링)
  • 배포: 엔드포인트를 통해 실시간 예측 서비스를 제공, 성능 관리

Sagemaker의 이점

  • s3과의 호환성
  • 계산 리소스
  • 관리, 모니터링 용이
  • End-to-End 모델 개발 환경 제공

Sagemaker Architecture

 

  • S3 Bucket:
    • Training Data: 학습에 사용될 데이터를 저장
    • Model Artifacts: 학습된 모델 아티팩트를 저장
  • Model Training:
    • Training Code: 모델을 학습시키기 위한 코드
    • Helper Code: 학습을 지원하는 추가 코드 (예: 데이터 전처리 코드).
    • Training on ML Compute Instances: ML 컴퓨팅 인스턴스에서 모델을 학습/ 학습 코드와 데이터를 사용하여 모델을 학습하고, 결과 모델 아티팩트를 생성
  • EC2 Container Registry:
    • Training Code Image: 학습 코드를 포함하는 컨테이너 이미지
    • Inference Code Image: 추론 코드를 포함하는 컨테이너 이미지
  • Deployment / Hosting:
    • Inference Code: 추론을 수행하기 위한 코드
    • Helper Code: 추론을 지원하는 추가 코드
    • Deployment on ML Compute Instances: ML 컴퓨팅 인스턴스에서 모델을 호스팅하고 추론 서비스를 제공/학습된 모델을 배포하여 엔드포인트를 생성
  • Endpoint:
    • Client Application: 클라이언트 애플리케이션이 엔드포인트를 통해 추론 요청
    • Inference Response: 엔드포인트가 추론 요청에 대한 응답을 반환

데이터 흐름

  • 데이터 준비: S3 버킷에 학습 데이터를 업로드
  • 모델 학습:
    학습 데이터와 학습 코드를 사용하여 ML 컴퓨팅 인스턴스에서 모델을 학습
    학습된 모델 아티팩트는 S3 버킷에 저장
  • 모델 배포:
    학습된 모델 아티팩트와 추론 코드를 사용하여 ML 컴퓨팅 인스턴스에 모델을 배포
    엔드포인트가 생성되어 클라이언트 애플리케이션이 이를 통해 추론 요청을 보낼 수 있음
  • 추론:
    클라이언트 애플리케이션이 엔드포인트로 데이터를 전송하여 추론 요청을 보냄
    엔드포인트는 추론 결과를 반환


Docker🤔

  • Docker 이미지: 소프트웨어를 컨테이너라는 가상화된 환경에 패키징하는 기술로, 동일한 실행 환경을 보장하고 이동성을 높여줌

 

SageMaker에서의 Docker 이미지 사용 흐름

  • 이미지 준비:
    • 학습 코드 준비: 모델 학습에 필요한 코드를 작성
    • Dockerfile 작성: Dockerfile을 사용하여 필요한 라이브러리, 종속성, 학습 코드를 포함하는 Docker 이미지를 정의
    • Docker 이미지 빌드: Dockerfile을 기반으로 이미지를 빌드
  • 이미지 등록:
    • EC2 Container Registry (ECR): 빌드된 Docker 이미지를 AWS ECR에 푸시
      • ECR은 Docker 이미지를 저장하고 관리하는 AWS 서비스
  • 학습 작업 시작:

    SageMaker Training Job: SageMaker에서 학습 작업을 시작할 때 ECR에 저장된 학습용 Docker 이미지를 지정
    컴퓨팅 리소스 할당: SageMaker는 지정된 이미지를 사용하여 필요한 컴퓨팅 리소스를 할당하고 학습 작업을 실행

 

  • 모델 배포:
    • 배포용 Docker 이미지 준비: 추론 코드를 작성하고 Dockerfile을 사용하여 추론용 Docker 이미지를 빌드
    • 이미지 등록: 추론용 Docker 이미지를 ECR에 푸시
    • SageMaker Endpoint 설정: SageMaker에서 배포 작업을 시작할 때 ECR에 저장된 추론용 Docker 이미지를 지정
    • 엔드포인트 생성: SageMaker는 지정된 이미지를 사용하여 추론 엔드포인트를 생성하고 클라이언트 요청을 처리