在 SQL Server 上安裝預先定型的機器學習模型
適用於: SQL Server 2016 (13.x)、 SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)
本文適用於 SQL Server 2016 (13.x)、SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)。
本文說明如何使用 Powershell 將「情緒分析」與「影像特徵化」其預先定型免費機器學習模型新增到整合了 R 或 Python 的 SQL Server 執行個體。 預先定型的模型是由 Microsoft 所建置並可立即使用,並新增至執行個體作為安裝後工作。 如需有關這些模型的詳細資訊,請參閱此文章的資源一節。
從 SQL Server 2022 (16.x) 開始,R、Python 和 JAVA 的執行階段將不再隨 SQL 安裝程式一起安裝。 您可以自行安裝所需的 R 和/或 Python 自訂執行階段和套件。 如需詳細資訊,請參閱在 Windows 上安裝 SQL Server 2022 機器學習服務 (Python 與 R)。
安裝完成後,預先定型的模型會被視為支援 MicrosoftML (R) 與 MicrosoftML (Python) 程式庫中特定函式的實作詳細資料。 您不應該(也不能) 檢視、自訂或重新定型模型,也不能將它們視為自訂程式碼中的獨立資源或配對其他函式。
若要使用預先定型的模型,請呼叫下表所列的函式。
R 函式 (MicrosoftML) | Python 函式 (microsoftml) | 使用量 |
---|---|---|
getSentiment | get_sentiment | 根據文字輸入產生正負情緒分數。 |
featurizeImage | featurize_image | 從影像檔案輸入擷取文字資訊。 |
Prerequisites
機器學習演算法需要大量計算。 針對低至中等的工作負載 (包括使用所有範例資料完成教學課程逐步解說),我們建議使用 16 GB 的 RAM。
您必須擁有電腦與 SQL Server 上的系統管理員權限,才能新增預先定型的模型。
必須啟用外部指令碼,而且 SQL Server LaunchPad 服務必須為執行中。 安裝指示提供啟用及驗證這些功能的步驟。
為您的 SQL Server 版本下載並安裝最新累積更新。 請參閱適用於 Microsoft SQL Server 的最新更新。
MicrosoftML R 套件或 microsoftml Python 套件包含預先定型的模型。
SQL Server 機器學習服務同時包括機器學習程式庫的兩個語言版本,因此您不需採取任何進一步的動作,就能符合此先決條件。 因為程式庫存在,所以您可以使用此文章中所述的 PowerShell 指令碼將預先定型的模型新增到這些程式庫。
MicrosoftML R 套件包含預先定型的模型。
SQL Server R Services (僅限 R) 預設不包括 MicrosoftML 套件。 若要新增 MicrosoftML,您必須執行元件升級。 元件升級的其中一個優點是您可以同時新增預先定型的模型,讓您不需要執行 PowerShell 指令碼。 不過,如果您已升級,而且一開始錯過新增預先定型的模型,您可以依照此文章所述執行 PowerShell 指令碼。 這適用於兩個版本的 SQL Server。 在您執行之前,請確認 MicrosoftML 程式庫存在於 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
。
檢查是否已安裝預先定型的模型
R 與 Python 模型的安裝路徑如下所示:
針對 R:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\MicrosoftML\mxLibs\x64
針對 Python:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\microsoftml\mxLibs
模型檔案名位於下列清單中:
AlexNet_Updated.model
ImageNet1K_mean.xml
pretrained.model
ResNet_101_Updated.model
ResNet_18_Updated.model
ResNet_50_Updated.model
若已安裝模型,請直接跳到驗證步驟以確認可用性。
下載安裝指令碼
請造訪 https://aka.ms/mlm4sql 以下載 Install-MLModels.ps1 檔案。 在 GitHub 中選取 [下載原始檔案]。
以提高的權限執行
啟動 PowerShell。 在工作列上,以滑鼠右鍵按一下 PowerShell 程式圖示,然後選取 [以系統管理員身分執行] 。
安裝期間的建議執行原則為 "RemoteSigned"。 如需設定 PowerShell 執行原則的詳細資訊,請參閱 Set-ExecutionPolicy。 例如:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
輸入安裝指令碼檔案的完整路徑,並包含執行個體名稱。 假設您使用 [下載] 資料夾與預設執行個體,命令看起來可能像下面這樣:
PS C:\WINDOWS\system32> C:\Users\<user-name>\Downloads\Install-MLModels.ps1 MSSQLSERVER
輸出
在已連線到網際網路且具有 R 與 Python 的 SQL Server 機器學習服務預設執行個體上,您應該會看到像下面的訊息。
MSSQL14.MSSQLSERVER
Verifying R models [9.2.0.24]
Downloading R models [C:\Users\<user-name>\AppData\Local\Temp]
Installing R models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\]
Verifying Python models [9.2.0.24]
Installing Python models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\]
PS C:\WINDOWS\system32>
確認安裝
首先,檢查 mxlibs 資料夾中的新檔案。 接下來,執行示範程式碼以確認模型已安裝且正常運作。
R 驗證步驟
從
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64
啟動 RGUI.EXE。在命令提示字元中,貼上下列 R 指令碼。
# Create the data CustomerReviews <- data.frame(Review = c( "I really did not like the taste of it", "It was surprisingly quite good!", "I will never ever ever go to that place again!!"), stringsAsFactors = FALSE) # Get the sentiment scores sentimentScores <- rxFeaturize(data = CustomerReviews, mlTransforms = getSentiment(vars = list(SentimentScore = "Review"))) # Let's translate the score to something more meaningful sentimentScores$PredictedRating <- ifelse(sentimentScores$SentimentScore > 0.6, "AWESOMENESS", "BLAH") # Let's look at the results sentimentScores
按 Enter 以檢視情緒分數。 輸出應該如下所示:
> sentimentScores Review SentimentScore 1 I really did not like the taste of it 0.4617899 2 It was surprisingly quite good! 0.9601924 3 I will never ever ever go to that place again!! 0.3103435 PredictedRating 1 BLAH 2 AWESOMENESS 3 BLAH
Python 驗證步驟
從
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES
啟動 Python.exe。在命令提示字元中,貼上下列 Python 指令碼。
import numpy import pandas from microsoftml import rx_logistic_regression, rx_featurize, rx_predict, get_sentiment # Create the data customer_reviews = pandas.DataFrame(data=dict(review=[ "I really did not like the taste of it", "It was surprisingly quite good!", "I will never ever ever go to that place again!!"])) # Get the sentiment scores sentiment_scores = rx_featurize( data=customer_reviews, ml_transforms=[get_sentiment(cols=dict(scores="review"))]) # Let's translate the score to something more meaningful sentiment_scores["eval"] = sentiment_scores.scores.apply( lambda score: "AWESOMENESS" if score > 0.6 else "BLAH") print(sentiment_scores)
按 Enter 以列印分數。 輸出應該如下所示:
>>> print(sentiment_scores) review scores eval 0 I really did not like the taste of it 0.461790 BLAH 1 It was surprisingly quite good! 0.960192 AWESOMENESS 2 I will never ever ever go to that place again!! 0.310344 BLAH >>>
注意
若示範指令碼失敗,請先檢查檔案位置。 在具有多個 SQL Server 執行個體或與獨立版本並存執行之執行個體的系統上,安裝指令碼可能會不正確地讀取環境,並將檔案放在錯誤的位置。 通常,手動將檔案複製到正確的 mxlib 資料夾即可修正問題。
使用預先定型模型的範例
下列連結包含會叫用預先定型模型的範例程式碼。
研究與資源
目前可用的模型為適用於情緒分析與影像分類的深度類神經網路 (DNN) 模型。 所有預先定型的模型都是使用 Microsoft 的計算網路工具組 (CNTK) 來定型的。
每個網路的設定都是以下列參考實作為基礎:
ResNet-18
ResNet-50
ResNet-101
AlexNet
如需有關這些深度學習模型中所使用之演算法,以及如何使用 CNTK 來加以執行及定型的詳細資訊,請參閱下列文章: