/
Machine Learning Cloud Platform

문서 최신화를 위해서 변경된 부분 또는 수정할 부분이 발견되면 발견자가 꼭! 수정해주시기 바랍니다. !!!

Machine Learning Cloud Platform

Azure

Azure에서는 코드 없이 모델을 생성하고 학습시키거나 Azure에서 제공해주는 SDK를 통해 자신의 에플리케이션에 머신러닝 학습 및 배포 기능을 적용할 수 있다.

Azure Machine Learning 디자이너
Azure Machine Learning SDK
from azureml.core import Experiment, RunConfiguration, ScriptRunConfig # create a new RunConfig object experiment_run_config = RunConfiguration() # Create a script config script_config = ScriptRunConfig(source_directory=experiment_folder, script='experiment.py', run_config=experiment_run_config) # submit the experiment experiment = Experiment(workspace = ws, name = 'my-experiment') run = experiment.submit(config=script_config) run.wait_for_completion(show_output=True)

 

이러한 인터페이스를 통해 사용할 수 있는 기능은 기본적으로 아래와 같다.

  • 기계 학습 작업에 대한 확장성 있는 주문형 컴퓨팅

  • 광범위한 원본에서 데이터를 수집하기 위한 데이터 스토리지 및 연결성

  • 모델 학습, 배포 및 관리 프로세스를 자동화 하는 기계 학습 워크플로 오케스트레이션

  • 모델 등록 및 관리를 통해 여러 버전의 모델과 학습된 데이터 추적

  • 실험, 데이터 세트 및 게시된 서비스 학습을 위한 메트릭 및 모니터링

  • 실시간 및 일괄 처리 추론 배포

 

훈련 스크립트를 통한 모델 훈련 및 저장

사이킷런과 Azure Machine Learning SDK로 훈련 스크립트를 작성한 뒤 실험을 생성하여 학습을 진행한다.

training.py 훈련 스크립트

from azureml.core import Run import pandas as pd import numpy as np import joblib from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression # 실험 context 가져오기 run = Run.get_context() # 데이터 셋 준비 diagetes = pd.read_csv("data.csv") X, y = diabetes[['Feature1', 'Feature2', 'Feature3']].values, diabetes['Label'].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3) # logistc 회귀 모델 학습 reg = 0.1 model = LogisticRegression(C=1/reg, solver="liblinear").fix(X_train, y_train) # 정확도 계산 y_hat = model.predict(x_test) acc = np.average(y_hat == y_test) run.log("Accuracy", np.float(acc)) # 모델 저장 os.makedirs("outputs", exist_ok=True) joblib.dump(value=model, filename="outputs/model.pkl") run.complete()

스크립트 실행

from azureml.core import Run import pandas as pd import numpy as np import joblib from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression # 실험 context 가져오기 run = Run.get_context() # 데이터 셋 준비 diagetes = pd.read_csv("data.csv") X, y = diabetes[['Feature1', 'Feature2', 'Feature3']].values, diabetes['Label'].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3) # logistc 회귀 모델 학습 reg = 0.1 model = LogisticRegression(C=1/reg, solver="liblinear").fix(X_train, y_train) # 정확도 계산 y_hat = model.predict(x_test) acc = np.average(y_hat == y_test) run.log("Accuracy", np.float(acc)) # 모델 저장 os.makedirs("outputs", exist_ok=True) joblib.dump(value=model, filename="outputs/model.pkl") run.complete()

 

이렇게 작성한 스크립트에 매개변수를 전달할 수 있고 학습된 모델을 저장하여 등록하고 버전별로 관리할 수 있다.

 

하이퍼 파라미터 조정

Azure Machine Learning에서는 테스트 할 각 하이퍼 파라미터 조합으로 구성된 실험을 통해 모델을 학습시키고 학습 된 모델이 달성 한 목표 성능 측정 항목을 기록한다.

하이퍼 파라미터 조합으로는 명시적인 값 목록에서 선택하거나 [choice([10, 20, 30])] 범위[choice(range(1, 10)]값에서 선택할 수 있다.

from azureml.train.hyperdrive import chioce, normal param_space = { '--batch_size': choice(16, 32, 64), '--learning_rate': normal(10, 3) }

 

또한 모든 항목에 대한 조합을 적용하는 그리드 샘플링, 무작위 적으로 하이퍼 파라미터 값을 선택하는 무작위 샘플링 등 다양한 샘플링 방법도 제공한다.

from azureml.train.hyperdrive import GridParameterSampling, choice param_space = { '--batch_size': choice(16, 32, 64), '--learning_rate': choice(0.01, 0.1, 1.0) } param_sampling = GridParameterSampling(param_space)

 

마지막으로 지정된 성능을 달성하거나 남은 조합으로 성능이 나아질 가능성이 보이지 않을 때 조기 종료되도록 구성할 수 있는 기능을 제공한다.

from azureml.train.hyperdrive import TruncationSelectionPolicy early_termination_policy = TruncationSelectionPolicy(truncation_percentage=10, evaluation_interval=1, delay_evaluation=5)

 

모델 학습을 위한 스크립트 작성 시 아래의 내용이 포함 되어야 한다.

  • 최적화하려는 각 하이퍼 파라미터에 대한 매개 변수

  • 최적화하려는 성능 지표를 기록하는 코드 (단 성능 지표가 두 개 이상일 경우 하나만 선택 가능)

기계 학습 모델 선택 자동화

Azure Machine Learning을 사용하면 다양한 알고리즘 및 사전 처리 옵션을 사용하여 훈련 된 모델 비교를 자동화 할 수 있다.

자동화 기계 학습을 사용하여 아래 유형의 모델을 학습할 수 있다.

  • 분류

  • 회귀

  • 시계열 예측

그 중 분류에서 사용 가능한 알고리즘은 아래와 같다.

  • 로지스틱 회귀

  • 빛 그라데이션 부스팅 머신 (GBM)

  • 의사 결정 트리

  • 랜덤 포레스트

  • 나이브 베이 즈

  • 선형 서포트 벡터 머신 (SVM)

  • XGBoost

  • 심층 신경망 (DNN) 분류기

  • 기타 ...

 

또한 스케일이 다른 feature에 중요한 특정 알고리즘을 지원할 수 있도록 데이터가 자동으로 스케일링 및 정규화 된다.

 

from azureml.train.automl import AutoMLConfig auto_run_config = RunConfiguration(framework="python") automl_config = AutoMLConfig(name='Automated ML Experiment', task='classification', primary_metric = 'AUC_weighted', compute_target=aml_compute, training_data = train_dataset, validation_data = test_dataset, label_column_name='Label', featurization='auto', iterations=12, max_concurrent_iterations=4)

데이터 드리프트 모니터링

Azure Machine Learning에서는 시간이 지남에 따라 변경되는 데이터 프로필로 인해 모델의 정확도가 떨어지는 것을 감지하고 필요한 경우 모델을 재 학습 시킬 수 있다.

또한 임계치를 초과할 경우 데이터 드리프트 비율에 대한 정보와 알림을 관리자에게 메일로 전달할 수 있다.

from azureml.datadrift import DataDriftDetector monitor = DataDriftDetector.create_from_datasets(workspace=ws, name='dataset-drift-detector', baseline_data_set=train_ds, target_data_set=new_data_ds, compute_target='aml-cluster', frequency='Week', feature_list=['age','height', 'bmi'], latency=24)

 

AWS

AWS에서는 두 가지의 자동화 기계 학습 모델링 방법을 제공한다

  • AutoGluon

  • Amazon SageMaker Autopilot

SageMake Autopilot 내부에서 사용되는 라이브러리가 AutoGluon이다.

AutoGluon

AWS에서 오픈 소스 라이브러리로 개발한 파이썬 AutoML 라이브러리이다.

AutoGluon은 데이터에 맞는 알고리즘을 선택하고 성능에 도움이 되는 feature를 고른 뒤 하이퍼 파라미터를 조절해주는 일련의 AutoML 과정을 수행한다.

제공되는 API

  • Dataset()

    • 데이터 로드

    • data = task.Dataset(DATASET_PATH)

  • fit()

    • 데이터 세트를 파악한 뒤 해당 데이터에 가장 적합한 알고리즘을 적용해서 모델 생성

    • predictor = task.fit(data_train, label=LABEL_COLUMN_NAME)

  • predict()

    • 학습된 모델을 통해 새로운 데이터에서 예측 데이터 출력

    • prediction = predictor.predict(new_data)

fit()

데이터 세트를 해당 메서드에 전달하면 데이터 전처리와 모델 피팅, 두 가지 작업을 수행한다.

데이터 전처리

레이블을 확인하고 분류 또는 회귀 알고리즘인지 확인하고 다양한 알고리즘에서 사용 할 형식으로 변환하는 데이터 전처리 단계를 수행한다.

모델 피팅

전처리된 데이터에 대해 일련의 기계 학습 모델을 학습 시키고 앙상블 및 스태킹을 사용하여 여러 모델을 결합한다.

학습에 사용되는 알고리즘은 아래와 같다.

  1. Random Forests

  2. Extremely Randomized trees

  3. k-nearest neighbors

  4. LightGBM boosted trees

  5. CatBoost boosted trees

  6. AutoGluon-Tabular deep neural networks

 

또한 AutoGluon에서는 학습 도중 예기치 않은 상황으로 인해 중단되거나 오류가 발생하는 경우를 대비하여 fit()호출 시 필요한 훈련 시간을 추정하고, 이 시간을 초과하면 진행 상황이 손실되지 않도록 디스크에 저장된다.

만약 오류가 발생하여 중단되는 경우 오류 전 까지 학습된 모델을 사용하여 예측 시스템을 구현할 수 있다.

 

 

Amazon SageMaker Autopilot

Amazon SageMaker Autopilot은 자동 기계 학습 프로세스의 주요 작업을 자동화 하는 기능 세트이다.

주요 기능은 다음과 같다.

  • 자동 데이터 사전 처리 및 feature 엔지니어링

  • 자동 기계 학습 모델 선택

  • 하이퍼 파라미터 조절

  • 분산 학습 라이브러리 제공

  • 모델 리더보드

  • API 제공

 

https://aws.amazon.com/ko/sagemaker/autopilot/?sm=table

Copyright(c) WIGO Corp. All rights reserved.