SageMaker Introduction
Machine Learning Process
Machine Learning은 이 과정이 반복적으로 수행됨
랩탑이나, 따로 서버를 사용하면 장점도 있지만, 결국 단점이 있음
⇒ AWS 최고!!
특히 SageMaker는 ML Service를 위해 특화된 서비스 ⇒ 위에서 본 각 단계에 필요한 기능들이 있음!~
1. Build 과정
코드를 작성하고, 얼마나 빨리 작성하고 공유하는지에 대한 도움
<SageMaker Studio>
: 기계 학습 모델 개발 및 배포를 위한 최초의 완전 통합 개발 환경 (IDE)
모델 실험, 결과 확인, 디버깅, 배포 및 모니터링, 코드 비교 및 공유
개발 환경, 사용 프레임워크가 다 적용되어있음~~
아무튼 편하고, 보안도 좋고 알아서 다 해줄테니까 사용하는 사람들은 문제 해결에 집중해라 이말이란다~
노트북
- 주피터 노트북 기반
- 모든 환경들이 built-in 되어있고, github도 연동되어있다~
2. Train 과정
- EC2 Instance에서 노트북을 띄워서 사용
- model.fit()를 하게 되면, train을 위한 학습 Instance(EC2) 생성 (그림에서 2개)
- 생성된 instance가, 학습을 위한 data를 사용할 수 있도록 설정 (S3)
- 학습 코드는, docker image 형태가 저장되어있는 Dockerhub 같은 “ECR, Elastic Container Registry”에서 사용할 image를 docker container로 사용
- 학습이 완료된 결과물은 다시 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
- Built-InECR에 있는 Docker Image 사용하는 것
- 이미 built-in으로 저장되어있는 모델
- Script ModeSageMaker에서 이미 프레임워크를 지원하니까 그거 쓰면 됨
- 작성한 코드를 “source_dir”에 넣으면 됨
- 직접 script를 작성해서 활용하고 싶음!
- Docker Container (BYOC, Build Your own Container)나머지는 동일!!
- 내가 직접 만든 docker image를 ECR에 push해서 사용
- AWS ML Marketplace
- 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
모델에 수정이 필요하거나, 여러 모델을 동시에 배포를 해서 성능 비교를 하고 싶은 경우!!!
- Blue-Green 방식
- A/B Test 방식
- 각각 endpoint를 만들고, 각각에 대한 트래픽 비율 조절
- Variant1 & Variant2 → “initial_weight”를 지정해서 트래픽을 어떻게 나눌지 조절
- Endpoint 생성
- 단점 : 비용이 많이 듦!! (여러개의 endpoint)
- Multi-model Endpoint
- 한개의 Endpoint에 여러개의 model을 배치
정리
- Sagemaker Session 연결
- Train을 위한 Estimator 객체 생성
- Train에 필요한 image, instance의 속성,,,
- fit() : Train 수행
- Model을 S3에 저장
- Deploy : Endpoint에 연결 → 실제 predict에 사용
이 모든 과정들을 자동화 시킬 수는 없을까???
SageMaker Pipeline
ML Workflow 작성, 재실행, 결과물 저장 등등을 자동화!!!
예시) Github commit & push / Model 성능 비교 및 배포 과정
아무튼 AWS하면 좋다~~
코드도 쓰기 싫고 날먹하고 싶다면,,,???
SageMaker Autopilot
AutoML같은 느낌
Data만 있으면, 다 분석도 하고, 중요 feature골라서 모델도 만들어주고, 최적화도 시켜줄게!!!!!
(Tabular Data)
모든 Metric은 Report로 만들어줌
댓글 영역