당뇨병 데이터로 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)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts