本系列介紹 開發(fā)和部署 ( M L ) 模型。在這篇文章中,您 訓(xùn)練并保存 ML 模型,因此它可以作為 ML 系統(tǒng)的一部分部署。 第 1 部分給出了一個(gè) ML 工作流概括 ,考慮了使用機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)實(shí)現(xiàn)商業(yè)價(jià)值所涉及的各個(gè)階段。第 3 部分介紹 如何部署 ML 模型到 Google 云平臺(tái)( GCP )。
培訓(xùn)一個(gè)可以作為機(jī)器學(xué)習(xí)系統(tǒng)一部分的模型需要了解您的數(shù)據(jù)、業(yè)務(wù)目標(biāo)以及許多其他技術(shù)和組織要求。
在本文中,您創(chuàng)建了一個(gè) Python 腳本,當(dāng)執(zhí)行該腳本時(shí),它訓(xùn)練一個(gè) ML 模型,然后將其保存以供將來使用。
首先,我強(qiáng)調(diào)了為應(yīng)用程序訓(xùn)練 ML 模型時(shí)的一些重要考慮事項(xiàng)。
培訓(xùn)模型前的注意事項(xiàng)
從模型選擇到數(shù)據(jù)集的復(fù)雜性和大小,數(shù)據(jù)從業(yè)者必須戰(zhàn)略性地規(guī)劃資源和期望的需求。在培訓(xùn)模型之前要考慮的因素包括:
型號(hào)的選擇
解釋能力
模型超參數(shù)
硬件的選擇
數(shù)據(jù)大小
型號(hào)的選擇
您可以使用許多類 ML 模型來解決問題。您選擇的模型取決于您的用例和可能的約束。
解釋能力
如果要將您的模型部署為在受監(jiān)管行業(yè)(如金融或醫(yī)療保?。┲羞\(yùn)行的系統(tǒng)的一部分,則您的模型可能是 explainable 。這意味著,對(duì)于模型做出的任何預(yù)測(cè),都可以說明模型做出該決定的原因。
在這種情況下,您可能希望使用易于解釋的 linear regression 或 logistic regression 等模型。
模型超參數(shù)
模型具有可調(diào)超參數(shù)。了解這些超參數(shù)對(duì)應(yīng)于什么以及它們?nèi)绾斡绊懩P头浅V匾?/p>
根據(jù)超參數(shù)的選擇,模型的性能可能會(huì)發(fā)生很大變化。
硬件的選擇
大多數(shù)數(shù)據(jù)從業(yè)者都知道,模型訓(xùn)練通??梢栽?GPU 上加速。但即使在您進(jìn)入模型訓(xùn)練階段之前, GPU 也可以極大地幫助您的數(shù)據(jù)科學(xué)工作流。
從預(yù)處理管道到數(shù)據(jù)探索和可視化,一切都可以加快。這有助于您更快地迭代并嘗試更昂貴的計(jì)算技術(shù)。
數(shù)據(jù)大小
當(dāng)處理比一個(gè)內(nèi)核或機(jī)器上的內(nèi)存更大的數(shù)據(jù)時(shí),重要的是要考慮充分利用所有數(shù)據(jù)的技術(shù)。
也許使用 RAPID 等工具轉(zhuǎn)移到 GPU 來加速 pandas 和 scikit-learn 風(fēng)格的工作流是有意義的。或者你可能想研究一個(gè)擴(kuò)展框架,比如 Dask ,它可以擴(kuò)展模型訓(xùn)練和數(shù)據(jù)處理,無論你是在 CPU 還是 GPU 上工作。
了解數(shù)據(jù)集
在本文中,您在一個(gè)經(jīng)典數(shù)據(jù)集上訓(xùn)練一個(gè)模型: UCI Machine Learning Repository 中的 Iris Dataset 。這個(gè)數(shù)據(jù)集包含 150 朵鳶尾花的花瓣長(zhǎng)度和寬度以及萼片長(zhǎng)度和寬度的記錄。每個(gè)虹膜屬于三種類型之一: setosa 、 virginica 或 versicolor 。
你使用這些數(shù)據(jù)來訓(xùn)練分類模型,目的是根據(jù)花瓣和萼片的尺寸來預(yù)測(cè)虹膜的類型。
CPU 培訓(xùn)
在部署 ML 模型之前,必須首先構(gòu)建一個(gè) ML 模型。首先下載流行的 Iris Dataset 。本示例假設(shè)虹膜數(shù)據(jù)集已下載并保存為當(dāng)前工作目錄中的iris.data。
要訓(xùn)練邏輯回歸模型,請(qǐng)執(zhí)行以下步驟:
閱讀培訓(xùn)數(shù)據(jù)。
將訓(xùn)練數(shù)據(jù)拆分為要素和標(biāo)簽。
將數(shù)據(jù)分成訓(xùn)練和測(cè)試集( 75% 是訓(xùn)練數(shù)據(jù), 25% 是測(cè)試數(shù)據(jù))。
訓(xùn)練 Logistic Regression 模型。
堅(jiān)持訓(xùn)練后的模型。
import joblib import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split def run_training(): """ Train the model """ # Read the training data dataset = pd.read_csv( filepath_or_buffer="iris.data", names=["sepal_length_cm", "sepal_width_cm", "petal_length_cm", "petal_width_cm", "class"] ) # Split into labels and targets X = dataset.drop("class", axis=1).copy() y = dataset["class"].copy() # Create train and test set X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, random_state=26) # Training the model model = LogisticRegression(random_state=26) model.fit(X_train, y_train) # Persist the trained model joblib.dump(model, "logistic_regression_v1.pkl") if __name__ == "__main__": run_training()
train_test_split和LogisticRegression調(diào)用中的random_state參數(shù)有助于確保該腳本每次運(yùn)行時(shí)都產(chǎn)生相同的結(jié)果。
運(yùn)行腳本會(huì)生成一個(gè)保存在文件logistic_regression_v1.pkl中的模型,您可以使用該模型根據(jù)花瓣和萼片的尺寸對(duì)其他虹膜進(jìn)行分類。
GPU 加速模型訓(xùn)練
在本例中,您使用的是一個(gè)小數(shù)據(jù)集,僅包含 150 行數(shù)據(jù)。由于數(shù)據(jù)的簡(jiǎn)單性,該模型在 CPU 上幾秒鐘就能訓(xùn)練。
然而,在處理真實(shí)世界數(shù)據(jù)集時(shí),模型訓(xùn)練成為瓶頸并不罕見。在這種情況下,通??梢酝ㄟ^使用 GPU 而不是 CPU 來加快工作流的模型訓(xùn)練階段。
例如, RAPIDS 提供了一套開源軟件工具,使數(shù)據(jù)科學(xué)家和工程師能夠在 GPU 上快速運(yùn)行工作負(fù)載和數(shù)據(jù)科學(xué)管道。通過模仿常見數(shù)據(jù)科學(xué)庫(kù)(如pandas和scikit-learn)的 API ,您可以通過少量代碼更改來加快機(jī)器學(xué)習(xí)模型訓(xùn)練(以及探索性數(shù)據(jù)科學(xué))。
接下來是什么?
現(xiàn)在您已經(jīng)有了一個(gè)經(jīng)過培訓(xùn)的模型,可以考慮將其部署到生產(chǎn)環(huán)境中。在下一篇文章 Machine Learning in Practice: Deploy an ML Model on Google Cloud Platform 中,您將學(xué)習(xí)在 GCP 上部署模型的三種方法。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4978瀏覽量
102987 -
AI
+關(guān)注
關(guān)注
87文章
30728瀏覽量
268886 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132560
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論