自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Azure ML Service構(gòu)建和部署機(jī)器學(xué)習(xí)模型

譯文
人工智能 機(jī)器學(xué)習(xí)
我們?cè)诒窘坛讨袑?gòu)建和部署一個(gè)機(jī)器模型,以便利用Stackoverflow數(shù)據(jù)集預(yù)測(cè)工資。 看完本文后,你能夠調(diào)用充分利用REST的Web服務(wù)來(lái)獲得預(yù)測(cè)結(jié)果。

[[256196]]

【51CTO.com快譯】我們?cè)诒窘坛讨袑?gòu)建和部署一個(gè)機(jī)器模型,以便利用Stackoverflow數(shù)據(jù)集預(yù)測(cè)工資。 看完本文后,你能夠調(diào)用充分利用REST的Web服務(wù)來(lái)獲得預(yù)測(cè)結(jié)果。

由于目的是演示工作流程,我們將使用一個(gè)簡(jiǎn)單的雙列數(shù)據(jù)集進(jìn)行試驗(yàn),該數(shù)據(jù)集包含多年的工作經(jīng)驗(yàn)和薪水。想了解數(shù)據(jù)集的詳細(xì)信息,參閱我之前介紹線性回歸的那篇文章。

先決條件

1.Python和Scikit-learn方面的基礎(chǔ)知識(shí)

2.有效的微軟Azure訂閱

3.Anaconda或Miniconda

配置開(kāi)發(fā)環(huán)境

使用Azure ML SDK配置一個(gè)虛擬環(huán)境。 運(yùn)行以下命令以安裝Python SDK,并啟動(dòng)Jupyter Notebook。從Jupyter啟動(dòng)一個(gè)新的Python 3內(nèi)核。 

  1. $ conda create -n aml -y Python=3.6  
  2. $ conda activate aml  
  3. $ conda install nb_conda  
  4. $ pip install azureml-sdk[notebooks]  
  5. $ jupyter notebook  

初始化Azure ML環(huán)境

先導(dǎo)入所有必要的Python模塊,包括標(biāo)準(zhǔn)的Scikit-learn模塊和Azure ML模塊。 

  1. import datetime  
  2. import numpy as np  
  3. import pandas as pd  
  4. from sklearn.model_selection import train_test_split  
  5. from sklearn.linear_model import LinearRegression  
  6. from sklearn.externals import joblib  
  7. import azureml.core  
  8. from azureml.core import Workspace  
  9. from azureml.core.model import Model 
  10. from azureml.core import Experiment  
  11. from azureml.core.webservice import Webservice  
  12. from azureml.core.image import ContainerImage  
  13. from azureml.core.webservice import AciWebservice  
  14. from azureml.core.conda_dependencies import CondaDependencies  

我們需要?jiǎng)?chuàng)建一個(gè)Azure ML Workspace,該工作區(qū)充當(dāng)我們這次試驗(yàn)的邏輯邊界。Workspace創(chuàng)建用于存儲(chǔ)數(shù)據(jù)集的Storage Account、存儲(chǔ)秘密信息的Key Vault、維護(hù)映像中心的Container Registry以及記錄度量指標(biāo)的Application Insights。

別忘了把占位符換成你的訂閱ID。 

  1. ws = Workspace.create(name='salary' 
  2. subscription_id='' 
  3. resource_group='mi2' 
  4. create_resource_group=True 
  5. location='southeastasia'  
  6.  

幾分鐘后,我們會(huì)看到Workspace里面創(chuàng)建的資源。

現(xiàn)在我們可以創(chuàng)建一個(gè)Experiment開(kāi)始記錄度量指標(biāo)。由于我們沒(méi)有許多參數(shù)要記錄,于是獲取訓(xùn)練過(guò)程的啟始時(shí)間。 

  1. exp = Experiment(workspace=ws, name='salexp' 
  2. run = exp.start_logging()  
  3. run.log("Experiment start time", str(datetime.datetime.now()))  

訓(xùn)練和測(cè)試Scikit-learn ML模塊

現(xiàn)在我們將進(jìn)而借助Scikit-learn訓(xùn)練和測(cè)試模型。 

  1. sal = pd.read_csv('data/sal.csv',header=0, index_col=None)  
  2. X = sal[['x']]  
  3. y = sal['y' 
  4. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=10)  
  5. lm = LinearRegression()  
  6. lm.fit(X_train,y_train)  

經(jīng)過(guò)訓(xùn)練的模型將被序列化成輸出目錄中的pickle文件。Azure ML將輸出目錄的內(nèi)容自動(dòng)拷貝到云端。 

  1. filename = 'outputs/sal_model.pkl'  
  2. joblib.dump(lm, filename)  

不妨記錄訓(xùn)練作業(yè)的斜率、截距和結(jié)束時(shí)間,從而完成試驗(yàn)。 

  1. run.log('Intercept :', lm.intercept_)  
  2. run.log('Slope :', lm.coef_[0])  
  3. run.log("Experiment end time", str(datetime.datetime.now()))  
  4. run.complete()  

我們可以通過(guò)Azure Dashboard來(lái)跟蹤度量指標(biāo)和執(zhí)行時(shí)間。

注冊(cè)和加載經(jīng)過(guò)訓(xùn)練的模型

每當(dāng)我們凍結(jié)模型,它可以用獨(dú)特的版本向Azure ML注冊(cè)。這讓我們能夠在加載時(shí)在不同的模型之間輕松切換。

不妨將SDK指向PKL文件的位置,注冊(cè)來(lái)自上述訓(xùn)練作業(yè)的工資模型。我們還將一些額外的元數(shù)據(jù)以標(biāo)簽這種形式添加到模型中。 

  1. model = Model.register(model_path = "outputs/sal_model.pkl" 
  2. model_name = "sal_model" 
  3. tags = {"key""1"},  
  4. description = "Salary Prediction" 
  5. workspace = ws)  

檢查Workspace的Models部分,確保我們的模型已注冊(cè)。

是時(shí)候?qū)⒛P痛虬扇萜饔诚?到時(shí)作為Web服務(wù)來(lái)公開(kāi))并部署的時(shí)候了。

為了創(chuàng)建容器映像,我們需要將模型所需的環(huán)境告訴Azure ML。然而,我們傳遞一段Python腳本,該腳本含有基于入站數(shù)據(jù)點(diǎn)來(lái)預(yù)測(cè)數(shù)值的代碼。

Azure ML API為兩者提供了便利的方法。不妨先創(chuàng)建環(huán)境文件salenv.yaml,該文件告訴運(yùn)行時(shí)環(huán)境在容器映像中添加Scikit-learn。 

  1. salenv = CondaDependencies()  
  2. salenv.add_conda_package("scikit-learn" 
  3. with open("salenv.yml","w"as f:  
  4. f.write(salenv.serialize_to_string())  
  5. with open("salenv.yml","r"as f:  
  6. print(f.read())  

下列代碼片段從Jupyter Notebook來(lái)執(zhí)行時(shí),創(chuàng)建一個(gè)名為score.py的文件,該文件含有模型的推理邏輯。 

  1. %%writefile score.py  
  2. import json  
  3. import numpy as np  
  4. import os  
  5. import pickle  
  6. from sklearn.externals import joblib  
  7. from sklearn.linear_model import LogisticRegression  
  8. from azureml.core.model import Model  
  9. def init():  
  10. global model  
  11. # retrieve the path to the model file using the model name  
  12. model_path = Model.get_model_path('sal_model' 
  13. model = joblib.load(model_path)  
  14. def run(raw_data):  
  15. data = np.array(json.loads(raw_data)['data'])  
  16. # make prediction  
  17. y_hat = model.predict(data)  
  18. return json.dumps(y_hat.tolist())  

現(xiàn)在將推理文件和環(huán)境配置傳遞給映像,從而將各點(diǎn)連起來(lái)。 

  1. %%time  
  2. image_config = ContainerImage.image_configuration(execution_script="score.py" 
  3. runtime="python"
  4. conda_file="salenv.yml" 

這最終會(huì)創(chuàng)建將出現(xiàn)在Workspace的Images部分中的容器映像。

我們都已準(zhǔn)備創(chuàng)建定義目標(biāo)環(huán)境的部署配置,并將它作為托管在Azure Container Instance的Web服務(wù)來(lái)運(yùn)行。我們還決定選擇AKS或物聯(lián)網(wǎng)邊緣環(huán)境作為部署目標(biāo)。 

  1. aciconfig = AciWebservice.deploy_configuration(cpu_cores=1,  
  2. memory_gb=1,  
  3. tags={"data""Salary""method" : "sklearn"},  
  4. description='Predict Stackoverflow Salary' 
  5. service = Webservice.deploy_from_model(workspace=ws,  
  6. name='salary-svc' 
  7. deployment_config=aciconfig,  
  8. models=[model],  
  9. image_config=image_config)  
  10. service.wait_for_deployment(show_output=True

Azure Resource Group現(xiàn)在有一個(gè)為模型運(yùn)行推理的Azure Container Instance。

 

我們可以從下面這個(gè)方法獲得推理服務(wù)的URL: 

  1. print(service.scoring_uri) 

現(xiàn)在通過(guò)cURL來(lái)調(diào)用Web服務(wù)。我們可以從同一個(gè)Jupyter Notebook來(lái)做到這一點(diǎn)。

你可以從Github代碼庫(kù)來(lái)訪問(wèn)數(shù)據(jù)集和Jupyter Notebook。

這種方法的獨(dú)特之處在于,我們可以從在Jupyter Notebook里面運(yùn)行的Python內(nèi)核來(lái)執(zhí)行所有任務(wù)。開(kāi)發(fā)人員可以利用代碼完成訓(xùn)練和部署ML模型所需的各項(xiàng)任務(wù)。這正是使用諸如ML Service之類的ML PaaS具有的好處。

原文標(biāo)題:Build and Deploy a Machine Learning Model with Azure ML Service,作者:Janakiram MSV

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來(lái)源: 51CTO
相關(guān)推薦

2022-08-09 13:44:37

機(jī)器學(xué)習(xí)PySpark M數(shù)據(jù)分析

2024-01-05 07:41:34

OpenLLM大語(yǔ)言模型LLM

2018-11-07 09:00:00

機(jī)器學(xué)習(xí)模型Amazon Sage

2020-10-14 14:18:33

機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)架構(gòu)人工智能

2024-09-09 11:45:15

ONNX部署模型

2014-06-26 14:08:28

Azure云服務(wù)

2017-07-07 14:41:13

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)JavaScript

2021-11-02 09:40:50

TensorFlow機(jī)器學(xué)習(xí)人工智能

2022-08-01 11:50:47

PySpark流失預(yù)測(cè)模型

2020-05-21 14:05:17

TFserving深度學(xué)習(xí)架構(gòu)

2025-03-04 08:00:00

機(jī)器學(xué)習(xí)Rust開(kāi)發(fā)

2020-11-17 17:28:29

機(jī)器學(xué)習(xí)技術(shù)人工智能

2019-10-23 08:00:00

Flask機(jī)器學(xué)習(xí)人工智能

2024-02-20 15:17:35

機(jī)器學(xué)習(xí)模型部署

2021-01-25 09:00:00

機(jī)器學(xué)習(xí)人工智能算法

2022-09-07 08:00:00

機(jī)器學(xué)習(xí)MLFlow工具

2024-10-12 08:00:00

機(jī)器學(xué)習(xí)Docker

2020-11-19 10:04:45

人工智能

2021-04-20 12:53:34

Polkadot部署合約

2020-11-18 18:21:49

.Net 5大數(shù)據(jù)機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)