[SageMaker] AWS 내장 알고리즘

Sagemaker 내장 알고리즘을 정리하였습니다.

AWS에서 정리된 모든 알고리즘입니다.

Linear Learner(선형 회귀)

훈련 데이터에 선을 맞추는게 핵심으로 x 값을 통해 y값을 예측합니다.직선적이기 때문에 모든 데이터가 선형 함수에 적합하진 않기 때문에 데이터의 특징을 잘 파악해야합니다. numeric한 예측과 classification 모두 다룰 수 있습니다.분류를 위해선 선형 임계값 함수를 사용하며 이진 분류와 멀티 클래스 분류를 할 수 있습니다.파일 혹은 파이프 모드 둘다 지원합니다(Batch or Real time)만약 시험에서 훈련 데이터가 오래 걸리는 무제가 있다면 파일 모드 대신 파이프 모드를 통해 필요한 것만 가져올 필요가 있습니다.  

선형 회귀를 사용하기 위한 준비

데이터 준비

훈련

유효성 검사

중요한 하이퍼 파라미터

  1. 밸런스

데이터 클래스를 균형있게 만들어줘야 합니다. 각각의 클래스를 똑같이 중요시하거나 정확도가 필요한 부분에 좀 더 밸런스를 주어야합니다.

  1. 학습 속도와 배치 크기
  2. L1 or L2 정규화

L2는 하이퍼 파라미터 집합에서 Weight decay(가중치 부패)라는 용어로 사용되기도 합니다.

  1. Target 정밀도(precision)
  2. Target 민감도(Sensitive)

정밀도를 유지하면서 민감도를 극대화하거나 민감도를 유지하면서 정밀도를 극대화하는게 중요합니다.

인스턴스 타입

XGBoost

최근 정말 핫하게 사용되는 세이지메이커에서 기본 제공되는 알고리즘으로 의사 결정 트리가 모여있는 곳입니다.이전 트리에서 발생한 실수를 수정하기 위해 계속 새로운 나무를 만들고 점점 더 나은 모델을 만들기 위해 서로 쌓아나가는 것입니다.Gradient descent(경사 하강법/그라데이션 하강)을 통해 새 나무가 추가 될 때마다 손실을 최소화하기 위해 사용합니다.

XGBoost는 오픈소스로 만들어진 프로젝트로 CSV 혹은 libsvm을 input으로 받았지만 현재는 RecordIO / protobut 그리고 Parquet 형식으로 확장하였습니다.

XGBoost를 사용하기 위한 준비

XGBoost의 중요한 하이퍼파라미터

XGBoost의 하이퍼파라미터는 많고 중요합니다. 

XGBoost에 한번에 많이 넣는 것을 방지하여 과적합을 방지할 수 있습니다.

스텝사이즈를 줄여 과적합을 방지할 수 있습니다.

트리의 리프 노드에서 추가 분할을 만드는 데 필요한 최소 손실 감소를 제어하는 ​​데 사용되는 정규화 매개변수입니다. 노드를 분할하는 프로세스는 모델에 복잡성을 추가합니다. 감마는 새로운 분할을 만드는 데 모델을 보수적으로 만들어 이러한 복잡성의 균형을 맞추는 방법을 제공합니다.’감마’를 조정하면 불필요한 작업(이 컨텍스트에서는 분할 혹은 트리의 수)을 줄여 모델의 과적합 경향을 본질적으로 제어할 수 있으며, 이는 보이지 않는 데이터에 대해 모델을 더욱 일반화하고 견고하게 만드는 데 도움이 될 수 있습니다.감마’를 늘리면 새로운 분할을 생성하기 위한 기준이 더욱 엄격해지고(손실의 최소치가 높아짐) 분할 수가 줄어들어 모델이 단순화되고 과적합을 줄여 일반화 기능을 향상시킬 수 있습니다.

L1 정규화와 유사합니다.

L2 정규화와 비슷합니다.

훈련 및 검증 중에 모델 성능을 평가하는 데 사용되는 평가 지표를 나타냅니다. 다양한 작업에는 다양한 평가 지표가 필요합니다. 정확도, 정밀도, 재현율 → 분류 작업 / RMSE, MAE → 회귀작업 이러한 분류, 회귀 작업에 맞춰 모델의 성능을 측정해주는 함수입니다.공통 평가 지표

positive와 negative weights의 균형을 조절할 수 있습니다.

XGBoost에서 최대 깊이를 지정해줍니다. 너무 과하면 모델에 부담이 심해집니다.

인스턴스 타입

CPU 구현에서는 메모리 제약이 있습니다. GPU를 사용하지않을 것이라면 메모리를 최적화하는 것이 좋습니다.따라서 M5가 좋은 선택이 되지만 XGBoost 1.2에서는 단일 GPU 인스턴스로 실행할 수 있습니다. (P2, P3)트리 메서드 하이퍼파라미터를 gpu_hist를 설정할 필요가 있으며 조금 더 빨라지고 비용효율적으로 될 수 있습니다.XGBoost1.2-2

XGBoost 1.5+

Seq2Seq

Input을 토큰의 시퀀스로 취하고 결과도 토큰의 시퀀스를 출력하는 방식입니다.문장을 토큰의 연속이라고 간주하여, 보편적으로 기계번역에서 사용합니다.토큰화된 오디오 웨이브 양식을 텍스트로 출력할 수도 있습니다.

Seq2Seq 정리

Seq2Seq는 어떻게 작동하나요?

Seq2Seq 모델은 일반적으로 두 가지 주요 구성 요소로 구성됩니다.

  1. 인코더: 모델의 이 부분은 입력 시퀀스(예: 번역을 위한 원어 문장)를 읽고 처리합니다. 인코더는 입력 시퀀스를 입력의 의미론적 의미를 나타내는 고정 크기 컨텍스트 벡터로 변환합니다. 이 컨텍스트 벡터는 입력 시퀀스의 내부 표현으로, 필수 정보를 캡처합니다.
  2. 디코더: 디코더는 인코더에서 생성된 컨텍스트 벡터에서 시작하여 한 번에 하나의 토큰씩 출력 시퀀스를 생성합니다(예: 번역을 위한 대상 언어로 된 문장). 입력 시퀀스에 의미적으로 대응하는 대상 도메인의 시퀀스를 생성하도록 설계되었습니다.

설명을 명확히 하기

요약하면 Seq2Seq에 대한 보다 정확한 설명은 다음과 같습니다. “Seq2Seq 모델은 한 언어에서 다른 언어로 문장을 번역하거나 문서를 요약하는 것과 같이 입력 시퀀스를 다른 도메인의 의미상 동일한 출력 시퀀스로 변환하는 데 사용됩니다. 모델은 다음과 같이 구성됩니다. 입력 시퀀스를 의미론적 본질을 캡처하는 컨텍스트 벡터로 처리하는 인코더와 이 컨텍스트를 기반으로 출력 시퀀스를 생성하는 디코더입니다.RNN or CNN(optional)에 의해 구현될 수 있습니다.

Seq2Seq를 사용하기 위한 준비

추가적인 사항

해당 작업은 아무리 SageMaker라도 며칠이 걸릴 수 있습니다.이를 해결하기 위해 AWS에서는 미리 훈련된 모델을 제공하고 있습니다.공용 트레이닝 데이터 세트도 있어 따로 어휘 파일을 만들 필요도 없고 다른 언어로 된 단어와 어떻게 대응해야하는지도 따로 설정할 필요가 없습니다.

Seq2Seq의 하이퍼파라미터

주로 신경망 작업에 사용됩니다.

여기서 중요한건 BELU score와 Perplexity는 기계 번역 문제를 측정하는데 적합하다는 것 입니다.

Seq2Seq 인스턴스 타입

딥러닝 알고리즘으로서 GPU의 장점을 취합니다.GPU 인스턴스 유형을 사용해야하며, 작업이 상당히 오래걸리기 때문에 P3 노트를 사용하여야합니다.훈련은 하나의 머신에서만 할 수 있지만 하나의 머신에 여러 기체로 병렬처리가 불가능합니다.하지만 하나의 컴퓨터에서 여러 GPU를 사용하여 쓸 수 있기 때문에, 대규모 훈련인 경우 P3같은 좋은 단일 성능을 갖춘 인스턴스를 사용하여야합니다.

DeepAR

1차원 타임시리즈 데이터를 예측하는데 사용하며 RNN의 전형적인 사례입니다.EX) 현재 + 과거의 주가를 보고 미래의 주가를 예측시간의 연속성이 상호 의존적인 관계가 많다면 시간 연속성의 관계를 통해 학습하여 각각의 시간연속성을 예측하는 더 나은 모델을 만들 수 있습니다. → 빈도와 계절성을 찾는데 유용합니다.

DeepAR을 사용하기 위한 준비

다양한 형식의 데이터를 사용할 수 있습니다.

DeepAR의 중요한 환경 변수들

하이퍼파라미터로는 딥러닝에서 사용되는 변수들이 가장 많습니다. 여러 히스토리에 걸쳐 훈련하고 제

DeepAR 인스턴스 타입

BlazingText

문자(text) 분류

Word2vec

BlazingText를 사용하기 위한 준비

문자 분류를 사용하는 감시 모드를 통해 학습합니다.

Word2vec에서는 텍스트 파일을 사용합니다. 라인당 훈련 문장 하나로 __label__뒤에 숫자를 붙여 토큰화합니다.이걸 토큰화해서 알고리즘에서 대소문자를 구분할 수 없도록 소문자로 변경하게 됩니다.input 형식은 매우 중요합니다. 증강된 텍스트 형식이 나오지만 여기선 그걸 합치는 구조화된 방식에 더 가깝습니다.레이블 필드엔 소스, 미리 처리된 문장 토큰화와 라벨 번호 등이 있습니다. Word2vec에는 다양한 모드가 있습니다.

끝없는 단어 가방이라는 뜻으로 단어의 순서가 중요한 구조가 아니라 서로 연결이 안 된 단어들이 있고 그 사이의 관계를 학습하는 방식입니다. 따라서 훈련하는 동안 실제 단어 순서가 바뀌게 됩니다.

많은 CPU 노드로 분산될 수 있습니다.

BlazingText 하이퍼파라미터

Word2vec

텍스트 분류

BlazingText 인스턴스 타입

batch_skipgram같이 모드만 다중 CPU 인스턴스를 사용할 수 있습니다.GPU CPU 상관없이 사용할 수 있고 필요에 따라 확장할 수 있습니다.

Object2Vec

Word2Vec과 유사하지만 전체 문서에서 작동할 수 있습니다.Object2Vec는 고차원 객체를 저차원의 밀집 벡터(embeddings)로 변환하는 기술입니다. 이는 Word2Vec의 개념을 확장하여, 단어 이외의 다양한 유형의 데이터(예: 문서, 이미지, 사용자, 상품 등)를 처리할 수 있도록 설계된 모델입니다. 객체의 모든 속성을 가져다가 저차원 표현으로 만드는 것으로 각각의 객체의 관계를 이해하고 저차원 벡터로 표현한 것입니다.클러스터링을 위해 객체의 가장 가까운 이웃을 계산해서 원한다면 해당 클러스터를 시각화할 수 있습니다.장르 예측이 가능하며 유사한 아이템 추천등에 사용합니다.아이템과 사용자에서 서로의 관계를 찾아 저차원 벡터로 매칭시키는 방식입니다. 이를통해 개인화된 추천, 군집화, 유사성 검색 등을 할 수 있습니다.

Object2Vec을 사용하기 위한 준비

입력 경로마다 각각의 인코더를 선택할 수 있으며, 데이터에 가장 좋은 방법을 다양하게 사용할 수 있습니다.

Comparator에 연결된 신경망은 Feed Forward 신경망을 통해 구성되어있습니다.

Object2Vec의 하이퍼파라미터

Object2Vec 인스턴스 타입

INFERRED_MOD 환경 변수를 사용해 인코더 임베딩에 사용하여 최적화할 수 있습니다.

Object Detection(개체 감지)

이미지 속 모든 객체를 식별하는게 핵심입니다.심층 신경망을 이용해 물체를 감지하고 분류합니다. 처음부터 훈련시키거나 MXNet의 경우 ImageNet에 근거해 훈련되어있는 모델을 사용할 수 있습니다.

Object Detection을 사용하기 위한 준비

두 개의 variants가 있습니다. → MXNet과 Tensorflow

MXNet의 경우 RecordIO 포맷 혹은 이미지(JPG, PNG)를 사용합니다.  이미지 포맷으로 훈련할 땐 각 이미지에 대해 annotation 데이터를 위해 JSON 파일을 제공합니다. 고유의 데이터로 개체 감지 훈련을 진행합니다.

Object Detection을 사용하기 위한 하이퍼파라미터

MXNet과 Tensorflow에는 중요한 하이퍼파라미터들이 있습니다.

서로 같은 파라미터로 훈련중인 배치량을 조정하는 표준 기술입니다.

학습률은 이 가중치 조정의 크기를 결정하며 데이터에 가장 적합한 최적화 툴 중 하나를 선택할 수 있습니다.

Object Detection을 위한 인스턴스 타입

Image Classification(이미지 분류)

이미지 분류

객체 탐지

Image Classification을 위한 준비

Object Detection처럼 MXNet에 대한 알고리즘과 새로운 Tensorflow 버전이 따로 존재합니다.MXNet 버전

Tensorflow 버전

Image Classification을 위한 하이퍼파라미터

Image Classification 인스턴스 타입

훈련할 때는 GPU를 사용해야합니다.다중 GPU 다중 머신 모두 사용가능하며 추론할 때는 CPU 혹은 GPU도 사용 가능합니다. 

Semantic Segmentation

이미지 내의 모든 객체가 픽셀 수준에서 분류되며, 같은 클래스에 속하는 픽셀들은 같은 레이블로 표시됩니다.픽셀 레벨로 내려가 의료 영상이나 진단 로봇 감지 등으로 각각의 픽셀을 레이블이나 분류에 매핑하는 마스크를 만드는데, 이것을 세분화 마스크라고 합니다.

Semantic Segmentation을 사용하는 방법

MXNet Gluon 혹은 Gluon CV 베이스로 구축되어 알고리즘 3가지 중 선택권을 받습니다.

Backborn이미지 분류, 객체 탐지, 시맨틱 세그멘테이션 등에서 backbone 네트워크는 입력 이미지로부터 중요한 정보와 패턴을 추출하는 역할을 합니다.

새로운 개체 세트로 훈련할 수도 있고 ImageNet을 기반으로 시작해 그걸 기반으로 점진적인 훈련도 가능합니다.

Semantic Segmentation의 하이퍼파라미터

Semantic Segmentation의 인스턴스 타입

GPU 인스턴스만 훈련용으로 지원하며 예측시엔 CPU 인스턴스를 사용할 수 있습니다.


Random Cut Forest

아마존에서 이상현상 감지를 위해 사용하는 알고리즘으로 관리감독없이도 동작합니다.기본적으로 일련의 데이터를 보고 일련의 데이터에서 이상한 점을 찾아내는 것 입니다.레이블된 훈련데이터가 필요 하지 않지만, 데이터의 정상 범위와 구조를 학습하는 과정이 필요합니다.

Random Cut Forest를 위한 준비

RecordIO - Protobuff 혹은 CSV 포맷을 사용하여 파일이나 파이프모드를 사용할 수 있습니다.정확도 혹은 정밀도, 재현율(민감도)를 계산하고 싶다면 테스트 채널을 사용할 수 있습니다.혹은 레이블된 데이터(이상인지 아닌지)를 F1 스코어를 사용할 수 있습니다.기본적인 알고리즘으로는 Random Forest와 유사하게 훈련 데이터를 분할하여 학습하고 결과를 관찰합니다.새로운 데이터 포인트를 추가하면 많은 가지들이 형성되도록하며 기본적인 결정 트리의 속성을 사용합니다. 만약 결정 트리가 새로운 데이터 포인트를 위해 많은 가지를 만들어낸다면 해당 데이터 포인트에 무언가 문제가 있다는 것을 의미할 수 있습니다. RCF는 키네시스 Analytics에서도 나타나며 데이터 스트림에서 이상 현상을 감지하는데 사용됩니다.스트리밍 데이터에서도 쓸 수 있으며, 데이터 묶음에 국한되지 않습니다.

RCF에서 하이퍼파라미터

가장 중요한 기준은 나무의 수 입니다.

RCF 인스턴스 타입

GPU를 이용하지 않는 간단한 알고리즘으로 C5,M5로 훈련할 수 있습니다.ml.c5.xl은 추론시 유용합니다.


Neural Topic Model(NTM)

Neural Topic Model을 사용하기 위한 준비

Topic option

잠재적 표현

“잠재적 표현”이란 주제나 개념을 직접적으로 관측할 수 없을 때, 그것을 간접적으로 나타내는 데이터의 형태를 말합니다. 예를 들어, 문서에 나타난 단어들을 분석하여 주제를 유추하는 것과 같이, 원래의 데이터에서 추출된 추상적인 특성이나 패턴을 나타냅니다.

Neural Topic Model의 중요한 하이퍼 파라미터

Neural Topic Model의 인스턴스 타입

딥러닝이기 때문에 GPU를 사용하는게 좋습니다.추론시에는 CPU가 좋으며 CPU가 더 저렴합니다.


LDA (Latent Dirichlet allocation)

LDA를 사용하기 위한 준비

LDA 하이퍼 파라미터

따라서 LDA같은 주제 모델링에서 가장 중요한 파라미터는 주제 개수입니다.

LDA 인스턴스 타입

단일 CPU 노드면 충분합니다.


KNN(K-Nearest Neighbor)

분류(classification)와 회귀(regression) 문제에 사용되는 간단하면서도 효과적인 머신러닝 알고리즘 중 하나입니다.

주어진 데이터 포인트(샘플)에 대해, K-NN은 특성 공간(feature space) 내에서 가장 가까운 K개의 이웃 데이터 포인트를 찾아, 이들의 레이블을 기반으로 샘플의 레이블을 예측합니다. 가장 유사한 K를 살펴보면 됩니다.회귀의 경우 가장 가까운 K개의 이웃에서 에측하고자하는 특성의 평균 값을 반환시킵니다.

KNN을 사용하기 위한 준비

KNN의 중요한 하이퍼파라미터

KNN 인스턴스 타입


K-Means

SageMaker는 Web-scale K-Means 클러스터링을 통한 대규모로 동작할 수 있게 구성하였습니다.

K-Means를 사용하기 위한 준비

K-Means의 중요한 하이퍼 파라미터들

K-means의 인스턴스 타입


PCA (Principal Component Analysis) - 차원 압축

차원 감축 기술로 고차원의 데이터를 가져오는 방법입니다.다양한 특징이나 속성을 함유한 데이터를 저차원 공간에 넣으며 작업이 훨씬 쉬워집니다. 이것을 차원의 저주라고 하며 이것을 피하기 위한 방식으로 사용됩니다.사용자 데이터의 feature를 적은 수로 축소하는 방법이며, 고차원 데이터를 저차원 공간으로 투사하면서 정보의 손실을 최소화하는 방식입니다. 이를 통해 많은 기능과 속성을 가진 데이터를 더 적은 속성으로 압축하여 효율적으로 변동성을 나타낼 수 있습니다.
PCA는 기계 학습을 위한 데이터 전처리의 차원 축소에 널리 사용됩니다. 기능 수를 줄이면 모델을 단순화하고 속도를 높이며 과적합 위험을 줄이는 데 도움이 됩니다.비지도학습으로 만들어지며, 과정을 거쳐 기본 구성 요소로 정제 됩니다. 

PCA를 사용하기 위한 방법

PCA의 중요한 하이퍼 파라미터들

PCA의 인스턴스 타입

Factorization Machines(추천시스템)

Feature 간의 모든 상호 작용을 고려할 수 있는 범용 예측 모델입니다.

Factorization Machines을 사용하기 위한 준비

Factorization Machines의 중요한 하이퍼 파라미터

Factorization Machines의 인스턴스 타입

Factorization Machine은 데이터가 적은 곳에서 처리하고 분류하여 예측하는 것에만 집중합니다.

IP Insights

주어진 IP 주소에서 수상한 행동을 자동으로 찾아내는 기술입니다.이례적인 IP 주소에서 로그인 시도를 식별할 수 있으며, 비정상적인 IP 주소에서 리소스를 생성하는 계정을 식별할 수 있는 기본적인 보안 도구로 사용됩니다.웹로그를 분석할 때 사용되는 것으로 신호를 보내거나 세션을 종료할 수 있는 의심스러운 행동을 찾아내는 방식입니다.

IP Insights를 사용하기 위한 준비

IP Insights에 중요한 하이퍼 파라미터들

IP Insights의 인스턴스 타입

Reinforcement Learning(강화 학습)

에이전트가 환경에서 행동을 취함으로써 목표를 달성하려고 할 때 어떻게 결정을 내려야 하는지를 배우는 머신러닝 패러다임의 한 유형입니다. 지도 학습이 정답이 미리 주어진 상태에서 모델을 훈련시키는 것과는 달리, 강화 학습은 시행착오를 통해 에이전트가 자신의 행동의 결과로부터 배우게 됩니다.시간에 따라 무작위로 공간을 탐색하면서 가장 효율적으로 탐색할 수 있는 모델을 만드는 것입니다.한 번 학습하면 배포되고 실행되는건 매우 빠릅니다.공급망 관리, 공조 설비 시스템, 자율 주행 차량까지 거대한 세상 속에 있는 하나의 에이전트입니다.

Q-Learning

강화학습을 구체적을 구현한 것을 Q러닝이라고 합니다.

주어진 행동에 따라 Q가 값을 가질 수도 있습니다. Q는 0으로 시작해서 액션을 취하고 보상과 변화를 통해 최종적으로 가장 높은 Q값을 가지는 것이 목적입니다. 경험을 통해 Q값을 증폭시킬 수 있고 이어진 행동을 향상시키는 하나의 방식입니다. 

강화학습의 문제점

용어

다양한 움직임을 주는 방식으로 각 상황에 따라서 행동에 따라 보상이나 패널티를 추적합니다.

Reinforcement Learning in SageMaker

Reinforcement Learning의 하이퍼 파라미터

강화 학습을 위한 하이퍼파라미터 설정은 없지만 원하면 직접 만들 수 있습니다.

Reinforcement Learning의 인스턴스 타입

어떤 인스턴스를 사용해야하는지 지침은 없습니다.Tensorflow 혹은 MXNet같은 프레임워크에 기초하고 있습니다. 일반적으로 다중 인스턴스와 다중 코어를 지원되기 때문에 GPU가 일반적으로 도움이 됩니다.

Automatic Model Tuning

자동으로 하이퍼파라미터를 튜닝하는 것으로 몇 가지에 대한 지침이 있지만, 일부는 지역 최소량을 찾는데 적합하지 않습니다.복잡한 시스템이라 여러 가지 방법을 시도해보고 가장 효과적인 방법을 찾는게 중요한데, 안에서 무슨 일이 벌어지는지 정확히 알 수 없다는 점이 많이 어려운 부분입니다.네트워크를  추가하면 추가할수록 문제는 기하급수적으로 커지며 모든 값들을 시도하고 훈련하고 평가하는데 비용이 정말 많이 소모됩니다.이 부분을 세이지메이커에서 도움을 줄 수 있으며 중요한 하이퍼파리미터와 하이퍼 파라미터에서 시도하고 싶은 값의 범위, 최적화하려는 메트릭만 정의하면 됩니다. 하이퍼파라미터 튜닝 작업을 해서 가능한 많은 조합을 훈련할 수 있고 비용을 통제하고, 얼마나 많은 훈련을 거쳐야하는지 상위에서 바인딩할 수 있습니다.이를 통해 가능한 훈련인스턴스를 병렬적으로 훈련할 수 있고 다양한 조합의 매개변수를 훑어볼 수 있습니다.
동시에 시간이 지나룻록 튜닝시키는 모델도 학습하여 더 긍정적인 방향으로 더 똑똑하게 테스트할 수 있습니다.모든 매개변수를 테스트하지 않고 어떤게 가장 합리적인지 알아보기 위한 학습이며 튜닝에 필요한 많은 리소스를 절약할 수 있습니다.

Automatic Model Tuning: Best Practices

  1. 한 번에 너무 많은 하이퍼파라미터를 최적화하지 않는게 중요합니다.
    • 모델의 정확도에 영향을 줄 부분들만 집중하는게 중요합니다.
  2. 범위를 가능한 작게 유지하는게 중요합니다.
  3. 필요시 로그의 비율을 사용하여 스케일을 조정하는게 중요합니다.
  4. 너무 많은 훈련을 동시에 진행하지 않는게 중요합니다.
    • 동시에 배우면 훈련이 잘 진행되지 않습니다. 따라서 한 번에 한 두가지 트레이닝을 하는 것이 효율적입니다.
    • 매개 변수 튜닝과 동시에 너무 많은 트레이닝은 학습하는데 한계를 볼 수 있기 때문에 하이퍼파라미터 튜닝 효율성이 중요합니다.
  5. 훈련 작업이 여러 인스턴스에 걸쳐 실행된다면 최종 결과로부터 정확하고 객관적인지 신경을 써야합니다.
    • 트레이닝 작업 코드를 작성하는게 조금 까다로울 수 있습니다.
    • 튜닝 후 모든 인스턴스가 합쳐졌을 때 하이퍼파리미터 튜닝에서 최적화 보고를 잘 확인해야합니다.

중요한건 과도하지 않게 설정해야하고 학습은 순차적으로 진행된다는 것을 잘 인지하고 있어야 합니다.

SageMaker and Spark

Apache Spark는 전처리 데이터 프레임워크로 유명하며, 머신 러닝도 대규모로 수행할 수 있습니다. MLlib도 많이 구축되어 있어, 여러 면에서 SageMaker와 비슷하지만 사전 처리에서는 그 이상의 작업도 할 수 있습니다.기본적으로 데이터를 데이터  프레임에 로드하고 프레임의 프로세싱을 여러 곳으로 분산시킬 수 있습니다.AWS가 제공하는 SageMaker-Spark Library를 통해 스파크 드라이버 스크립트 내에서 SageMaker를 사용할 수 있게 해줍니다.Spark 작업이 완료되면 Spark의 데이터 프레임 객체를 얻게 됩니다.사전에 처리된 모든 데이터를 담고있으며, 이후 Spark의 MLlib 대신 SageMakerEstimator를 사용할 수 있습니다.SageMaker 내부의 인기있는 알고리즘을 사용할 수 있습니다(K-Means, PCA, XGBoost)SageMaker 안에서 ML 인스턴스를 만들어 최종 단계를 수행할 수 있습니다.

SageMaker와 Spark간 통합

왜 SageMaker와 Spark를 통합하는지?

New SageMaker Features(2020년 이후)

SageMaker는 IDE, SageMaker Studio로 구축하며 많은 기능을 추가해왔습니다.

SageMaker Studio

VIsual IDE나 머신러닝을 위한 통합 개발 환경을 제공합니다. 노트를 그룹간 공유할 수 있으며 하드웨어 구성으로 전환할 수도 있습니다. → 관리할 인프라가 없기 때문입니다.모델간 비교하고 최선의 모델을 알아낼 수 있으며 SageMaker 작업을 통해 결과를 시각화하고 해석할 수 있습니다.

SageMaker Debugger

주기적인 간격으로 내부 모델 상태를 저장해 훈련 중 무슨 일이 벌어지는지 볼 수 있습니다.모델이 훈련 받으면서 긴 시간동안 개별적인 Gradients와 tensors를 저장해서 훈련이 진행됨에 따라 결과를 확인할 수 있습니다.훈련 중 원치않는 상황을 감지하는 규칙이 있으며, 규칙에 걸리면 자동으로 경보가 발령됩니다. 이후 규칙에 대한 디버그 작업이 개별적으로 실행되어 알람을 받을 수 있게됩니다.SageMaker Studio Debugger Dashboard가 있어 모든 걸 시각적 환경에서 확인할 수 있습니다.자동으로 훈련 리포트틑 생성할 수 있으며, 체크박스를 통해 훈련 중 발생한 일들을 확인할 수 있습니다.SageMaker에는 훈련 과정동안 일어난 일에 대해 알 수 있도록 몇 가지 규칙이 내장되어 있습니다.

  1. 병목현상 모니터링 시스템이 있습니다.
  2. Tensorflow같은 모델 프레임워크 연산을 프로파일링이 가능합니다.
  3. 모델 파라미터를 디버그 할 수 있습니다.

지원하는 프레임워크와 알고리즘

Github에서 디버거를 위한 API도 존재합니다.

SageMaker Debugger 특징

SageMaker Autopilot

데이터에 근거해 예측을 하기 위한 적절한 모델과 알고리즘을 자동으로 찾아내는 역할을 합니다.동시에 알고리즘 선택과 데이터 사전 처리 모델 조율과 관련된 모든 인프라가 함께 작동해서 정말 쉽게 모델을 구축할 수 있습니다. 하이퍼 파라미터 튜닝부터 다양한 모델 유형으로 실험하면서 자동으로 최적의 결과가 나옵니다.

Autopilot workflow

  1. 트레이닝을 위해 데이터를 s3로 로드합니다.
  2. 컬럼을 선택하면 자동으로 모델 생성이 시작됩니다.
  3. 모델 노트북을 통해 시각화와 컨트롤이 가능해집니다.
  4. 모델을 동작하고 leaderboard를 통해 추천 모델 리스트 중 하나를 선택할 수 있습니다.
  5. 모델을 배포하고 모니터링할 수 있으며, 노트북을 통해 모델을 최적화할 수 있습니다.

Autopilot의 추가적인 특징

Autopilot Explainability

훈련 데이터에 관한 최적의 모델을 만든다고 한들 훈련 데이터에 어떤 편향이 존재하는지 알 수 없습니다.따라서 해당 모델이 뭘 하는지 이해하는게 중요하고 감사 문제가 있을 수도 있습니다.

이러한 점은 AutoML의 문제점으로 제한이나 생각없이 모델을 마구 만들어내면 이러한 편견이 발생할 수 있습니다.이러한 문제를 해결하기 위해 다음과 같은 Feature attribution을 사용합니다.

SageMaker Model Monitor

배포된 모델의 품질 편차에 대해 자동적으로 경고를 받을 수 있습니다.한 번 배포하고 시간이 흐르며 데이터의 속성의 품질이 떨어질 수 있습니다. 

Model Monitor + Clarify

Model Monitor는 배포된 모델의 지속적인 성능 및 데이터 품질 모니터링을 위해 설계되었으며 Clarify는 모델 배포 전후의 편향 탐지 및 모델 설명 가능성에 중점을 둡니다.

Model Monitor 특징

Feature data & attribution

data
시간이 지남에 따라 모델이 수신하는 입력 데이터(특성) 분포의 변화를 나타냅니다. 이는 특히 모델의 입력 기능에 초점을 맞춘 데이터 드리프트 유형입니다. 이는 사용자 행동의 변화, 계절적 변화, 모델이 예측하는 데이터에 영향을 미치는 외부 환경의 변화 등 다양한 요인으로 인해 발생할 수 있습니다.attribute시간이 지남에 따라 다양한 특성이 모델 예측에 기여하는 방식의 변화와 관련이 있습니다. 전체 데이터 분포는 동일하게 유지(또는 변경)될 수 있지만 예측을 수행하는 데 있어 개별 기능의 중요성이나 가중치는 바뀔 수 있습니다. 이 개념은 모델 해석 가능성 및 기계 학습 모델의 설명 가능성 측면과 밀접한 관련이 있습니다.

Deployment Safeguards

배포 가드레일로 비동기성이나 실시간 예측 엔드포인트에 배포할 수 있습니다.비동기성이기 때문에 응답이 돌아오는 걸 기다리지않고 다른 작업을 계속 진행합니다.동시에 트래픽을 새 모델로 제어할 수 있습니다. 단순히 배치하는게 아니라 블루/그린 방식의  배포 모델을 적용할 수 있습니다

자동 롤백을 지원하여 이전 모델로 자동으로 롤백할 수 있습니다.Shadow Test를 통해 성능을 비교할 수 있습니다.

SageMaker Canvas

SageMaker 세부사항

SageMaker Bias Metrics in Clarify

따라서 편견이 무엇인지 정의하는데 사용하는 다양한 측정 지표가 있습니다.

  1. Class Imbalance(CI)
    • 클래스 불균형은 데이터셋 내에서 각 클래스의 데이터 양이 크게 다른 경우를 말합니다. 예를 들어, 희귀 질병을 예측하는 모델을 학습시킬 때, 질병이 없는 사람들의 데이터가 희귀 질병을 가진 사람들의 데이터보다 훨씬 많은 경우가 이에 해당합니다. 이로 인해, 모델은 다수의 클래스(질병이 없는 경우)를 예측하는 데 편향될 수 있으며, 소수의 클래스(희귀 질병)를 제대로 예측하지 못할 위험이 있습니다.
  2. Difference in Proportions of Labels(DPL)
    • DPL은 데이터 라벨링에 있어서의 편향을 나타내는 지표입니다. 특정 그룹 간에 긍정적인 라벨(예: 대출 승인)의 비율이 다를 때 높은 DPL 값을 볼 수 있습니다. 예를 들어, 중년층과 다른 연령대의 사람들을 대상으로 대출 승인을 분류할 때, 중년층이 다른 연령대에 비해 대출 승인 비율이 높다면, 이는 DPL이 높다는 것을 의미합니다. 이런 경우 학습된 모델은 훈련 데이터에 있는 불균형을 미래의 예측에도 반영할 가능성이 있습니다.
  3. Kullback-Leibler Divergence(KL), Jensen-Shannon Divergence(JS)
    • 양면의 분포가 얼마나 다른지가 관건입니다.
      여러 집단의 실제 결과를 살펴보고, 각 집단에 대한 편견이 얼마나 심한지 확인할 수 있습니다.
  4. Lp-norm (LP)
    • 특성간의 거리를 측정하여 정규화를 통해 모델의 복잡도를 조절합니다.
  5. Total Variation Distance(TVD)
    • L1-norm(정규화)을 통해 편향을 확인합니다.
  6. Kolmogorov-Smirnov(KS)
    • 여러 측면에서 분포되는 결과의 최대 분포를 측정하는 것입니다.
      이전에는 결과의 분포를 측정했지만 현재는 분배 결과를 측정하는 방식입니다.
  7. Conditional Demographic Disparity(CDD)
    • 상대적인 결과의 비율로 계산하고 CDD로 측정하여 편향을 측정합니다. 

내용 정리

CI와 DPL은 모두 모델 예측의 공정성과 정확성에 영향을 미칠 수 있는 편향 유형을 다루지만 데이터의 다양한 측면에 중점을 둡니다. CI는 클래스당 데이터의 양에 관한 것으로 잠재적으로 다수 클래스에 대한 선호로 이어질 수 있습니다. DPL은 데이터 내 여러 그룹에 긍정적 또는 부정적 결과가 어떻게 분포되어 있는지 조사하며, 이로 인해 특정 그룹에 대한 편향 또는 우호적인 예측 편향이 발생할 수 있습니다.

SageMaker Training compiler

훈련 단계에서 트레이닝 컴파일러가 모델들을 위해 동작합니다.AWS 딥러닝 컨테이너 DLC에 통합된 것으로 DLC가 아니면 사용할 수 없습니다.Training Job을 컴파일하고 최적화합니다. 특히 GPU 인스턴스에서 50%까지 빨라질 수 있지만 한도를 제대로 설정하지 않으면 오히려 해가 될 수 있습니다.단순한 자동적인 솔루션이 아닙니다.특정 라이브러리를 사용할 경우 트레이닝 컴파일러가 잘 동작할 수 있습니다.자신의 모델을 가져와서 사용할 경우 결과를 장담할 수 없습니다. → 호환되지 않을 수 있습니다.

SageMaker Feature Store

기능은 행에 대한 레이블을 예측하기 위해 정보들을 사용하는 열이나 필드입니다.사람의 주소, 소득, 나이 등 단순히 머신러닝 모델을 훈련시키기 위한 속성입니다.머신 러닝 모델은 훈련을 위해 아주 많은 양의 데이터를 빠르게 흡수해야합니다.데이터를 정돈하고 다른 모델에 걸쳐 이러한 feature를 공유하는 것도 어려운 일이며, 빠르게 읽고 쓰기 위해선 여러 번 저장하는 상황을 피해야합니다.feature는 일종의 EMR 파이프라인이나 Glue, SageMaker 프로세싱에서 나올 수 있습니다.

Feature Store은 어떻게 데이터를 구성하는지

Feature 스토어가 있고, 그 안에 Feature 그룹이라는 것들이 있는데 Feature들을 함께 구성합니다.각 Feature 그룹은 기록 식별자(Record identifier)와 해당 기능과 관련된 이름, Event Time 등의 정보를 구성하고 있습니다.

동작 방식

기본적으로 스트리밍 방식과 배치 방식이 있습니다.배치 엑세스를 원한다면 오프라인 스토어를 사용하면 되며, 데이터로 원하는 많은 것들을 할 수 있습니다.

⁠⁠Feature Store Security

SageMaker ML Lineage Tracking

Lineage Tracking Entities(추적할 수 있는 개체)

Querying Lineage Entities

SageMaker Data Wrangler

데이터엔지니어링에 적용가능한 기술입니다. 

Data Wrangler sources

다양한 데이터 소스로부터 데이터를 흡수해서 Data Wrangler 파이프라인을 통해 변환하고 SageMaker와 통신합니다.

Data Wrangler는 파이프라인에서 변환을 하는게 아니라 변환을 하기 위해 코드만 생성합니다.단순한 코드 생성 도구로 생각할 수 있으며, 코드는 데이터를 보내는 곳에 자신의 Endpoint를 생성하고 SageMaker에서 가져와 모델을 훈련하는 방식입니다.https://aws.amazon.com/ko/blogs/korea/introducing-amazon-sagemaker-data-wrangler-a-visual-interface-to-prepare-data-for-machine-learning/
데이터를 어떻게 변환하고 모델에 어떻게 제시하느냐에 대한 선택은 모델의 품질에 큰 차이를 가져올 수 있으며, 데이터를 정규화하는 것도 아주 중요합니다.QuickModel을 통해 데이터를 변형하고 테스트할 수 있습니다. 중요한건 Data Wrangler는 파이프라인 그 자체에 있지않고, 파이프라인으로 가는 코드를 생성합니다.

Data Wrangler Troubleshooting