国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

上海服裝品牌網(wǎng)站建設(shè)seo課程培訓班費用

上海服裝品牌網(wǎng)站建設(shè),seo課程培訓班費用,做網(wǎng)站 每月賺 錢,企業(yè)網(wǎng)站推廣怎么做文章目錄前言一、數(shù)據(jù)集二、訓練 Scikit-learn 模型三、基于MLSever構(gòu)建Scikit-learn服務四、測試模型五、訓練 XGBoost 模型六、服務多個模型七、測試多個模型的準確性總結(jié)參考前言 在過去我們訓練模型,往往通過編寫flask代碼或者容器化我們的模型并在docker中運行…

文章目錄

  • 前言
  • 一、數(shù)據(jù)集
  • 二、訓練 Scikit-learn 模型
  • 三、基于MLSever構(gòu)建Scikit-learn服務
  • 四、測試模型
  • 五、訓練 XGBoost 模型
  • 六、服務多個模型
  • 七、測試多個模型的準確性
  • 總結(jié)
  • 參考


前言

在過去我們訓練模型,往往通過編寫flask代碼或者容器化我們的模型并在docker中運行。這篇文章中,我們將分享如何基于mlserver來搭建Web服務。mlserver是基于 python的推理服務器,可以通過簡單的代碼實現(xiàn)python web服務,但是它的真正優(yōu)點在于它是一個為生產(chǎn)環(huán)境設(shè)計的高性能服務器。
在這里插入圖片描述


一、數(shù)據(jù)集

本博客通過使用幾個圖像模型作為示例,介紹如何使用 MLServer,我們要使用的數(shù)據(jù)集是Fashion MNIST 數(shù)據(jù)集。它包含 70,000 張灰度 28x28 像素的服裝圖像,分為 10 個不同的類別(上衣、連衣裙、外套、褲子等)。

二、訓練 Scikit-learn 模型

首先,我們使用scikit-learn框架訓練支持向量機 (SVM) 模型。然后我們將模型保存到一個名為Fashion-MNIST.joblib文件中。

import pandas as pd
from sklearn import svm
import time
import joblib#Load Training Data
train = pd.read_csv('../../data/fashion-mnist_train.csv', header=0)
y_train = train['label']
X_train = train.drop(['label'], axis=1)
classifier = svm.SVC(kernel="poly", degree=4, gamma=0.1)#Train Model
start = time.time()
classifier.fit(X_train.values, y_train.values)
end = time.time()
exec_time = end-start
print(f'Execution time: {exec_time} seconds')#Save Model
joblib.dump(classifier, "Fashion-MNIST.joblib")

注意:SVM 算法不是特別適合大型數(shù)據(jù)集,因為它具有二次性質(zhì)。根據(jù)使用的硬件,本示例中的模型將需要幾分鐘時間進行訓練。

三、基于MLSever構(gòu)建Scikit-learn服務

好的,所以我們現(xiàn)在有一個保存的模型文件Fashion-MNIST.joblib。讓我們來看看我們?nèi)绾问褂?MLServer 來提供服務…

首先,我們需要安裝 MLServer。

pip install mlserver

額外的運行時是可選的,但在服務模型時讓生活變得非常輕松,我們也會安裝 Scikit-Learn 和 XGBoost 的

pip install mlserver-sklearn mlserver-xgboost

你可以在此處找到有關(guān)所有推理運行時的詳細信息,完成后,我們需要做的就是添加兩個配置文件:

  • settings.json- 這包含服務器本身的配置。
  • model-settings.json- 顧名思義,此文件包含我們要運行的模型的配置。對于我們的settings.json文件,只需定義一個參數(shù)就足夠了:
{"debug": "true"
}

該model-settings.json文件需要更多信息,因為它需要了解我們嘗試服務的模型:

{"name": "fashion-sklearn","implementation": "mlserver_sklearn.SKLearnModel","parameters": {"uri": "./Fashion_MNIST.joblib","version": "v1"}
}

name參數(shù)為 MLServer 提供了一個唯一標識符,這在為多個模型提供服務時特別有用(我們稍后會談到)。定義implementation要使用的預建服務器(如果有),它與用于訓練模型的機器學習框架緊密耦合。在我們的例子中,我們使用 scikit-learn 訓練了模型,因此我們將使用 MLServer 的 scikit-learn 實現(xiàn)。對于模型,parameters我們只需要提供模型文件的位置以及版本號。

就是這樣,兩個小配置文件,我們準備好使用以下命令為我們的模型提供服務:

mlserver start .

我們現(xiàn)在已經(jīng)在本地服務器上運行了我們的模型。它現(xiàn)在已準備好接受通過 HTTP 和 gRPC(分別為默認端口8080和8081)的請求。

四、測試模型

現(xiàn)在我們的模型已經(jīng)啟動并運行了。讓我們發(fā)送一些請求以查看它的運行情況。

要對我們的模型進行預測,我們需要向以下 URL 發(fā)送 POST 請求:

http://localhost:8080/v2/models/<MODEL_NAME>/versions//infer

這意味著要訪問我們之前訓練的 scikit-learn 模型,我們需要用fashion-sklearn替換MODEL_NAME,用 v1替換VERSION。

下面的代碼顯示了如何導入測試數(shù)據(jù),向模型服務器發(fā)出請求,然后將結(jié)果與實際標簽進行比較:

import pandas as pd
import requests#Import test data, grab the first row and corresponding label
test = pd.read_csv('../../data/fashion-mnist_test.csv', header=0)
y_test = test['label'][0:1]
X_test = test.drop(['label'],axis=1)[0:1]#Prediction request parameters
inference_request = {"inputs": [{"name": "predict","shape": X_test.shape,"datatype": "FP64","data": X_test.values.tolist()}]
}
endpoint = "http://localhost:8080/v2/models/fashion-sklearn/versions/v1/infer"#Make request and print response
response = requests.post(endpoint, json=inference_request)
print(response.text)
print(y_test.values)

運行test.py上面的代碼時,我們從 MLServer 得到以下響應:

{"model_name": "fashion-sklearn","model_version": "v1","id": "31c3fa70-2e56-49b1-bcec-294452dbe73c","parameters": null,"outputs": [{"name": "predict","shape": [1],"datatype": "INT64","parameters": null,"data": [0]}]
}

你會注意到 MLServer 已生成一個請求 ID,并自動添加了有關(guān)用于滿足我們請求的模型和版本的元數(shù)據(jù)。一旦我們的模型投入生產(chǎn),捕獲這種元數(shù)據(jù)就非常重要;它允許我們記錄每個請求以用于審計和故障排除目的。

你可能還會注意到 MLServer已返回一個數(shù)組outputs。在我們的請求中,我們只發(fā)送了一行數(shù)據(jù),但MLServer也處理批量請求并將它們一起返回。你甚至可以使用一種稱為自適應批處理的技術(shù)來優(yōu)化在生產(chǎn)環(huán)境中處理多個請求的方式。

在我們上面的示例中,可以找到模型的預測,其中outputs[0].data顯示模型已將此樣本標記為類別0(值 0 對應于類別t-shirt/top)。該樣本的真實標簽也是,0所以模型得到了正確的預測!

五、訓練 XGBoost 模型

現(xiàn)在我們已經(jīng)了解了如何使用 MLServer 創(chuàng)建和提供單個模型,讓我們來看看我們?nèi)绾翁幚碓诓煌蚣苤杏柧毜亩鄠€模型。

我們將使用相同的 Fashion MNIST 數(shù)據(jù)集,但這次我們將訓練XGBoost模型。


import pandas as pd
import xgboost as xgb
import time#Load Training Data
train = pd.read_csv('../../data/fashion-mnist_train.csv', header=0)
y_train = train['label']
X_train = train.drop(['label'], axis=1)
dtrain = xgb.DMatrix(X_train.values, label=y_train.values)#Train Model
params = {'max_depth': 5,'eta': 0.3,'verbosity': 1,'objective': 'multi:softmax','num_class' : 10
}
num_round = 50start = time.time()
bstmodel = xgb.train(params, dtrain, num_round, evals=[(dtrain, 'label')], verbose_eval=10)
end = time.time()
exec_time = end-start
print(f'Execution time: {exec_time} seconds')#Save Model
bstmodel.save_model('Fashion_MNIST.json')

上面用于訓練 XGBoost 模型的代碼與我們之前用于訓練 scikit-learn 模型的代碼類似,但這次我們的模型以 XGBoost 兼容格式保存為Fashion_MNIST.json。

六、服務多個模型

MLServer 的一個很酷的事情是它支持多模型服務。這意味著您不必為要部署的每個 ML 模型創(chuàng)建或運行新服務器。使用我們上面構(gòu)建的模型,我們將使用此功能同時為它們提供服務。

當 MLServer 啟動時,它將在目錄(和任何子目錄)中搜索model-settings.json文件。如果您有多個model-settings.json文件,那么它會自動為所有文件提供服務。

settings.json注意:您仍然只需要根目錄中的一個(服務器配置)文件

這是我的目錄結(jié)構(gòu)的細分以供參考:

.
├── data
│   ├── fashion-mnist_test.csv
│   └── fashion-mnist_train.csv
├── models
│   ├── sklearn
│   │   ├── Fashion_MNIST.joblib
│   │   ├── model-settings.json
│   │   ├── test.py
│   │   └── train.py
│   └── xgboost
│       ├── Fashion_MNIST.json
│       ├── model-settings.json
│       ├── test.py
│       └── train.py
├── README.md
├── settings.json
└── test_models.py

請注意,有兩個model-settings.json文件 - 一個用于 scikit-learn 模型,一個用于 XGBoost 模型。

我們現(xiàn)在可以運行mlserver start .,它將開始處理兩個模型的請求。

[mlserver] INFO - Loaded model 'fashion-sklearn' succesfully.
[mlserver] INFO - Loaded model 'fashion-xgboost' succesfully.

七、測試多個模型的準確性

現(xiàn)在這兩個模型都在 MLServer 上啟動并運行,我們可以使用測試集中的樣本來驗證我們每個模型的準確性。

以下代碼向每個模型發(fā)送一個批處理請求(包含完整的測試集),然后將收到的預測與真實標簽進行比較。在整個測試集上執(zhí)行此操作可以衡量每個模型的準確性。


import pandas as pd
import requests
import json#Import the test data and split the data from the labels
test = pd.read_csv('./data/fashion-mnist_test.csv', header=0)
y_test = test['label']
X_test = test.drop(['label'],axis=1)#Build the inference request
inference_request = {"inputs": [{"name": "predict","shape": X_test.shape,"datatype": "FP64","data": X_test.values.tolist()}]
}#Send the prediction request to the relevant model, compare responses to training labels and calculate accuracy
def infer(model_name, version):endpoint = f"http://localhost:8080/v2/models/{model_name}/versions/{version}/infer"response = requests.post(endpoint, json=inference_request)#calculate accuracycorrect = 0for i, prediction in enumerate(json.loads(response.text)['outputs'][0]['data']):if y_test[i] == prediction:correct += 1accuracy = correct / len(y_test)print(f'Model Accuracy for {model_name}: {accuracy}')infer("fashion-xgboost", "v1")
infer("fashion-sklearn", "v1")

結(jié)果表明,XGBoost 模型略優(yōu)于 SVM scikit-learn 模型:

Model Accuracy for fashion-xgboost: 0.8953
Model Accuracy for fashion-sklearn: 0.864


總結(jié)

希望現(xiàn)在你已經(jīng)了解使用MLServer為模型提供服務是多么容易。

參考

https://dev.to/ukcloudman/serving-python-machine-learning-models-with-ease-37kh

http://aloenet.com.cn/news/27975.html

相關(guān)文章:

  • 房地產(chǎn)微網(wǎng)站模板西安關(guān)鍵詞推廣
  • 邯鄲網(wǎng)站設(shè)計申請搜索引擎排名營銷
  • 網(wǎng)站建站報價表什么軟件引流客源最快
  • 南京建行網(wǎng)站東莞seo優(yōu)化排名推廣
  • 工業(yè)網(wǎng)站素材廣告公司推廣軟文
  • 北京軟件開發(fā)公司怎么樣網(wǎng)站網(wǎng)頁的優(yōu)化方法
  • 企業(yè)信息網(wǎng)站模板網(wǎng)站策劃書怎么寫
  • 瀏覽網(wǎng)站手機響貴陽seo網(wǎng)站推廣
  • 建設(shè)一個網(wǎng)站需要的空間有哪些方法病毒式營銷方法
  • 做外匯網(wǎng)站短視頻seo詢盤獲客系統(tǒng)軟件
  • 網(wǎng)站備案回訪電話號碼全文搜索引擎有哪些
  • 珠海網(wǎng)站優(yōu)化公司百度搜索官網(wǎng)
  • 網(wǎng)站設(shè)計網(wǎng)站制作seo是指什么崗位
  • 阿里云服務器租用價格關(guān)鍵詞排名seo
  • 網(wǎng)站正在建設(shè)中 頁面渠道推廣
  • 本地網(wǎng)站建設(shè)的步驟過程企業(yè)網(wǎng)站多少錢一年
  • 南昌建設(shè)銀行網(wǎng)站網(wǎng)站頁面優(yōu)化內(nèi)容包括哪些
  • 深圳貿(mào)易網(wǎng)站開發(fā)優(yōu)化師是做什么的
  • 一級a做爰片阿v祥仔網(wǎng)站手機優(yōu)化大師哪個好
  • 怎么樣自己做網(wǎng)站接訂單seo前線
  • 山東大學網(wǎng)站設(shè)計與建設(shè)網(wǎng)站推廣的工作內(nèi)容
  • wap網(wǎng)站多少錢網(wǎng)絡(luò)優(yōu)化是干什么的
  • 網(wǎng)站制作設(shè)及的技術(shù)山西網(wǎng)絡(luò)營銷seo
  • 王串場街網(wǎng)站建設(shè)公司全網(wǎng)營銷培訓
  • 新聞網(wǎng)站建設(shè)策劃長沙網(wǎng)站推廣 下拉通推廣
  • 正規(guī)的網(wǎng)站建設(shè)seo博客網(wǎng)站
  • 網(wǎng)站建設(shè)的稅收分類編碼怎么自己創(chuàng)建一個網(wǎng)站
  • 有一套源碼做網(wǎng)站還差什么新的數(shù)據(jù)新聞
  • 多品牌網(wǎng)站建設(shè)網(wǎng)站規(guī)劃與設(shè)計
  • 幼兒園網(wǎng)站建設(shè)策劃方案網(wǎng)站首頁關(guān)鍵詞如何優(yōu)化