당뇨병 데이터로 best model 뽑은 이후 과정 : 실험에 사용했던 데이터를 저장(Data store)&관리하고 서비스 배포
import numpy as np
from azureml.core import Dataset # 데이터 관리해주는 모듈
#실험에 사용했던 데이터 넘파이로 저장
np.savetxt('feature.csv', X_train, delimiter=',') # X_train의 내용을 features.csv라는 이름으로 저장, 구별자는 ','
np.savetxt('labels.csv', y_train, delimiter=',')

# 데이터 스토어에 업로드하는 작업
datastore = ws.get_default_datastore # 데이터 스토어 변수로 저장
datastore.upload_files(files=['./feature.csv','./labels.csv'], # 업로드할 (파일 현재/)경로파일 이름
target_path = 'diabetes-experiment/', # 경로 지정
overwrite=True #이전 파일이 있을 경우 덮어쓰기
)

이제 data > datastore> workspace 선택 > 아까만든 당뇨병 실험 폴 더 안에 두개의 파일 올라가 있을 것이다.
# 저장된 정보 가져오기
feature_dataset = Dataset.Tabular.from_delimited_files(path=[(datastore,'diabetes-experiment/features.csv')])
label_dataset = Dataset.Tabular.from_delimited_files(path=[(datastore,'diabetes-experiment/labels.csv')])
# best model 등록하는데 필요한 패키지
import sklearn
from azureml.core import model Model
from azureml.core.resource_configuration import ResourceConfiguration
# 시스템에 모델의 등록
model = Model.register(workspace=ws,
model_name = 'diabetes-experiment-model', # 모델 이름
model_path = f'./{str(best_run.get_file_names()[0])}', # 모델의 경로, f붙임으로써 format형태로 지정
model_framework=Model.Framework.SCIKITLEARN, # 학습에 사용한 프레임워크 저장
model_framework_version=sklearn.__version__, # 프레임워크 버전
sample_input_dataset = feature_dataset,
sample_output_dataset=label_dataset,
resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5), # 해당 모델을 돌리는데 필요한 cpu와 메모리
description='Ridge regression model to predict diabetes progression', # 설명
tags= {'area':'diabetes', 'type':'regression'}
)

배포하고 나면 endpoint도 생길 것이다
# 모델 잘 등록이 되었는지 확인
print('Model name: ', model.name)
print('Model Version:', model.version)
출력>
Model name: diabetes-experiment-model
Model Version: 1
이제 모델을 실제로 배포해보자
# 모델의 배포
service_name = 'diabetes-service'
service = Model.deploy(ws, service_name, [model], overwrite=True) # 워크스페이스 지정, 서비스 이름지정, 모델지정-여러개를 한꺼번에 배포할 수 있어서 리스트 타입으로 지정, 덮어쓰기 지정
service.wait_for_deployment(show_output=True) # 배포하는 중간 아웃풋 보여주기


1. endpoint
2. 테스트 가능
# Notebook에서도 아래와 같이 예측 테스트 해볼 수 있다
import json
input_payload = json.dumps({
'data': X_train[0:2].values.tolist(),
'method': 'predict'
})
output = service.run(input_payload)
print(output)
'machine_learning' 카테고리의 다른 글
| [통계] 시계열 데이터 (0) | 2023.05.30 |
|---|---|
| 통계기반의 데이터분석(1) (1) | 2023.05.22 |
| MLOps (1) Azure의 ML service (0) | 2023.05.04 |
| 비지도 학습 Clustering(3) - Hierarchical Clustering (0) | 2023.05.01 |
| 비지도 학습 Clustering(2) - K-Means 모델 만들기 (0) | 2023.05.01 |