© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
Amazon SageMaker
Training & Processing
최영준
AIML Expert SA
AWS
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
The AWS ML Stack
2
ML 프레임워크
& 인프라
TensorFlow, PyTorch, Apache
MXNet, Hugging Face
Deep learning
AMIs & containers
GPUs AWS Inferentia Elastic
inference
FPGA
AI 서비스
데이터
레이블링
데이터
준비
피쳐
저장
노트북
개발
모델
학습
파라메터
튜닝
관리&
모니터링
프로덕션
배포
엣지 디바이스
관리
SAGEMAKER STUDIO IDE
CI/CD
AMAZON
SAGEMAKER
SPECIALIZED
비즈니스 프로세스 검색 코드 + DevOps 제조 헬스케어
Amazon Personalize
Amazon Forecast
Amazon Fraud Detector
Amazon Lookout for Metrics
Amazon Kendra Amazon CodeGuru
Amazon DevOps Guru
Amazon Monitron
Amazon Lookout for Equipment
Amazon Lookout for Vision
Amazon HealthLake
Amazon Comprehend Medical
Amazon Transcribe Medical
CORE
텍스트 & 문서 챗봇 음성 비전
Amazon Translate
Amazon Comprehend
Amazon Textract
Amazon Lex Amazon Polly
Amazon Transcribe
Amazon Transcribe Call Analytics
Amazon Rekognition
AWS Panorama
SAGEMAKER
STUDIO LAB
SAGEMAKER
CANVAS
머신 러닝
학습
비즈니스
분석가를 위한
코드프리
머신 러닝
AWS Trainium Habana
Gaudi
CPUs
NEW NEW
NEW
데이터/
결과 처리
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
The AWS ML Stack
3
ML 프레임워크
& 인프라
TensorFlow, PyTorch, Apache
MXNet, Hugging Face
Deep learning
AMIs & containers
GPUs AWS Inferentia Elastic
inference
FPGA
AI 서비스
데이터
레이블링
데이터
준비
피쳐
저장
노트북
개발
모델
학습
파라메터
튜닝
관리&
모니터링
프로덕션
배포
엣지 디바이스
관리
SAGEMAKER STUDIO IDE
CI/CD
AMAZON
SAGEMAKER
SPECIALIZED
비즈니스 프로세스 검색 코드 + DevOps 제조 헬스케어
Amazon Personalize
Amazon Forecast
Amazon Fraud Detector
Amazon Lookout for Metrics
Amazon Kendra Amazon CodeGuru
Amazon DevOps Guru
Amazon Monitron
Amazon Lookout for Equipment
Amazon Lookout for Vision
Amazon HealthLake
Amazon Comprehend Medical
Amazon Transcribe Medical
CORE
텍스트 & 문서 챗봇 음성 비전
Amazon Translate
Amazon Comprehend
Amazon Textract
Amazon Lex Amazon Polly
Amazon Transcribe
Amazon Transcribe Call Analytics
Amazon Rekognition
AWS Panorama
SAGEMAKER
STUDIO LAB
SAGEMAKER
CANVAS
머신 러닝
학습
비즈니스
분석가를 위한
코드프리
머신 러닝
AWS Trainium Habana
Gaudi
CPUs
NEW NEW
NEW
데이터/
결과 처리
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
SageMaker Training - 모델 학습
4
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training은 무엇일까요?
5
• 완전 관리형 머신 러닝 학습 서비스
• 데이터 과학자가 빠르고 쉽게 모델 개발 및 학습을 할 수 있도록 지원
Model
Data
SageMaker
학습코드 작성
고객 준비 영역
AWS 관리 영역
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training 학습 환경
6
고객 준비 영역
AWS 관리 영역
Model
Data
학습코드
Model
Data
Built-in 학습
컨테이너 이미지
학습코드
Custom 학습
컨테이너 이미지
1. 기본 Package들이 설치된 AWS가 제공하는 컨테이너 이미지 사용
2. 고객이 추가로 필요한 Package들이 설치된 컨테이너 이미지 생성 후 사용
SageMaker
SageMaker
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
모델 학습 환경의 구성
7
1. SageMaker 노트북 생성
2. 학습 코드 내 경로 수정
3. 학습 작업의 실행 노트북 작성
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 노트북 생성
8
AWS 고객 환경
Data
Scientists
SageMaker 노트북은 클라우드에서 제공되는 Jupyter notebook/Lab UI
노트북
인스턴스
노트북
SageMaker 노트북
볼륨
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
노트북 인스턴스에서 학습을 진행하나요
9
AWS 고객 환경
Data
Scientists
노트북은 데이터 준비, 학습 코드 수정, 학습 작업 실행 노트북 파일을 작성
• 노트북 인스턴스에서 모델 학습을 수행할 수 있지만,
학습의 확장성이 제한적입니다.
• 따라서, 별도 인스턴스를 띄워서 모델 학습을 진행하며,
이를 SageMaker Training이라고 합니다.
노트북
인스턴스
노트북
SageMaker 노트북
볼륨
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training
10
학습은 노트북 인스턴스 대신 고성능 CPU 또는 GPU 인스턴스에서 수행하여 효율적으로 활용
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
Data
Scientists
모델 학습
노트북
인스턴스
노트북
SageMaker 노트북
볼륨
데이터 준비/코드 작성
CPU 고성능 CPU 또는 GPU
학습 실행
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training
11
학습
인스턴스
학습컨테이너
이미지
볼륨
Data
Scientists
모델 학습
노트북
인스턴스
노트북
SageMaker 노트북
볼륨
데이터 준비/코드 작성
CPU 고성능 CPU 또는 GPU
학습 실행
학습
인스턴스
학습컨테이너
이미지
볼륨
학습 클러스터
…
다수의 인스턴스로 확장하여 학습이 가능 (단, 학습 코드는 분산학습 라이브러리 적용 필요)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training 동작 방식
12
고객 준비 영역
AWS 관리 영역
Model
Data 학습코드
SageMaker 노트북
Simple Storage Service (S3)
Built-in 학습
컨테이너 이미지
SageMaker 학습 클러스터
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training 동작 방식
13
고객 준비 영역
AWS 관리 영역
Model
Data
학습코드
SageMaker 노트북
Simple Storage Service (S3)
Built-in 학습
컨테이너 이미지
SageMaker 학습 클러스터
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training 동작 방식
14
고객 준비 영역
AWS 관리 영역
Model
Data 학습코드
SageMaker 노트북
Simple Storage Service (S3)
SageMaker 학습 클러스터
Custom 학습
컨테이너 이미지
Amazon ECR
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training 동작 방식
15
고객 준비 영역
AWS 관리 영역
Model
Data
학습코드
SageMaker 노트북
Simple Storage Service (S3)
SageMaker 학습 클러스터
Custom 학습
컨테이너 이미지
Amazon ECR
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training을 위한 작업
16
학습 코드 (Python 코드) 학습 작업의 실행 노트북 (ipynb)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
모델 학습 환경의 구성
17
1. SageMaker 노트북 생성
2. 학습 코드 내 경로 수정
3. 학습 작업의 실행 노트북 작성
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 업로드
18
AWS 고객 환경
Data
Scientists
on-premise (로컬 환경)에서 학습이 되는 코드는 폴더 생성 후 폴더 안에 추가하여 업로드
노트북
인스턴스
노트북
SageMaker 노트북
볼륨
고객 학습 코드
학습 코드
업로드
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
19
AWS 고객 환경
Data
Scientists
노트북
인스턴스
노트북
SageMaker 노트북
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
20
AWS 고객 환경
Data
Scientists
학습이 실행되면 학습 코드는 자동으로 학습 클러스터로 복사
노트북
인스턴스
노트북
SageMaker 노트북
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
고성능 CPU 또는 GPU
학습 실행
자동으로 복사
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
21
컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
/opt/ml
├── input
│ └── data
│ └── <channel_name>
│ └── <input data>
├── model
├── code
├── output
└── checkpoints
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
22
컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
/opt/ml
├── input
│ └── data
│ └── <channel_name>
│ └── <input data>
├── model
├── code
├── output
└── checkpoints
학습 코드의 복사 위치
Data 복사 위치
노트북에서 소스코드가 복사되어 저장
S3의 데이터가 복사되어 저장
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
23
컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
/opt/ml
├── input
│ └── data
│ └── <channel_name>
│ └── <input data>
├── model
├── code
├── output
└── checkpoints
학습 스크립트 복사 위치
Data 복사 위치
노트북에서 소스코드가 복사되어 저장
S3의 데이터가 복사되어 저장
Dataloader 경로
• /opt/ml/input/data/{channel_name} 로 수정
• 별도 환경변수로도 제공
예) os.environ.get('SM_CHANNEL_${channel_name}’)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
24
컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
/opt/ml
├── input
│ └── data
│ └── <channel_name>
│ └── <input data>
├── model
├── code
├── output
└── checkpoints
log 파일 등 저장할 위치
모델 결과를 저장할 위치
예 : write(“/opt/ml/output/***.event”)
예 : torch.save(“/opt/ml/model/best.pt”)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
25
컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요
학습
인스턴스
학습컨테이너
이미지
학습 클러스터
볼륨
/opt/ml
├── input
│ └── data
│ └── <channel_name>
│ └── <input data>
├── model
├── code
├── output
└── checkpoints
log 파일 등 저장할 위치
모델 결과를 저장할 위치
학습 종료 후
자동으로 복사
output.tar.gz
model.tar.gz
Amazon S3
ckt 파일 등 저장할 위치
(거의) 실시간
자동으로 복사
checkpoint_s3_uri 위치에 저장
Amazon S3
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 내 경로 수정
SageMaker 컨테이너는 주요 경로를 환경변수로 제공
# /opt/ml/model
parser.add_argument('--model_dir', type=str, default=os.environ.get('SM_MODEL_DIR’))
# /opt/ml/input/data/training
parser.add_argument('--dataset_dir', type=str, default=os.environ.get('SM_CHANNEL_TRAINING’))
# /opt/ml/output/data/algo-1
parser.add_argument('--output_data_dir', type=str,default=os.environ.get('SM_OUTPUT_DATA_DIR’))
# /opt/ml/output
parser.add_argument('--output-dir', type=str,default=os.environ.get('SM_OUTPUT_DIR’))
https://github.com/aws/sagemaker-training-toolkit/blob/master/ENVIRONMENT_VARIABLES.md
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 수정 예제
학습 코드 수정 전
import torch
…
class Net(nn.Module):
…
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--model_dir',type=str,default=“./result”)
…
with open(os.path.join(args.model_dir, 'model.pth'), 'rb') as f:
model.load_state_dict(torch.load(f))
if __name__ == '__main__’:
main()
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 수정 예제
import torch
…
class Net(nn.Module):
…
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--model_dir',type=str,default=os.environ.get('SM_MODEL_DIR’))
…
with open(os.path.join(args.model_dir, 'model.pth'), 'rb') as f:
model.load_state_dict(torch.load(f))
if __name__ == '__main__’:
main()
학습 코드 수정 후
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 코드 필수 수정 사항
• Dataloader 경로 : os.environ[‘SM_CHANNEL_{channel_name}’] 로 수정
- channel_name은 학습 작업의 실행 노트북에서 정의
• Model 저장 경로 : os.environ[‘SM_MODEL_DIR’] 로 수정
[optional] Output 저장 경로 : os.environ[‘SM_OUTPUT_DATA_DIR’] 로 수정
[optional] Checkpoints 저장 경로 : “/opt/ml/checkpoints”로 수정
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
모델 학습 환경의 구성
30
1. SageMaker 노트북 생성
2. 학습 코드 내 경로 수정
3. 학습 작업의 실행 노트북 작성
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 작업의 실행 노트북 작성
31
학습 클러스터의 인스턴스 종류/수, 실행할 학습 코드, 학습 환경 컨테이너 등을 Estimator로 정의
from sagemaker.pytorch import PyTorch
estimator = PyTorch(
source_dir="code", # 학습 코드 폴더 지정
entry_point="train_pytorch_smdataparallel_mnist.py", # 실행 학습 스크립트 명
role=role, # 학습 클러스터에서 사용할 Role
framework_version="1.10", # Pytorch 버전
py_version="py38", # Python 버전
instance_count=1, # 학습 인스턴스 수
instance_type="ml.p4d.24xlarge", # 학습 인스턴스 명
sagemaker_session=sagemaker_session, # SageMaker 세션
hyperparameters=hyperparameters, # 하이퍼파라미터 설정
)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 작업의 실행 노트북 작성
32
학습 클러스터에서 사용할 데이터 경로와 channel_name을 선언한 후 실행
channel_name = ”training”
estimator.fit(
inputs={channel_name : data_path},
job_name=job_name
)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 작업의 실행 노트북 작성
33
Estimator에서 정의된 값들을 선언
import sagemaker
sagemaker_session = sagemaker.Session() # SageMaker 세션 정의
role = sagemaker.get_execution_role() # SageMaker 노트북에서 사용하는 role 활용
hyperparameters = {“batch_size” : 32 ,
“lr” : 1e-4 ,
“image_size” : 128 } # 학습 코드의 arguments 값
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training - 학습 작업의 실행 노트북 작성
34
fit에서 추가되는 data_path는 S3, EFS, FSx for Lustre 등 3가지 타입이 가능
# S3
data_path = “s3://my_bucket/my_training_data/”
# EFS
data_path = FileSystemInput(file_system_id='fs-1’, file_system_type='EFS’,
directory_path=‘/dataset’, file_system_access_mode=‘ro’)
# FSx for Lustre
data_path = FileSystemInput(file_system_id='fs-2’, file_system_type='FSxLustre’,
directory_path='/<mount-id>/dataset’,
file_system_access_mode='ro’)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training – 작업 정의 시 추가 파라미터
35
학습 작업과 관련된 다양한 추가 파라미터를 제공
estimator = PyTorch(
… ,
max_run=5*24*60*60, # 최대 학습 수행 시간 (초)
use_spot_instances=True, # spot 인스턴스 사용 여부
max_wait=3*60*60, # spot 사용 시 자원 재확보를 위한 대기 시간
checkpoint_s3_uri= checkpoint_s3_uri, # checkpoints 저장 S3 위치
…
)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training – 작동 원리 요약
36
고객 관리 VPC
노트북 인스턴스
Notebook
학습
인스턴스
학습 코드
자동 복사
학습 인스턴스 환경
Amazon ECR
데이터
자동 복사
Amazon S3
학습 결과
자동 복사
컨테이너
이미지
Custom
컨테이너
이미지
built-in 이미지로
기본적으로 제공
Amazon S3
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training의 디버깅
37
고객 관리 VPC
• 생성한 SageMaker Notebook에서 학습 코드를 개발할 목적으로,
첫번째는 Local Mode로 수행
• 예) 딥러닝 분산학습의 경우 노트북 인스턴스를 GPU 유형으로 생성
• ml.p3.16xlarge의 경우 SageMaker의 Data parallel과
Model parallel Library 테스트 가능
• 임시적 사용이며 비용을 위해 테스트 후 CPU 유형으로 변경
Local Mode
Public subnet
Notebook Instance
Notebook
SageMaker
Notebook
학습 코드
학습 컨테이너
이미지
Amazon S3
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
Local Mode를 위한 학습 작업의 실행 노트북 추가
38
Local Mode
실제 학습
테스트 후
실학습 시 변경
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker의 추가 기능
39
1. SageMaker Experiments
2. 학습 모니터링
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
Amazon SageMaker Experiments
대규모 실험 추적
실험 및 사용자의 매개 변수
및 평가 지표(metrics) 추적
실험의 구조화
실험과 trials의 구조화
평가 지표 기록
Python SDK와 API를
사용하여 맞춤 평가 지표를
기록하고 모델 추적
실험 간 비교
각 실험 간 시각화
및 비교
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Experiments & Trials 코드 예시
from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
experiment = Experiment.create(
experiment_name=”experiment_name",
description="Classification of mnist hand-written digits”
)
trial = Trial.create(
trial_name=“trial_name”,
experiment_name=experiment.experiment_name,
sagemaker_boto_client=sm,)
Experiment
생성
Trial 생성
fit()
https://aws.amazon.com/ko/blogs/aws/amazon-sagemaker-experiments-organize-track-and-compare-your-machine-learning-trainings/ 참고
channel_name = ”training”
estimator.fit(
inputs={channel_name : data_path},
job_name=job_name,
experiment_config={
"TrialName": trial.trial_name,
"TrialComponentDisplayName": "Training"})
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Experiments & metric definitions
42
Epoch : [2][6/10] Train_Time = 0.355 : (3.134) , Train_Speed = 1803.360 (204.190),
Train_Loss = 1.0813320875 : (1.3528) , Train_Prec@1 = 76.250 : (68.958)
학습 코드의 표준 스트림 Log
metric_definitions = [ { ‘Name’ : ‘train:Loss’, ‘Regex’ : ‘Train_Loss = (.*?) :’}, ...]
학습 작업의 실행 노트북 - 주요 metric 정보의 hooking
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Experiments & metric definitions
43
from sagemaker.pytorch import PyTorch
estimator = PyTorch(
source_dir="code", # 학습 코드 폴더 지정
entry_point="train_pytorch_smdataparallel_mnist.py", # 실행 학습 스크립트 명
role=role, # 학습 클러스터에서 사용할 Role
framework_version="1.10", # Pytorch 버전
py_version="py38", # Python 버전
instance_count=1, # 학습 인스턴스 수
instance_type="ml.p4d.24xlarge", # 학습 인스턴스 명
sagemaker_session=sagemaker_session, # SageMaker 세션
hyperparameters=hyperparameters, # 하이퍼파라미터 설정
metric_definitions=metric_definitions,
)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Experiments & metric definitions
Metric definitions에서 hooking된 정보
SageMaker Experiments 정보
hyperparameters 정보
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker의 추가 기능
45
1. SageMaker Experiments
2. 학습 모니터링
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Training 모니터링 – CloudWatch
46
학습 코드의 출력 결과 확인 GPU/CPU 리소스 사용량 확인
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
SageMaker Processing - 데이터/결과 처리
47
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Processing 실행
AWS 고객 환경
노트북
인스턴스
노트북
SageMaker 노트북
Processing
인스턴스
Processing
컨테이너 이미지
SageMaker
Processing
볼륨
고성능 CPU 또는 GPU
Processing 실행
자동으로 복사
사전 처리, 후 처리 및 모델 평가를 실행할 수 있는 환경 제공
48
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Processing - S3와의 관계
Processing
인스턴스
Processing
컨테이너 이미지
SageMaker
Processing
볼륨
고성능 CPU 또는 GPU
S3의 데이터를 입력으로 받아 로직 처리 후 S3에 출력으로 저장
s3://bucket/path/input_data
Amazon S3
/opt/ml/processing/output
Amazon S3
s3://bucket/path/output_data
/opt/ml/processing/input
49
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
SageMaker Processing 실행 코드
# Built-in Scikit Learn Container or FrameworkProcessor
from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import Processor, ScriptProcessor, FrameworkProcessor
processor= FrameworkProcessor(PyTorch, framework_version="1.10",
role=role, instance_type=‘ml.g5.xlarge’,
instance_count=1)
from sagemaker.processing import ProcessingInput, ProcessingOutput
processor.run(
code='preprocessing.py',
inputs=[ProcessingInput(source=INPUT_S3_URI, destination='/opt/ml/processing/input')],
outputs=[ProcessingOutput(source='/opt/ml/processing/output/train’, destination=OUTPUT_S3_URI_1),
ProcessingOutput(source='/opt/ml/processing/output/validation’,
destination=OUTPUT_S3_URI_2)]
)
50
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
Wrap-up
51
Amazon SageMaker Training
• 완전 관리형 머신 러닝 학습 서비스
• 학습 코드에 분산 라이브러리를 추가한 후, 인스턴스의 수를 늘리면 분산학습이 바로 동작
Amazon SageMaker Experiments
• 실험의 여러 시도에 대해 사용자의 하이퍼파라미터, 평가 지표(metrics) 등을 기록 및 추적
Amazon SageMaker Processing
• 데이터의 사전 처리, 모델 결과의 후처리 및 모델 평가를 실행할 수 있는 컴퓨팅 환경을 제공
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
AMAZON SAGEMAKER 학습 환경
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark.
Thank you!
52
최영준
AI/ML Expert SA
choijoon@amazon.com

Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나

  • 1.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. Amazon SageMaker Training & Processing 최영준 AIML Expert SA AWS
  • 2.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 The AWS ML Stack 2 ML 프레임워크 & 인프라 TensorFlow, PyTorch, Apache MXNet, Hugging Face Deep learning AMIs & containers GPUs AWS Inferentia Elastic inference FPGA AI 서비스 데이터 레이블링 데이터 준비 피쳐 저장 노트북 개발 모델 학습 파라메터 튜닝 관리& 모니터링 프로덕션 배포 엣지 디바이스 관리 SAGEMAKER STUDIO IDE CI/CD AMAZON SAGEMAKER SPECIALIZED 비즈니스 프로세스 검색 코드 + DevOps 제조 헬스케어 Amazon Personalize Amazon Forecast Amazon Fraud Detector Amazon Lookout for Metrics Amazon Kendra Amazon CodeGuru Amazon DevOps Guru Amazon Monitron Amazon Lookout for Equipment Amazon Lookout for Vision Amazon HealthLake Amazon Comprehend Medical Amazon Transcribe Medical CORE 텍스트 & 문서 챗봇 음성 비전 Amazon Translate Amazon Comprehend Amazon Textract Amazon Lex Amazon Polly Amazon Transcribe Amazon Transcribe Call Analytics Amazon Rekognition AWS Panorama SAGEMAKER STUDIO LAB SAGEMAKER CANVAS 머신 러닝 학습 비즈니스 분석가를 위한 코드프리 머신 러닝 AWS Trainium Habana Gaudi CPUs NEW NEW NEW 데이터/ 결과 처리
  • 3.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 The AWS ML Stack 3 ML 프레임워크 & 인프라 TensorFlow, PyTorch, Apache MXNet, Hugging Face Deep learning AMIs & containers GPUs AWS Inferentia Elastic inference FPGA AI 서비스 데이터 레이블링 데이터 준비 피쳐 저장 노트북 개발 모델 학습 파라메터 튜닝 관리& 모니터링 프로덕션 배포 엣지 디바이스 관리 SAGEMAKER STUDIO IDE CI/CD AMAZON SAGEMAKER SPECIALIZED 비즈니스 프로세스 검색 코드 + DevOps 제조 헬스케어 Amazon Personalize Amazon Forecast Amazon Fraud Detector Amazon Lookout for Metrics Amazon Kendra Amazon CodeGuru Amazon DevOps Guru Amazon Monitron Amazon Lookout for Equipment Amazon Lookout for Vision Amazon HealthLake Amazon Comprehend Medical Amazon Transcribe Medical CORE 텍스트 & 문서 챗봇 음성 비전 Amazon Translate Amazon Comprehend Amazon Textract Amazon Lex Amazon Polly Amazon Transcribe Amazon Transcribe Call Analytics Amazon Rekognition AWS Panorama SAGEMAKER STUDIO LAB SAGEMAKER CANVAS 머신 러닝 학습 비즈니스 분석가를 위한 코드프리 머신 러닝 AWS Trainium Habana Gaudi CPUs NEW NEW NEW 데이터/ 결과 처리
  • 4.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. SageMaker Training - 모델 학습 4
  • 5.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training은 무엇일까요? 5 • 완전 관리형 머신 러닝 학습 서비스 • 데이터 과학자가 빠르고 쉽게 모델 개발 및 학습을 할 수 있도록 지원 Model Data SageMaker 학습코드 작성 고객 준비 영역 AWS 관리 영역
  • 6.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 학습 환경 6 고객 준비 영역 AWS 관리 영역 Model Data 학습코드 Model Data Built-in 학습 컨테이너 이미지 학습코드 Custom 학습 컨테이너 이미지 1. 기본 Package들이 설치된 AWS가 제공하는 컨테이너 이미지 사용 2. 고객이 추가로 필요한 Package들이 설치된 컨테이너 이미지 생성 후 사용 SageMaker SageMaker
  • 7.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 모델 학습 환경의 구성 7 1. SageMaker 노트북 생성 2. 학습 코드 내 경로 수정 3. 학습 작업의 실행 노트북 작성
  • 8.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 노트북 생성 8 AWS 고객 환경 Data Scientists SageMaker 노트북은 클라우드에서 제공되는 Jupyter notebook/Lab UI 노트북 인스턴스 노트북 SageMaker 노트북 볼륨
  • 9.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 노트북 인스턴스에서 학습을 진행하나요 9 AWS 고객 환경 Data Scientists 노트북은 데이터 준비, 학습 코드 수정, 학습 작업 실행 노트북 파일을 작성 • 노트북 인스턴스에서 모델 학습을 수행할 수 있지만, 학습의 확장성이 제한적입니다. • 따라서, 별도 인스턴스를 띄워서 모델 학습을 진행하며, 이를 SageMaker Training이라고 합니다. 노트북 인스턴스 노트북 SageMaker 노트북 볼륨
  • 10.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 10 학습은 노트북 인스턴스 대신 고성능 CPU 또는 GPU 인스턴스에서 수행하여 효율적으로 활용 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 Data Scientists 모델 학습 노트북 인스턴스 노트북 SageMaker 노트북 볼륨 데이터 준비/코드 작성 CPU 고성능 CPU 또는 GPU 학습 실행
  • 11.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 11 학습 인스턴스 학습컨테이너 이미지 볼륨 Data Scientists 모델 학습 노트북 인스턴스 노트북 SageMaker 노트북 볼륨 데이터 준비/코드 작성 CPU 고성능 CPU 또는 GPU 학습 실행 학습 인스턴스 학습컨테이너 이미지 볼륨 학습 클러스터 … 다수의 인스턴스로 확장하여 학습이 가능 (단, 학습 코드는 분산학습 라이브러리 적용 필요)
  • 12.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 동작 방식 12 고객 준비 영역 AWS 관리 영역 Model Data 학습코드 SageMaker 노트북 Simple Storage Service (S3) Built-in 학습 컨테이너 이미지 SageMaker 학습 클러스터
  • 13.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 동작 방식 13 고객 준비 영역 AWS 관리 영역 Model Data 학습코드 SageMaker 노트북 Simple Storage Service (S3) Built-in 학습 컨테이너 이미지 SageMaker 학습 클러스터
  • 14.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 동작 방식 14 고객 준비 영역 AWS 관리 영역 Model Data 학습코드 SageMaker 노트북 Simple Storage Service (S3) SageMaker 학습 클러스터 Custom 학습 컨테이너 이미지 Amazon ECR
  • 15.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 동작 방식 15 고객 준비 영역 AWS 관리 영역 Model Data 학습코드 SageMaker 노트북 Simple Storage Service (S3) SageMaker 학습 클러스터 Custom 학습 컨테이너 이미지 Amazon ECR
  • 16.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training을 위한 작업 16 학습 코드 (Python 코드) 학습 작업의 실행 노트북 (ipynb)
  • 17.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 모델 학습 환경의 구성 17 1. SageMaker 노트북 생성 2. 학습 코드 내 경로 수정 3. 학습 작업의 실행 노트북 작성
  • 18.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 업로드 18 AWS 고객 환경 Data Scientists on-premise (로컬 환경)에서 학습이 되는 코드는 폴더 생성 후 폴더 안에 추가하여 업로드 노트북 인스턴스 노트북 SageMaker 노트북 볼륨 고객 학습 코드 학습 코드 업로드
  • 19.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 19 AWS 고객 환경 Data Scientists 노트북 인스턴스 노트북 SageMaker 노트북
  • 20.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 20 AWS 고객 환경 Data Scientists 학습이 실행되면 학습 코드는 자동으로 학습 클러스터로 복사 노트북 인스턴스 노트북 SageMaker 노트북 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 고성능 CPU 또는 GPU 학습 실행 자동으로 복사
  • 21.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 21 컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 /opt/ml ├── input │ └── data │ └── <channel_name> │ └── <input data> ├── model ├── code ├── output └── checkpoints
  • 22.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 22 컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 /opt/ml ├── input │ └── data │ └── <channel_name> │ └── <input data> ├── model ├── code ├── output └── checkpoints 학습 코드의 복사 위치 Data 복사 위치 노트북에서 소스코드가 복사되어 저장 S3의 데이터가 복사되어 저장
  • 23.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 23 컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 /opt/ml ├── input │ └── data │ └── <channel_name> │ └── <input data> ├── model ├── code ├── output └── checkpoints 학습 스크립트 복사 위치 Data 복사 위치 노트북에서 소스코드가 복사되어 저장 S3의 데이터가 복사되어 저장 Dataloader 경로 • /opt/ml/input/data/{channel_name} 로 수정 • 별도 환경변수로도 제공 예) os.environ.get('SM_CHANNEL_${channel_name}’)
  • 24.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 24 컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 /opt/ml ├── input │ └── data │ └── <channel_name> │ └── <input data> ├── model ├── code ├── output └── checkpoints log 파일 등 저장할 위치 모델 결과를 저장할 위치 예 : write(“/opt/ml/output/***.event”) 예 : torch.save(“/opt/ml/model/best.pt”)
  • 25.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 25 컨테이너 환경에 맞게 학습 코드 내의 경로 변경 필요 학습 인스턴스 학습컨테이너 이미지 학습 클러스터 볼륨 /opt/ml ├── input │ └── data │ └── <channel_name> │ └── <input data> ├── model ├── code ├── output └── checkpoints log 파일 등 저장할 위치 모델 결과를 저장할 위치 학습 종료 후 자동으로 복사 output.tar.gz model.tar.gz Amazon S3 ckt 파일 등 저장할 위치 (거의) 실시간 자동으로 복사 checkpoint_s3_uri 위치에 저장 Amazon S3
  • 26.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 내 경로 수정 SageMaker 컨테이너는 주요 경로를 환경변수로 제공 # /opt/ml/model parser.add_argument('--model_dir', type=str, default=os.environ.get('SM_MODEL_DIR’)) # /opt/ml/input/data/training parser.add_argument('--dataset_dir', type=str, default=os.environ.get('SM_CHANNEL_TRAINING’)) # /opt/ml/output/data/algo-1 parser.add_argument('--output_data_dir', type=str,default=os.environ.get('SM_OUTPUT_DATA_DIR’)) # /opt/ml/output parser.add_argument('--output-dir', type=str,default=os.environ.get('SM_OUTPUT_DIR’)) https://github.com/aws/sagemaker-training-toolkit/blob/master/ENVIRONMENT_VARIABLES.md
  • 27.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 수정 예제 학습 코드 수정 전 import torch … class Net(nn.Module): … def main(): parser = argparse.ArgumentParser() parser.add_argument('--model_dir',type=str,default=“./result”) … with open(os.path.join(args.model_dir, 'model.pth'), 'rb') as f: model.load_state_dict(torch.load(f)) if __name__ == '__main__’: main()
  • 28.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 수정 예제 import torch … class Net(nn.Module): … def main(): parser = argparse.ArgumentParser() parser.add_argument('--model_dir',type=str,default=os.environ.get('SM_MODEL_DIR’)) … with open(os.path.join(args.model_dir, 'model.pth'), 'rb') as f: model.load_state_dict(torch.load(f)) if __name__ == '__main__’: main() 학습 코드 수정 후
  • 29.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 코드 필수 수정 사항 • Dataloader 경로 : os.environ[‘SM_CHANNEL_{channel_name}’] 로 수정 - channel_name은 학습 작업의 실행 노트북에서 정의 • Model 저장 경로 : os.environ[‘SM_MODEL_DIR’] 로 수정 [optional] Output 저장 경로 : os.environ[‘SM_OUTPUT_DATA_DIR’] 로 수정 [optional] Checkpoints 저장 경로 : “/opt/ml/checkpoints”로 수정
  • 30.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 모델 학습 환경의 구성 30 1. SageMaker 노트북 생성 2. 학습 코드 내 경로 수정 3. 학습 작업의 실행 노트북 작성
  • 31.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 작업의 실행 노트북 작성 31 학습 클러스터의 인스턴스 종류/수, 실행할 학습 코드, 학습 환경 컨테이너 등을 Estimator로 정의 from sagemaker.pytorch import PyTorch estimator = PyTorch( source_dir="code", # 학습 코드 폴더 지정 entry_point="train_pytorch_smdataparallel_mnist.py", # 실행 학습 스크립트 명 role=role, # 학습 클러스터에서 사용할 Role framework_version="1.10", # Pytorch 버전 py_version="py38", # Python 버전 instance_count=1, # 학습 인스턴스 수 instance_type="ml.p4d.24xlarge", # 학습 인스턴스 명 sagemaker_session=sagemaker_session, # SageMaker 세션 hyperparameters=hyperparameters, # 하이퍼파라미터 설정 )
  • 32.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 작업의 실행 노트북 작성 32 학습 클러스터에서 사용할 데이터 경로와 channel_name을 선언한 후 실행 channel_name = ”training” estimator.fit( inputs={channel_name : data_path}, job_name=job_name )
  • 33.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 작업의 실행 노트북 작성 33 Estimator에서 정의된 값들을 선언 import sagemaker sagemaker_session = sagemaker.Session() # SageMaker 세션 정의 role = sagemaker.get_execution_role() # SageMaker 노트북에서 사용하는 role 활용 hyperparameters = {“batch_size” : 32 , “lr” : 1e-4 , “image_size” : 128 } # 학습 코드의 arguments 값
  • 34.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training - 학습 작업의 실행 노트북 작성 34 fit에서 추가되는 data_path는 S3, EFS, FSx for Lustre 등 3가지 타입이 가능 # S3 data_path = “s3://my_bucket/my_training_data/” # EFS data_path = FileSystemInput(file_system_id='fs-1’, file_system_type='EFS’, directory_path=‘/dataset’, file_system_access_mode=‘ro’) # FSx for Lustre data_path = FileSystemInput(file_system_id='fs-2’, file_system_type='FSxLustre’, directory_path='/<mount-id>/dataset’, file_system_access_mode='ro’)
  • 35.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training – 작업 정의 시 추가 파라미터 35 학습 작업과 관련된 다양한 추가 파라미터를 제공 estimator = PyTorch( … , max_run=5*24*60*60, # 최대 학습 수행 시간 (초) use_spot_instances=True, # spot 인스턴스 사용 여부 max_wait=3*60*60, # spot 사용 시 자원 재확보를 위한 대기 시간 checkpoint_s3_uri= checkpoint_s3_uri, # checkpoints 저장 S3 위치 … )
  • 36.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training – 작동 원리 요약 36 고객 관리 VPC 노트북 인스턴스 Notebook 학습 인스턴스 학습 코드 자동 복사 학습 인스턴스 환경 Amazon ECR 데이터 자동 복사 Amazon S3 학습 결과 자동 복사 컨테이너 이미지 Custom 컨테이너 이미지 built-in 이미지로 기본적으로 제공 Amazon S3
  • 37.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training의 디버깅 37 고객 관리 VPC • 생성한 SageMaker Notebook에서 학습 코드를 개발할 목적으로, 첫번째는 Local Mode로 수행 • 예) 딥러닝 분산학습의 경우 노트북 인스턴스를 GPU 유형으로 생성 • ml.p3.16xlarge의 경우 SageMaker의 Data parallel과 Model parallel Library 테스트 가능 • 임시적 사용이며 비용을 위해 테스트 후 CPU 유형으로 변경 Local Mode Public subnet Notebook Instance Notebook SageMaker Notebook 학습 코드 학습 컨테이너 이미지 Amazon S3
  • 38.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 Local Mode를 위한 학습 작업의 실행 노트북 추가 38 Local Mode 실제 학습 테스트 후 실학습 시 변경
  • 39.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker의 추가 기능 39 1. SageMaker Experiments 2. 학습 모니터링
  • 40.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 Amazon SageMaker Experiments 대규모 실험 추적 실험 및 사용자의 매개 변수 및 평가 지표(metrics) 추적 실험의 구조화 실험과 trials의 구조화 평가 지표 기록 Python SDK와 API를 사용하여 맞춤 평가 지표를 기록하고 모델 추적 실험 간 비교 각 실험 간 시각화 및 비교
  • 41.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Experiments & Trials 코드 예시 from smexperiments.experiment import Experiment from smexperiments.trial import Trial experiment = Experiment.create( experiment_name=”experiment_name", description="Classification of mnist hand-written digits” ) trial = Trial.create( trial_name=“trial_name”, experiment_name=experiment.experiment_name, sagemaker_boto_client=sm,) Experiment 생성 Trial 생성 fit() https://aws.amazon.com/ko/blogs/aws/amazon-sagemaker-experiments-organize-track-and-compare-your-machine-learning-trainings/ 참고 channel_name = ”training” estimator.fit( inputs={channel_name : data_path}, job_name=job_name, experiment_config={ "TrialName": trial.trial_name, "TrialComponentDisplayName": "Training"})
  • 42.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Experiments & metric definitions 42 Epoch : [2][6/10] Train_Time = 0.355 : (3.134) , Train_Speed = 1803.360 (204.190), Train_Loss = 1.0813320875 : (1.3528) , Train_Prec@1 = 76.250 : (68.958) 학습 코드의 표준 스트림 Log metric_definitions = [ { ‘Name’ : ‘train:Loss’, ‘Regex’ : ‘Train_Loss = (.*?) :’}, ...] 학습 작업의 실행 노트북 - 주요 metric 정보의 hooking
  • 43.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Experiments & metric definitions 43 from sagemaker.pytorch import PyTorch estimator = PyTorch( source_dir="code", # 학습 코드 폴더 지정 entry_point="train_pytorch_smdataparallel_mnist.py", # 실행 학습 스크립트 명 role=role, # 학습 클러스터에서 사용할 Role framework_version="1.10", # Pytorch 버전 py_version="py38", # Python 버전 instance_count=1, # 학습 인스턴스 수 instance_type="ml.p4d.24xlarge", # 학습 인스턴스 명 sagemaker_session=sagemaker_session, # SageMaker 세션 hyperparameters=hyperparameters, # 하이퍼파라미터 설정 metric_definitions=metric_definitions, )
  • 44.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Experiments & metric definitions Metric definitions에서 hooking된 정보 SageMaker Experiments 정보 hyperparameters 정보
  • 45.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker의 추가 기능 45 1. SageMaker Experiments 2. 학습 모니터링
  • 46.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Training 모니터링 – CloudWatch 46 학습 코드의 출력 결과 확인 GPU/CPU 리소스 사용량 확인
  • 47.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. SageMaker Processing - 데이터/결과 처리 47
  • 48.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Processing 실행 AWS 고객 환경 노트북 인스턴스 노트북 SageMaker 노트북 Processing 인스턴스 Processing 컨테이너 이미지 SageMaker Processing 볼륨 고성능 CPU 또는 GPU Processing 실행 자동으로 복사 사전 처리, 후 처리 및 모델 평가를 실행할 수 있는 환경 제공 48
  • 49.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Processing - S3와의 관계 Processing 인스턴스 Processing 컨테이너 이미지 SageMaker Processing 볼륨 고성능 CPU 또는 GPU S3의 데이터를 입력으로 받아 로직 처리 후 S3에 출력으로 저장 s3://bucket/path/input_data Amazon S3 /opt/ml/processing/output Amazon S3 s3://bucket/path/output_data /opt/ml/processing/input 49
  • 50.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 SageMaker Processing 실행 코드 # Built-in Scikit Learn Container or FrameworkProcessor from sagemaker.sklearn.processing import SKLearnProcessor from sagemaker.processing import Processor, ScriptProcessor, FrameworkProcessor processor= FrameworkProcessor(PyTorch, framework_version="1.10", role=role, instance_type=‘ml.g5.xlarge’, instance_count=1) from sagemaker.processing import ProcessingInput, ProcessingOutput processor.run( code='preprocessing.py', inputs=[ProcessingInput(source=INPUT_S3_URI, destination='/opt/ml/processing/input')], outputs=[ProcessingOutput(source='/opt/ml/processing/output/train’, destination=OUTPUT_S3_URI_1), ProcessingOutput(source='/opt/ml/processing/output/validation’, destination=OUTPUT_S3_URI_2)] ) 50
  • 51.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 Wrap-up 51 Amazon SageMaker Training • 완전 관리형 머신 러닝 학습 서비스 • 학습 코드에 분산 라이브러리를 추가한 후, 인스턴스의 수를 늘리면 분산학습이 바로 동작 Amazon SageMaker Experiments • 실험의 여러 시도에 대해 사용자의 하이퍼파라미터, 평가 지표(metrics) 등을 기록 및 추적 Amazon SageMaker Processing • 데이터의 사전 처리, 모델 결과의 후처리 및 모델 평가를 실행할 수 있는 컴퓨팅 환경을 제공
  • 52.
    © 2022, AmazonWeb Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. AMAZON SAGEMAKER 학습 환경 © 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Confidential and Trademark. Thank you! 52 최영준 AI/ML Expert SA choijoon@amazon.com