BigQuery

파이썬을 통한 머신러닝 모델 배포

판교데싸 2020. 4. 6. 10:08

  1. 애져 포탈 로그인

 

  2. 리소스 만들기  ( 작업영역 이름은  마음대로~~)

  

  3. 리소스 그룹 -> docs-aml

 

  4. 작업영역 :  Basic -> 검토 + 만들기

 

  5. 배포 성공하면 -> 리소스 이동 선택  -> azure 머신러닝 스튜디오 로그인 후 시작

azure ml studio

6. 왼쪽에서 노트북 선택 -> 샘플 폴더 열기 -> 파이썬 폴더 열기 -> 1.0.85 -> 튜토리얼 ... 눌러 복제

튜토리얼 

7.

보이는 파일 선택

8. VM(컴퓨팅)찾을 수 없는 경우 -> +새 컴퓨팅(vm) 눌러 인스턴스 vm 설치( 이름 입력 :2~16자 사이 ,5분 정도 걸림)

 

 

9. 튜토리얼 - 첫번째 모델 훈련

 

  (1) 작업 공간 연결 및 실험 생성

 

from azureml.core import Workspace
ws = Workspace.from_config()

  

from azureml.core import Experiment
experiment = Experiment(workspace=ws, name="diabetes-experiment")

 

 

  (2) 데이터 로드 및 학습 준비 -> 당뇨병의 진행 예측, 트레인 테스트 스플릿

  

  from azureml.opendatasets import Diabetes
from sklearn.model_selection import train_test_split

x_df = Diabetes.get_tabular_dataset().to_pandas_dataframe().dropna()
y_df = x_df.pop("Y")

X_train, X_test, y_train, y_test = train_test_split(x_df, y_df, test_size=0.2, random_state=66)

 

 

 (3) 모델 학습 -> 

    

   소규모 학습은 로컬에서 쉽게 가능하지만 수십가지의 다양한기능과 파라미터 설정 , 반복 학습을 위해서는

   SDK를 활용해 클라우드에서 학습을 하는것이 바람직

   다양한 하이퍼 파라미터 알파 값을 통해 루프에서 RIdge 모델 학습 시키는 스크립트

 

from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
from sklearn.externals import joblib
import math

alphas = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]

for alpha in alphas:
    run = experiment.start_logging()
    run.log("alpha_value", alpha)

    model = Ridge(alpha=alpha)
    model.fit(X=X_train, y=y_train)
    y_pred = model.predict(X=X_test)
    rmse = math.sqrt(mean_squared_error(y_true=y_test, y_pred=y_pred))
    run.log("rmse", rmse)

    model_name = "model_alpha_" + str(alpha) + ".pkl"
    filename = "outputs/" + model_name

    joblib.dump(value=model, filename=filename)
    run.upload_file(name=model_name, path_or_stream=filename)

    run.complete()

 

(4) 포탈에서 학습결과 보기

   

   런 넘버 실행번호 링크 클릭하면  각 개별 실행에 대한 페이지로 이동->

    학습 반복중 실행에 업로드 된 모델 .pkl 파일표시

 

여기서는 모델파일을 수동 학습 없이 바로 다운 가능

PKL 파일 다운로드

 

Azure ML

(5) 최적 모델 가져오기

 

minimum_rmse_runid = None
minimum_rmse = None

for run in experiment.get_runs():
    run_metrics = run.get_metrics()
    run_details = run.get_details()
    # each logged metric becomes a key in this returned dict
    run_rmse = run_metrics["rmse"]
    run_id = run_details["runId"]

    if minimum_rmse is None:
        minimum_rmse = run_rmse
        minimum_rmse_runid = run_id
    else:
        if run_rmse < minimum_rmse:
            minimum_rmse = run_rmse
            minimum_rmse_runid = run_id

print("Best run_id: " + minimum_rmse_runid)
print("Best run_id rmse: " + str(minimum_rmse))

 

Best run_id: 864f5ce7-6729-405d-b457-83250da99c80
Best run_id rmse: 57.234760283951765

반응형

'BigQuery' 카테고리의 다른 글

AWS - RDBMS 생성 기초  (0) 2021.04.19
Azure Steaming Analytics  (0) 2020.08.25
SQL 문법 + GCP 예제  (0) 2020.08.08
R을 통한 기계학습 모델 생성 + 배포  (0) 2020.04.07
반응형