상세 컨텐츠

본문 제목

[12차시 / 15기 최경석] AWS 1

본문

SageMaker Introduction

Machine Learning Process

Machine Learning은 이 과정이 반복적으로 수행됨

랩탑이나, 따로 서버를 사용하면 장점도 있지만, 결국 단점이 있음

⇒ AWS 최고!!

특히 SageMaker는 ML Service를 위해 특화된 서비스 ⇒ 위에서 본 각 단계에 필요한 기능들이 있음!~

1. Build 과정

코드를 작성하고, 얼마나 빨리 작성하고 공유하는지에 대한 도움

<SageMaker Studio>

: 기계 학습 모델 개발 및 배포를 위한 최초의 완전 통합 개발 환경 (IDE)

모델 실험, 결과 확인, 디버깅, 배포 및 모니터링, 코드 비교 및 공유

개발 환경, 사용 프레임워크가 다 적용되어있음~~

아무튼 편하고, 보안도 좋고 알아서 다 해줄테니까 사용하는 사람들은 문제 해결에 집중해라 이말이란다~

노트북

  • 주피터 노트북 기반
  • 모든 환경들이 built-in 되어있고, github도 연동되어있다~

2. Train 과정

  1. EC2 Instance에서 노트북을 띄워서 사용
  2. model.fit()를 하게 되면, train을 위한 학습 Instance(EC2) 생성 (그림에서 2개)
  3. 생성된 instance가, 학습을 위한 data를 사용할 수 있도록 설정 (S3)
  4. 학습 코드는, docker image 형태가 저장되어있는 Dockerhub 같은 “ECR, Elastic Container Registry”에서 사용할 image를 docker container로 사용
  5. 학습이 완료된 결과물은 다시 S3에 저장

코드 개간단함~

  • Estimator 객체 생성을 위해, ECR에서 사용할 알고리즘에 대한 image를 가져옴 + Train에 필요한 instance에 대한 정의
  • fit : train용 instance를 따로 생성하고 Docker Image로 학습 (S3에 있는 train data를 활용)

구체적인 설명

Estimator : 데이터를 학습하고 추론하는 머신러닝 모델이 아니고, 오직 훈련 작업에 필요한 요소들을 정의하여 작업을 실행하는 역할만을 담당

  • 알고리즘을 Container Image 형태로 만들어서 등록
  • Container가 역할을 수행할 때, 수행에 필요한 role
  • instance_count & instance_typt & volume_size
  • Estimator 객체 생성 ⇒ fit

Spot Instance를 사용하고 싶으면 parameter 추가 (간단하게 비용절감 가능)

모델 활용 방법

⇒ 4가지 방식으로 사용 가능하게 option

  1. Built-InECR에 있는 Docker Image 사용하는 것
  2. 이미 built-in으로 저장되어있는 모델
  3. Script ModeSageMaker에서 이미 프레임워크를 지원하니까 그거 쓰면 됨
  4. 작성한 코드를 “source_dir”에 넣으면 됨
  5. 직접 script를 작성해서 활용하고 싶음!
  6. Docker Container (BYOC, Build Your own Container)나머지는 동일!!
  7. 내가 직접 만든 docker image를 ECR에 push해서 사용
  8. AWS ML Marketplace
  9. AWS Marketplace에 있는 알고리즘과 모델 패키지 구독

Model Tuning

Hyperparameter Tuning

똑같이 Estimator Instance 만들어주고

  • Hyperparameter 설정
  • 평가 기준 (Metric) 설정
  • Tuning 작업 방식 설정

⇒ 알아서 Train하고, 가장 좋은 Model 선택

Hyperparameter Tuning 방식

  • Bayesian : 성능 Good
  • Random : 동시에 탐색 가능, 빠름

3. Deploy

모델 배포 방법 (Endpoint연결)

  • S3에 저장된 모델 구조를 복사
  • ECR에 저장된 docker image를 복사
  • 사용할 수 있도록 Endpoint와 연결

Private API

  • SageMaker 내부에서 관리
  • 실제로 Client는 AWS 내부에서만 접속 가능

Public API

  • Lambda & Amazon API Gateway 사용
  • Lambda로 Private API 호출 ⇒ Public한 Clinet쪽에서 사용

Update Endpoint

모델에 수정이 필요하거나, 여러 모델을 동시에 배포를 해서 성능 비교를 하고 싶은 경우!!!

  1. Blue-Green 방식
    • A/B Test 방식
    • 각각 endpoint를 만들고, 각각에 대한 트래픽 비율 조절
    • Variant1 & Variant2 → “initial_weight”를 지정해서 트래픽을 어떻게 나눌지 조절
    • Endpoint 생성
    • 단점 : 비용이 많이 듦!! (여러개의 endpoint)
  2. Multi-model Endpoint
    • 한개의 Endpoint에 여러개의 model을 배치

정리

  1. Sagemaker Session 연결
  2. Train을 위한 Estimator 객체 생성
    • Train에 필요한 image, instance의 속성,,,
  3. fit() : Train 수행
  4. Model을 S3에 저장
  5. Deploy : Endpoint에 연결 → 실제 predict에 사용

이 모든 과정들을 자동화 시킬 수는 없을까???

SageMaker Pipeline

ML Workflow 작성, 재실행, 결과물 저장 등등을 자동화!!!

예시) Github commit & push / Model 성능 비교 및 배포 과정

아무튼 AWS하면 좋다~~

코드도 쓰기 싫고 날먹하고 싶다면,,,???

SageMaker Autopilot

AutoML같은 느낌

Data만 있으면, 다 분석도 하고, 중요 feature골라서 모델도 만들어주고, 최적화도 시켜줄게!!!!!

(Tabular Data)

모든 Metric은 Report로 만들어줌

관련글 더보기

댓글 영역